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的gevent框架的入门教程
Apr 29 Python
Python实现完整的事务操作示例
Jun 20 Python
numpy中的delete删除数组整行和整列的实例
May 09 Python
浅谈Python里面小数点精度的控制
Jul 16 Python
Python走楼梯问题解决方法示例
Jul 25 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
python支付宝支付示例详解
Aug 22 Python
Python 获取命令行参数内容及参数个数的实例
Dec 20 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
python之django路由和视图案例教程
Jul 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递归算法的详细示例分析
2013/02/19 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
Javascript实例教程(19) 使用HoTMetal(2)
2006/12/23 Javascript
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
DOM下的节点属性和操作小结
2009/05/14 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
详解AngularJS实现表单验证
2015/12/10 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
Python用threading实现多线程详解
2017/02/03 Python
Python基于回溯法子集树模板解决取物搭配问题实例
2017/09/02 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
运动会广播稿100字
2014/01/11 职场文书
领导失职检讨书
2014/02/24 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
委托公证书格式
2015/01/26 职场文书
离婚起诉状范本
2015/05/19 职场文书
刮痧观后感
2015/06/05 职场文书