我正在尝试执行以下操作:
编写代码,检查目录“文件”中每个文件的权限。 如果“组”的权限不是“ rwx”,请更改该文件的权限 如下: “用户”可以rwx, 'group'可以rwx, “其他”无能为力。
我尝试了以下方法:
import os
import stat
path = '/home/myname/files'
for r, d, f in os.walk(path):
for file in f:
if not os.access(file, stat.S_IRWXU):
print("User cannot rwx: ", file)
os.chmod(file, stat.S_IRWXU)
if os.access(file, stat.S_IRWXG) == 0:
print("Group cannot rwx: ", file)
os.chmod(file, stat.S_IRWXG)
但是,我注意到两件事。
答案 0 :(得分:0)
这是我认为您应该修改代码的方式:
def isGroupRWX(file):
# check the group bits of the file mode are all set (R, W and X)
mode = os.stat(file).st_mode
return (mode and 0b111000) == 0b111000
def fixPermissions(file):
# set permissions for both user and group to RWX
os.chmod(file, stat.S_IRWXG or stat.S_IRWXU)
您需要检查os.stat
来获取文件的模式,因为您需要显式检查组权限,而不仅仅是当前用户是否可以访问文件。
您可以将模式组合传递给os.chmod
以便同时设置所有模式,这可以解决您的第二个问题。