如何从文件中获取 Unix 权限掩码? [复制]

2024-02-16

如何使用 python 在 *nix 上获取文件的权限掩码,例如 644 或 755?

有没有任何函数或类可以做到这一点?非常感谢!


os.stat是一个包装器stat(2) http://linux.die.net/man/2/stat系统调用接口。

>>> import os
>>> from stat import *
>>> os.stat("test.txt") # returns 10-tupel, you really want the 0th element ...
posix.stat_result(st_mode=33188, st_ino=57197013, \
    st_dev=234881026L, st_nlink=1, st_uid=501, st_gid=20, st_size=0, \
    st_atime=1300354697, st_mtime=1300354697, st_ctime=1300354697)

>>> os.stat("test.txt")[ST_MODE] # this is an int, but we like octal ...
33188

>>> oct(os.stat("test.txt")[ST_MODE])
'0100644'

从这里您将认识典型的八进制权限。

S_IRWXU 00700   mask for file owner permissions
S_IRUSR 00400   owner has read permission
S_IWUSR 00200   owner has write permission
S_IXUSR 00100   owner has execute permission
S_IRWXG 00070   mask for group permissions
S_IRGRP 00040   group has read permission
S_IWGRP 00020   group has write permission
S_IXGRP 00010   group has execute permission
S_IRWXO 00007   mask for permissions for others (not in group)
S_IROTH 00004   others have read permission
S_IWOTH 00002   others have write permission
S_IXOTH 00001   others have execute permission

你真的只对较低的感兴趣bits,这样你就可以砍掉其余的:

>>> oct(os.stat("test.txt")[ST_MODE])[-3:]
'644'
>>> # or better
>>> oct(os.stat("test.txt").st_mode & 0o777)

旁注:上面的部分确定文件类型,例如:

S_IFMT      0170000 bitmask for the file type bitfields
S_IFSOCK    0140000 socket
S_IFLNK     0120000 symbolic link
S_IFREG     0100000 regular file
S_IFBLK     0060000 block device
S_IFDIR     0040000 directory
S_IFCHR     0020000 character device
S_IFIFO     0010000 FIFO
S_ISUID     0004000 set UID bit
S_ISGID     0002000 set-group-ID bit (see below)
S_ISVTX     0001000 sticky bit (see below)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从文件中获取 Unix 权限掩码? [复制] 的相关文章

随机推荐

  • PHP glob() 列出不以下划线开头的文件?

    标准的 glob 函数用法如下 dir glob txt foreach dir as filename echo filename size filesize filename n 使用 作为通配符 但是有没有办法否定它以忽略任何以下划线
  • Google 地图 V3 不会删除事件侦听器

    我在使用 Google 地图 API v3 时遇到问题 我试图在缩放更改时删除鼠标悬停侦听器 这是我的代码 document ready function var myOptions var map new google maps Map
  • Android LruCache(Android 3.1)线程安全

    是新的Android类LruCache http developer android com reference android util LruCache html线程安全 java 文档说 这个类是线程安全的 通过在缓存上同步以原子方式
  • 用Qt等待一个SLOT完成执行

    在我的代码中我发出一个信号mySignal我想等待连接的插槽结束mySlot在继续之前执行 emit mySignal Wait for the end of mySlot execution Some code that has to b
  • 使用 CLASSIC ASP 将数据返回到 jsonp 调用

    我已经浏览了 stackoverflow 上的帖子 但似乎找不到我要找的东西 如果我这样做 表格 ajaxSettings dataType jsonp get http MYREMOTESERVER com GetCustNewID as
  • C# 检查网络状态

    如何检查我是否有开放的网络连接并且可以联系 C 中的特定 IP 地址 我在 VB Net 中见过示例 但它们都使用 My 结构 谢谢 如果您只想检查网络是否正常 请使用 bool networkUp System Net NetworkIn
  • 为什么“rails runner -e production”不起作用?

    为了解决我的问题 该问题在 生产中的 will paginate 错误未定义方法 paginate https stackoverflow com questions 19577344 will paginate error in prod
  • 如何使用查找和替换在 Xcode 中用单个新行替换多个新行

    在Xcode项目中 我们编写程序时一般不会关注行间距 那么编码完成后 如何用一行删除所有多余的换行符呢 在文本搜索字段中 可以使用以下方法进行多行 非打印字符 搜索 替换 假设我想替换所有实例 This is a comment with
  • 我的 Cocos2D-iPhone 游戏可以支持 VoiceOver 吗?

    我正在制作一款游戏 玩家通过动作对声音做出反应 由于玩游戏不需要视觉元素 而且许多人都是闭着眼睛玩的 所以不完全兼容 VoiceOver 似乎很遗憾 我目前正在使用 Cocos2D iPhone 和 CocosDenshion 来处理音频
  • php图像显示无需在邮件中下载

    您好 我想使用 php 邮件程序类发送 html 格式的图像 但图像下载后显示在邮件中 但我想显示图像而不下载 邮件程序类中是否有任何选项或者有另一种方法 或者我必须以其他格式发送图像 好吧 可能的答案只有两种 您不想在电子邮件中嵌入实际的
  • 使用 IO 在 C# 中读取十六进制

    我是从 Java 转向 C 的新手 我正在尝试使用十六进制 IO 读取文件 当我读取第一个字节时 我看不到我在十六进制编辑器中看到的内容 我在用着 StreamReader reader new StreamReader fileDirec
  • 如何获得与 Apple 推送通知一起播放的自定义声音?

    我正在尝试在发送 Apple 推送通知时播放自定义声音 显示弹出消息 徽章也会更新 但我总是播放默认的 iPhone 声音 而不是我的自定义声音 这是我发送的 JSON 数据 aps sound sound caf badge 2 aler
  • 将值返回给不同的 Activity

    我有一个应用程序 基本上看起来像附图中的设计 可以看到 有4个Activity 部分Activity有碎片 我想将测试的答案返回到用户的个人资料中 到目前为止 我一直将结果上传到服务器 并让应用程序在用户每次返回时更新用户的个人资料简介活动
  • ng-repeat 过滤器“显示所有”项目(如果未选择过滤器)

    我有一个ng repeat过滤器使用
  • iOS 7 UIWebView 键盘问题

    我必须像这里一样删除这个栏link https stackoverflow com questions 13101642 ios keyboard style in webview但对于 iOS 7 此代码不起作用 我们通过一些 Objec
  • 忽略触发器中的错误

    我有一个存储过程 在插入 更新 删除时的触发器内调用 问题是这个 SP 中有一个不重要的代码块 因此我想忽略此代码块引起的任何错误 我将此代码块插入到 TRY CATCH 块中 但令我惊讶的是我收到了以下错误 当前事务无法提交 并且无法支持
  • 如何在 AWS Step Function 中获取纪元时间

    我们可以使用 State EnteredTime 引用AWS Step函数中的当前时间 但这给出了ISO格式 有没有办法获取纪元秒 毫秒 我想基于此在 DynamoDB 中添加 TTL 值 这可能吗 或者我是否必须仅为时间戳调用 Lambd
  • 观察对象的所有元素(除了一个元素)

    我的代码中有一块手表 scope watch foo function true 这确保了如果对象 foo 中的任何属性发生更改 则将调用此监视 我想对此破例 如果 foo 中除一个属性之外的任何属性发生更改 我想调用此监视 如果该属性发生
  • 如何使用从密码派生的密钥正确加密和解​​密文件

    我正在尝试找出使用 PBEWithHmacSHA256AndAES 256 标准加密和解密文件的正确过程 据我了解 看这个示例代码 https docs oracle com javase 8 docs technotes guides s
  • 如何从文件中获取 Unix 权限掩码? [复制]

    这个问题在这里已经有答案了 如何使用 python 在 nix 上获取文件的权限掩码 例如 644 或 755 有没有任何函数或类可以做到这一点 非常感谢 os stat是一个包装器stat 2 http linux die net man