使用 Python 为路径中的每个中间目录授予文件权限

Using Python to grant file permissions for every intermediate directory down the path

提问人:user2526586 提问时间:9/13/2023 更新时间:9/13/2023 访问量:31

问:

我有以下(未完成的)代码来创建目录并分配所有者/权限。

import os
import pwd
from shutil import chown
import util_directories_owner as dir_owner

base_path = "/usr/local/bin/my_app_01"
subdirectory_names = ["bin", "config", "util/bin", "util/logs", "help"]

for sd_name in subdirectory_names:
    subdirectory_path = os.path.join(base_path, sd_name)
    if not os.path.exists(subdirectory_path):
        try:
            os.makedirs(subdirectory_path)
            try :
                pwd.getpwnam(dir_owner.owner)
                pwd.getgrnam(dir_owner.group)
                shutil.chown(subdirectory_path, dir_owner.owner, dir_owner.group)
                os.chmod(subdirectory_path, 0o664)
            except KeyError as exp:
                print(f"Error: Unable to set owner/group to directory {subdirectory_path} :: {str(exp)}")
        except OSError as exp:
            print(f"Error: Unable to create directory {subdirectory_path} :: {str(exp)}")
        

我目前的问题是:

  • 使用 ,我可以为路径创建所有需要的中间目录,但我也在尝试递归地为用户授予路径下每个中间目录的读取权限,而不仅仅是路径的叶子。如何在不手动迭代路径的情况下做到这一点?os.makedirs()
  • 我不知道如何添加权限而不是完全覆盖权限。如果上述代码运行多次,则子目录可能在上次运行之前就已经存在。权限更改可能在上次运行之前已应用。我不想在代码再次运行时覆盖现有权限,但我只想在缺少权限时添加权限。此外,我希望将其应用于我在此过程中创建的每个中间目录。使用 bash,我可以手动执行类似 ,如果您了解我想要做的事情。chmod a+r
  • 沿着路径,有一些系统目录或已经存在的目录,例如 ,我不想弄乱现有的权限设置。避免触及这些目录权限的最佳方法是什么?/usr/local/bin
python-3.x 文件权限 chmod

评论


答: 暂无答案