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入门篇之函数
Oct 20 Python
python实现用户登陆邮件通知的方法
Jul 09 Python
python实现xlsx文件分析详解
Jan 02 Python
Python内建模块struct实例详解
Feb 02 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
Python爬虫PyQuery库基本用法入门教程
Aug 04 Python
基于python判断目录或者文件代码实例
Nov 29 Python
python 链接sqlserver 写接口实例
Mar 11 Python
python 实现两个线程交替执行
May 02 Python
Python docutils文档编译过程方法解析
Jun 23 Python
scrapy实践之翻页爬取的实现
Jan 05 Python
Python环境搭建过程从安装到Hello World
Feb 05 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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
2014/10/23 Javascript
jquery 操作css样式、位置、尺寸方法汇总
2014/11/28 Javascript
搞定immutable.js详细说明
2016/05/02 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
2019/02/18 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
Python中操作mysql的pymysql模块详解
2016/09/13 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
Python3实现二叉树的最大深度
2019/09/30 Python
python Pillow图像处理方法汇总
2019/10/16 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
期末学生评语大全
2014/04/24 职场文书
优秀学生评语大全
2014/04/25 职场文书
人力资源管理毕业生自荐信
2014/06/26 职场文书
计划生育证明格式范本
2014/09/12 职场文书
环卫工作汇报材料
2014/10/28 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL