用Python检查Linux中的文件权限

我正在编写一个脚本来检查用户目录中的文件的权限,如果他们不能接受,我会警告他们,但我想检查不仅login的用户,而且组和其他人的权限。 我怎样才能做到这一点? 在我看来,Python中的.access()只能检查运行脚本的用户的权限。

你是正确的, os.access ,就像底层的访问系统调用一样,检查一个特定的用户(真实而不是有效的ID,以帮助suid情况)。

os.stat是获取有关文件的更多一般信息的正确方法,包括每个用户,组和其他人的权限。 os.stat返回的对象的st_mode属性具有该文件的权限位。

为了帮助解释这些位,您可能需要使用stat模块。 具体来说,您需要在这里定义的位掩码,您将使用&运算符(位和)来使用它们来掩盖st_mode属性中的相关位 – 例如,如果您只需要一个True / False检查某个文件是否可以读取,一种方法是:

 import os import stat def isgroupreadable(filepath): st = os.stat(filepath) return bool(st.st_mode & stat.S_IRGRP) 

请注意: os.stat调用可能有点os.stat ,所以一定要通过一个调用来提取你关心的所有信息,而不是不断地重复调用每一个感兴趣的内容;-)。

使用os.access()标志为os.R_OKos.W_OKos.X_OK

编辑 :如果您在Windows上testing目录权限,请查看此相关问题 。

您可以通过os.stat(path)stat模块一起检查文件权限来解释结果。

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. 

看到这个更多的细节: https : //stackoverflow.com/a/5337329/1814774