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中的cookielib模拟登录网站
Apr 09 Python
Python中max函数用法实例分析
Jul 17 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
Python程序中设置HTTP代理
Nov 06 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
Django 登陆验证码和中间件的实现
Aug 17 Python
python将pandas datarame保存为txt文件的实例
Feb 12 Python
python同义词替换的实现(jieba分词)
Jan 21 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 24 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 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
杏林同学录(七)
2006/10/09 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
js跑马灯代码(自写)
2013/04/17 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
python 执行文件时额外参数获取的实例
2018/12/18 Python
Python可迭代对象操作示例
2019/05/07 Python
python如何安装下载后的模块
2020/07/03 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
css3的transition属性详解
2014/12/15 HTML / CSS
联想中国官方商城:Lenovo China
2017/10/18 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
函授教育个人学习的自我评价
2013/12/31 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
2014年个人委托书范本
2014/10/13 职场文书
迁户口计划生育证明
2014/10/19 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL