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 相关文章推荐
在Windows8上的搭建Python和Django环境
Jul 03 Python
使用Python中的greenlet包实现并发编程的入门教程
Apr 16 Python
使用python验证代理ip是否可用的实现方法
Jul 25 Python
python简单操作excle的方法
Sep 12 Python
Python实现程序判断季节的代码示例
Jan 28 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
Python tkinter和exe打包的方法
Feb 05 Python
python 爬取疫情数据的源码
Feb 09 Python
一些关于python 装饰器的个人理解
Aug 31 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 29 Python
Django后端按照日期查询的方法教程
Feb 28 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 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
2021年最新CPU天梯图
2021/03/04 数码科技
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
javascript中活灵活现的Array对象详解
2016/11/30 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
npm 下载指定版本的组件方法
2018/05/17 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
js实现扫雷源代码
2020/11/27 Javascript
基于python的汉字转GBK码实现代码
2012/02/19 Python
python编程开发之日期操作实例分析
2015/11/13 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python super用法及原理详解
2020/01/20 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
物业管理毕业生个人的求职信
2013/11/30 职场文书
办公室主任先进事迹
2014/01/18 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
李白故里导游词
2015/02/12 职场文书
老兵退伍感言
2015/08/03 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫