我正在编写一个脚本来检查用户目录中文件的权限,如果它们不被接受,我会警告它们,但我想检查不仅是登录用户的权限,还要检查组和其他人的权限.我怎样才能做到这一点?在我看来,os.access()在Python中只能检查运行脚本的用户的权限.
Ale*_*lli 94
你是正确的,os.access像底层访问系统调用一样,检查特定用户(真实而不是有效的ID,以帮助解决suid情况).
os.stat是获取有关文件的更多常规信息的正确方法,包括每个用户,组和其他人的权限.返回st_mode的对象的属性os.stat具有该文件的权限位.
为了帮助解释这些位,您可能需要使用stat模块.具体来说,你要定义的位掩码在这里,你会使用&操作符(位和)使用它们掩盖了相关位在st_mode属性-例如,如果你只需要在真/假支票某个文件是否是组可读的,一种方法是:
import os
import stat
def isgroupreadable(filepath):
st = os.stat(filepath)
return bool(st.st_mode & stat.S_IRGRP)
Run Code Online (Sandbox Code Playgroud)
请注意:os.stat通话费用可能有点高,因此请务必通过一次通话提取您关心的所有信息,而不是为每个感兴趣的位置重复调用;-).
只是为了帮助像我这样来到这里的人有点不同:
import os
import stat
st = os.stat(yourfile)
oct_perm = oct(st.st_mode)
print(oct_perm)
>>> 0o100664 //the last 3 or 4 digits is probably what you want.
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅此处:https://stackoverflow.com/a/5337329/1814774
小智 7
import os
os.access('my_file', os.R_OK) # Check for read access
os.access('my_file', os.W_OK) # Check for write access
os.access('my_file', os.X_OK) # Check for execution access
os.access('my_file', os.F_OK) # Check for existence of file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64814 次 |
| 最近记录: |