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类的多重继承问题深入分析
Nov 09 Python
Python中实现参数类型检查的简单方法
Apr 21 Python
Python导出DBF文件到Excel的方法
Jul 25 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
Python退火算法在高次方程的应用
Jul 26 Python
python+splinter自动刷新抢票功能
Sep 25 Python
如何使用python把ppt转换成pdf
Jun 29 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
Python continue语句实例用法
Feb 06 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 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中实现Bloom Filter算法
2015/03/30 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
JavaScript中判断函数是new还是()调用的区别说明
2011/04/07 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
Bootstrap3学习笔记(二)之排版
2016/05/20 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
JavaScript使用类似break机制中断forEach循环的方法
2018/11/13 Javascript
three.js实现圆柱体
2018/12/30 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
Python常见数据结构详解
2014/07/24 Python
Python类属性与实例属性用法分析
2015/05/09 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
Python 基础教程之str和repr的详解
2017/08/20 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
python 实现按对象传值
2019/12/26 Python
python3注册全局热键的实现
2020/03/22 Python
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
大学生四年生活自我鉴定
2013/11/21 职场文书
社会实践心得体会
2014/01/03 职场文书
师范大学生求职信
2014/06/13 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL