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中的应用之translate和maketrans用法详解
Aug 27 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
在Django的模型中执行原始SQL查询的方法
Jul 21 Python
详解python并发获取snmp信息及性能测试
Mar 27 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
keras tensorflow 实现在python下多进程运行
Feb 06 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 Python
python 给图像添加透明度(alpha通道)
Apr 09 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 Python
Python+OpenCV图像处理——实现轮廓发现
Oct 23 Python
pycharm 快速解决python代码冲突的问题
Jan 15 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
php中实现记住密码自动登录的代码
2011/03/02 PHP
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
php基于websocket搭建简易聊天室实践
2016/10/24 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python re模块介绍
2014/11/30 Python
Python用模块pytz来转换时区
2016/08/19 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
python实现快递价格查询系统
2020/03/03 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
详细分析Python可变对象和不可变对象
2020/07/09 Python
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
播音主持专业个人自我评价
2014/01/09 职场文书
校园餐饮创业计划书
2014/01/10 职场文书
培训演讲稿范文
2014/01/12 职场文书
入股协议书范本
2014/04/14 职场文书
彩妆大赛策划方案
2014/05/13 职场文书