【问题标题】:How to force CURRENT directory permissions on all sub-directories in Linux?如何对 Linux 中的所有子目录强制 CURRENT 目录权限?
【发布时间】:2012-08-27 23:24:59
【问题描述】:

我经常发现自己以 root 身份登录 shell(我已经被告知这是一种不好的做法)并将新文件复制到 apache 提供的某个目录。

由于我以 root 身份登录,新文件将 root 设置为所有者,并且与已经存在的文件具有不同的权限,我需要更改 Apache 的权限才能访问文件。我是手动做的。

我正在研究一种更好的方法。我想知道是否有一种方法可以通过单个命令以某种方式将当前文件夹的权限应用于它的所有子文件夹和文件。

Windows 有这样一个功能,您可以在其中将所有文件和文件夹权限“重置”为父文件夹的权限。

【问题讨论】:

    标签: linux shell permissions


    【解决方案1】:

    +1'd @choroba's answer但是......你确定这是你想要做的吗?

    来自http://en.wikipedia.org/wiki/File_system_permissions ...

    权限
    类 Unix 系统实现了适用于每个类的三个特定权限:

    • 读取权限授予读取文件的能力。 当为目录设置时, 此权限授予读取目录中文件名的能力, 但不查找有关它们的任何进一步信息,例如内容、文件类型、 大小、所有权、权限。
    • 写入权限授予修改文件的能力。 当为目录设置时, 此权限授予修改目录中条目的能力。这包括 创建文件、删除文件和重命名文件。
    • 执行权限授予执行文件的能力。此权限必须 为可执行程序(包括 shell 脚本)设置,以允许操作 系统来运行它们。 当为目录设置时,此权限授予访问权限 文件内容和元信息(如果名称已知),但不列出目录中的文件 目录,除非还设置了 read。

    在目录上设置权限的效果,而不是 文件,是“最常被误解的文件权限之一 问题”。

    当没有设置权限时,相应的权限被拒绝。 与基于 ACL 的系统不同,类 Unix 系统上的权限不是 遗传。在目录中创建的文件不一定有 与该目录相同的权限。

    (已添加重点)

    【讨论】:

    • 谢谢。从那以后(这篇文章已有多年历史)我发现 Linux 有一个 ACL 工具,至少在 Debian 上是这样。 (acl、setfacl、chacl 等)。我知道它们是可以继承的。但这些 ACL 在某种程度上是次要的可选功能。我遇到了我在上面最初的帖子中描述的问题的变体,从而发现了 ACL。但这一次,我没有重置权限,而是添加了额外的 ACL。
    【解决方案2】:

    要获取当前目录的权限,可以使用

    stat -c %a .
    

    要递归设置权限,请使用

    chomd -R
    

    放在一起,它给出了

    chmod -R `stat -c %a .` .
    

    或者,如果支持,您可以使用chmod--reference 选项。

    chmod -R --reference=. .
    

    【讨论】:

    • 像魅力一样工作:chmod -R --reference=. .chown -R --reference=. .
    猜你喜欢
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    • 2017-05-26
    • 2018-10-21
    • 2013-07-18
    • 1970-01-01
    • 2021-09-13
    相关资源
    最近更新 更多