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使用自定义user-agent抓取网页的方法
Apr 15 Python
python实现稀疏矩阵示例代码
Jun 09 Python
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
python的pip安装以及使用教程
Sep 18 Python
python使用mitmproxy抓取浏览器请求的方法
Jul 02 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
python绘制无向图度分布曲线示例
Nov 22 Python
opencv3/C++图像像素操作详解
Dec 10 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
Feb 04 Python
Python多线程多进程实例对比解析
Mar 12 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后退一页表单内容保存实现方法
2012/06/17 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
js密码强度校验
2015/11/10 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
python3生成随机数实例
2014/10/20 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
对Python生成器、装饰器、递归的使用详解
2019/07/19 Python
Python Celery多队列配置代码实例
2019/11/22 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
python 检测图片是否有马赛克
2020/12/01 Python
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
应届生服务员求职信
2013/10/31 职场文书
优秀毕业生求职推荐信范文
2013/11/21 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
逃课检讨书
2015/01/26 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
Redis基本数据类型Set常用操作命令
2022/06/01 Redis