在Linux中,我如何一步到位地改变一个文件夹及其所有子文件夹和文件的权限?

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

我已经试过下面的命令,但它只对提到的文件夹有效。

chmod 775 /opt/lampp/htdocs

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

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

我也看了一下这个链接。

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

对该问题的评论 (10)
解决办法

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

我猜想你真正想做的是把目录设置为755,然后不要管文件,或者把它们设置为644。 为此,你可以使用find命令。 例如,你可以使用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 {} \;
评论(30)

检查-R选项

chmod -R

今后,你可以通过先检查手册页来节省大量的时间。

man 

所以在这种情况下。

man chmod
评论(17)

如果你想把所有文件的权限设置为a+r,把所有目录的权限设置为a+x,并通过完整的子目录树递归地进行设置,请使用:

chmod -R a+rX *

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

评论(7)

你可以使用-Rchmod来递归遍历所有文件和子文件夹。

你可能需要使用sudo,因为它取决于[LAMP][1]是否被当前用户或其他用户安装。

sudo chmod 755 -R /opt/lampp/htdocs

[1]: http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29

评论(7)

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

chmod 755 /folder -R

并使用umask来设置新文件夹/文件的默认值 cd /folder umask 755

评论(7)

正确的递归命令是:{{{7550864}}。

sudo chmod 755 -R /opt/lampp/htdocs

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

评论(2)

chmod 755 -R /opt/lampp/htdocs将递归设置权限。 没有办法自动设置设置权限后只在这个目录下创建的文件的权限,但你可以通过设置umask 022来改变全系统默认的文件权限。

评论(3)

你可以考虑[nik给出的这个答案][1]在超级用户上使用"一个chmod&quot。 来处理所有文件/文件夹。

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

[1]: https://superuser.com/a/91938/95837

评论(4)

这里有另一种方法可以将目录设置为775,文件设置为664。

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

它可能看起来很长,但它非常酷,原因有三。

  1. 只扫描一次文件系统,而不是两次。
  2. 提供更好的控制如何处理文件与目录。 3.提供了更好的控制_文件_的处理方式与_目录_的处理方式。 这在使用特殊模式时很有用,比如粘性位,你可能想应用于目录而不是文件。

  3. 使用了直接从man页面中提取的技术(见下文)。

请注意,我还没有确认这个解决方案和简单地使用两个查找命令(如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.

干杯

评论(2)

使用。

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

然而,要注意这一点。如果你改变了错误的文件/文件夹的权限,它真的会伤害你。

评论(0)

chmod -R 755 directory_name可以用,但如何将新文件也保留到755? 文件'的权限成为默认权限。

评论(1)

你要确保适当的文件和目录的chmod-ed/权限是适当的。 对于所有你想要的目录

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

而对于所有的图片、JavaScript、CSS、HTML......嗯,你不应该执行它们。 所以使用

chmod 644 img/* js/* html/*

但是对于所有的逻辑代码(例如PHP代码),你应该设置权限,使用户不能看到这些代码。

chmod 600 file
评论(0)

对于Mac OS X 10.7 (Lion)来说,它是。

chmod -R 755 /directory

是的,就像其他所有的人说的那样,做这件事的时候要小心。

评论(0)

我想Adam问的是如何改变所有在/opt/lampp/htdocs目录下操作的进程的umask值。

用户文件创建模式掩码(umask)用于确定新创建文件的文件权限。 它可以用来控制新文件的默认文件权限。

因此,如果你将使用某种ftp程序将文件上传到/opt/lampp/htdocs,你需要配置你的ftp服务器来使用你想要的umask。

如果文件/目录是用php创建的,你需要修改php代码。

<?php
umask(0022);
// other code
?>

如果你将从你的bash会话中创建新的文件/文件夹,你可以在你的shell配置文件 ~/.bashrc中设置umask值。 或者你可以在/etc/bashrc/etc/profile文件中为所有用户设置umask。 在文件中添加以下内容。 umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

而要改变已经创建的文件的权限,可以使用find。 希望这能帮助你。

评论(0)

有两个答案,一是找到文件,二是应用 "chmod"。 第一种是 "找到 "文件,然后在找到的时候应用 "chmod"(如@WombleGoneBad所建议)。

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

第二种方法是用 "find "命令生成所有文件的列表,并将此列表提供给 "chmod "命令(如@lamgesh所建议)。

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

只要 "find "命令返回的文件数量不多,这两个版本都能很好地工作。 第二种方案看起来很好,比第一种方案更易读。 如果文件数量多,第二种方案会返回错误。 Argument list too long.

所以我的建议是

  1. 如果你想一次性改变所有文件和目录的权限,请使用chmod -R 755 /opt/lampp/htdocs
  2. 如果你使用的文件数量非常多,使用find /opt/lampp/htdocs -type d -exec chmod 755 {} \\;-type x选项只搜索特定类型的文件,其中d用于查找目录,f用于文件,l用于链接。

  3. 使用chmod 755 $(find /path/to/base/dir -type d),否则使用

  4. 在任何情况下最好使用第一种

评论(0)

它'很简单。

在终端中进入文件管理器。 例子:sudo nemosudo nemo. 进入/opt/,然后点击Properties → Permission. 再点击其他。 最后改成创建和删除,文件权限改成读写,然后点击按钮应用...... 就可以工作了。

评论(0)