如何在 Linux 中一步更改文件夹及其所有子文件夹和文件的权限?

我想在 Linux 中一步(命令)更改文件夹及其所有子文件夹和文件的权限。

我已经尝试过以下命令,但仅适用于上述文件夹:

chmod 775 /opt/lampp/htdocs

有没有办法为/opt/lampp/htdocs及其所有内容(包括子文件夹和文件)设置chmod 755

另外,将来,如果我在htdocs创建一个新文件夹或文件,如何将其权限自动设置为755

我也看了这个链接:

http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal

答案

其他答案是正确的,因为chmod -R 755将对树中的所有文件和子文件夹设置这些权限。 但是,为什么要在地球上 ?这对于目录可能有意义,但是为什么要在所有文件上设置执行位?

我怀疑您真正想要做的是将目录设置为 755,或者不理会这些文件,或者将它们设置为 644。为此,您可以使用find命令。例如:

要将所有目录更改为 755( drwxr-xr-x ):

find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

要将所有文件更改为 644( -rw-r--r-- ):

find /opt/lampp/htdocs -type f -exec chmod 644 {} \;

检查 - R 选项

chmod -R <permissionsettings> <dirname>

将来,您可以通过先检查手册页来节省大量时间:

man <command name>

因此,在这种情况下:

man chmod

如果要将所有文件的权限设置为a+r ,所有目录的权限设置为a+x ,并通过完整的子目录树来递归地执行此操作,请使用:

chmod -R a+rX *

X (即大写的X ,不是小x !)对于文件将被忽略(除非它们已经对某人可执行),但将其用于目录。

可以将-Rchmod一起使用以递归遍历所有文件和子文件夹。

您可能需要 sudo,因为它取决于当前用户或另一个用户正在安装的LAMP

sudo chmod 755 -R /opt/lampp/htdocs

要(递归)设置所有子文件夹,请使用 - R

chmod 755 /folder -R

并使用 umask 将默认设置为新文件夹 / 文件 cd / folder umask 755

正确的递归命令是:

sudo chmod 755 -R /opt/lampp/htdocs

-R :更改每个子文件夹,包括当前文件夹

chmod 755 -R /opt/lampp/htdocs将递归设置权限。无法仅在设置权限后创建的目录中自动设置文件的权限,但是可以通过设置umask 022来更改系统范围的默认文件权限。

您可能需要考虑nik在超级用户上给出的答案,并对所有文件 / 文件夹使用 “one chmod”,如下所示:

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)

采用:

sudo chmod 755 -R /whatever/your/directory/is

但是,请注意这一点。如果更改错误的文件 / 文件夹的权限,可能会对您造成伤害。

这是将目录设置为 775,将文件设置为 664 的另一种方法。

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

它可能看起来很长,但是由于以下三个原因,它很酷:

  1. 仅扫描一次文件系统,而不扫描两次。
  2. 提供对文件处理方式和目录处理方式的更好控制。当您使用特殊模式(例如sticky bit)时 ,这很有用,您可能希望将其应用于目录而不是文件。
  3. man页中直接使用一种技术(请参见下文)。

请注意,我尚未确认此解决方案与仅使用两个 find 命令(如 Peter Mortensen 的解决方案)之间的性能差异(如果有)。但是,在手册中看到类似的示例是令人鼓舞的。

来自man find页面的示例:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

干杯