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中AND、OR的一个使用小技巧
Feb 18 Python
使用Python中PDB模块中的命令来调试Python代码的教程
Mar 30 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
python的文件操作方法汇总
Nov 10 Python
快速查询Python文档方法分享
Dec 27 Python
python针对excel的操作技巧
Mar 13 Python
python保存网页图片到本地的方法
Jul 24 Python
简单了解python单例模式的几种写法
Jul 01 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
Oct 04 Python
Tensorflow获取张量Tensor的具体维数实例
Jan 19 Python
Python request使用方法及问题总结
Apr 26 Python
Matplotlib绘制混淆矩阵的实现
May 27 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 $_ENV为空的原因分析
2009/06/01 PHP
php 字符串替换的方法
2012/01/10 PHP
解析PHP提交后跳转
2013/06/23 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
jQuery删除节点用法示例(remove方法)
2016/09/08 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
vue项目初始化到登录login页面的示例
2019/10/31 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
用Python写王者荣耀刷金币脚本
2017/12/21 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
python字典的值可以修改吗
2020/06/29 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
浅析python字符串前加r、f、u、l 的区别
2021/01/24 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
巴西购物网站:Onofre Agora
2020/06/08 全球购物
JPA的特点
2014/10/25 面试题
给校长的建议书600字
2014/05/15 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
小学教师先进事迹材料
2014/12/15 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
中学推普周活动总结
2015/05/07 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书