Python判断某个用户对某个文件的权限


Posted in Python onOctober 13, 2016

在Python我们要判断一个文件对当前用户有没有读、写、执行权限,我们通常可以使用os.access函数来实现,比如:

# 判断读权限
os.access(<my file>, os.R_OK)
# 判断写权限
os.access(<my file>, os.W_OK)
# 判断执行权限
os.access(<my file>, os.X_OK)

# 判断读、写、执行权限
os.access(<my file>, os.R_OK | os.W_OK | os.X_OK)

但是如果要判断任意一个指定的用户对某个文件是否有读、写、执行权限,Python中是没有默认实现的,此时我们可以通过下面的代码断来判断

import os
import pwd
import stat
 
def is_readable(cls, path, user):
  user_info = pwd.getpwnam(user)
  uid = user_info.pw_uid
  gid = user_info.pw_gid
  s = os.stat(path)
  mode = s[stat.ST_MODE]
  return (
    ((s[stat.ST_UID] == uid) and (mode & stat.S_IRUSR > 0)) or
    ((s[stat.ST_GID] == gid) and (mode & stat.S_IRGRP > 0)) or
    (mode & stat.S_IROTH > 0)

    )
def is_writable(cls, path, user):
  user_info = pwd.getpwnam(user)
  uid = user_info.pw_uid
  gid = user_info.pw_gid
  s = os.stat(path)
  mode = s[stat.ST_MODE]
  return (
    ((s[stat.ST_UID] == uid) and (mode & stat.S_IWUSR > 0)) or
    ((s[stat.ST_GID] == gid) and (mode & stat.S_IWGRP > 0)) or
    (mode & stat.S_IWOTH > 0)

    )


def is_executable(cls, path, user):
  user_info = pwd.getpwnam(user)
  uid = user_info.pw_uid
  gid = user_info.pw_gid
  s = os.stat(path)
  mode = s[stat.ST_MODE]
  return (
    ((s[stat.ST_UID] == uid) and (mode & stat.S_IXUSR > 0)) or
    ((s[stat.ST_GID] == gid) and (mode & stat.S_IXGRP > 0)) or
    (mode & stat.S_IXOTH > 0)

    )

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现监控windows服务并自动启动服务示例
Apr 17 Python
python BeautifulSoup设置页面编码的方法
Apr 03 Python
Python脚本文件打包成可执行文件的方法
Jun 02 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
Pycharm技巧之代码跳转该如何回退
Jul 16 Python
Python读取word文本操作详解
Jan 22 Python
一看就懂得Python的math模块
Oct 21 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
Django values()和value_list()的使用
Mar 31 Python
基于python实现银行管理系统
Apr 20 Python
pytorch损失反向传播后梯度为none的问题
May 12 Python
在Python中如何使用yield
Jun 07 Python
python使用str &amp; repr转换字符串
Oct 13 #Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 #Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 #Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 #Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 #Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 #Python
深入浅析ImageMagick命令执行漏洞
Oct 11 #Python
You might like
php adodb介绍
2009/03/19 PHP
PHP加密解密函数详解
2015/10/28 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
2020/11/16 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
Python Web框架Pylons中使用MongoDB的例子
2013/12/03 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
用python实现的线程池实例代码
2018/01/06 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
总裁岗位职责
2013/12/04 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
经理任命书模板
2014/06/06 职场文书
社区维稳工作方案
2014/06/06 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
全国爱牙日活动总结
2015/02/05 职场文书
关于五一放假的通知
2015/08/18 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书