我有一个共享的 git 存储库创建脚本,我一直在用 Python 3.2.3 编写,虽然绝大多数脚本都在工作,并且几乎可以生产(还有一些安全工作要做),但我一直在遇到一个尴尬的错误,对于我的生活,我无法弄清楚。
在我的迭代更改模式部分:
try:
if (args.debug):
print('Recursively changing the access mode of target directory ' + full_path +
' to ' oct(stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH) + '.')
if (args.debug):
print('setting ' + full_path +
' to stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH ')
os.chmod(full_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH)
for root, dirs, files in os.walk(full_path):
for spam in dirs:
if (args.debug):
print('spam in dirs: ' + spam +
'; stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH: ')
os.chmod(os.path.join(root, spam), stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH)
for eggs in files:
if (args.debug):
print('eggs in files: ' + eggs +
'; stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH: ')
os.chmod(os.path.join(root, eggs), stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH)
except OSError as e:
if (args.debug):
print('OSError raised during recursive chmod ' +
oct(stat.S_IRWXU | stat.S_IRWXG | stat.S_IROTH) + ' setting. ' +
'Removing the partially created repository.')
shutil.rmtree(full_path)
我遇到了一个问题——它没有正确设置我的目录权限。事实上,它一直在做完全相反的事情。它一直在剥夺我所有的目录权限。运行脚本后目录树如下所示:
d-----S--- 7 mat users 4096 Jul 3 23:10 test
ls: cannot open directory /home/mat/git/test: Permission denied
(setgid 位是在稍后的工作循环中设置的)显然,我遗漏了一些东西,但我不能确切地说出是什么,因为我正在使用 stat 模块的常量。并按位或将它们组合在一起以获得我正在寻找的 0o744 值。
在有人建议我使用八进制文字而不是 stat 模块的常量之前,我已经尝试过,结果相同。
任何帮助都会很重要。〜米