【发布时间】:2019-07-06 18:38:53
【问题描述】:
我正在尝试一次有选择地修改用户、组或其他人的权限,但每当我使用chmod 时,所有权限都会被覆盖。
我已尝试按照chmod 文档中的建议将当前文件权限与新权限组合在一起:
例如:
GROUP_RO = S_IRGRP #Group read only
current_permissions = stat.S_IMODE(os.stat(path).st_mode)
os.chmod(path, current_permissions | GROUP_RO)
我也尝试过使用位掩码。我想不出一种方法将位掩码组合到哪里 - 如果我正在修改用户权限,我可以保护/屏蔽组和其他权限不被修改。
我尝试通过以下方式使用位掩码:
GROUP_RO = S_IRGRP #Group read only
USER_MASK = S_IRWXU
os.chmod(path, USER_MASK | GROUP_RO) #this works at preventing User permissions from being modified
但将多个面具连接在一起却不会:
USER_MASK = S_IRWXU
OTHERS_MASK = S_IRWXO
os.chmod(path, USER_MASK | OTHERS_MASK | GROUP_RO) #does not work
我尝试过无数种不同的位运算符和位掩码的组合,有或没有当前权限,但没有运气。
我想做的事:
# current permissions -> U: read only, G: read and write, O: write only
os.chmod(path, [whatever code making this work])
# new permissions -> U: read only, G: read only, O: write only
在任何情况下,其他实体都不会被修改。
【问题讨论】:
-
您显示的示例语法无效。您能否展示一个可行的示例以及您尝试使用的方法?
-
@MadPhysicist 是一个错字。我修复了它并添加了我尝试过的其他解决方案的示例。
标签: python python-3.x file-permissions chmod stat