如何在Linux Ubuntu Terminal中为文件夹及其所有子文件夹和文件设置chmod?

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

另外,将来如果我在htdocs创build一个新的文件夹或文件,那么这个权限怎么会自动设置为755

这工作,但只为这个文件夹:

 chmod 775 /opt/lampp/htdocs 

其他答案是正确的,因为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 ,并通过完整的子目录树recursion执行,请使用:

 chmod -R a+rX * 

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

您可以使用-Rchmodrecursion遍历所有文件和子文件夹。

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

 sudo chmod 755 -R /opt/lampp/htdocs 

要设置为所有子文件夹(recursion)使用-R

 chmod 755 /folder -R 

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

chmod 755 -R /opt/lampp/htdocs会recursion设置权限。 只有在设置权限后创build的目录中才能自动设置文件的权限,但是可以通过设置umask 022来更改系统范围的默认文件权限。

你可能想考虑这个答案由超级用户nik给出,并使用“一个chmod”的所有文件/文件夹是这样的:

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

这是将目录设置为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. 直接从man页中使用技术(见下文)。

请注意,我还没有确认这个解决scheme和简单地使用两个find命令(如Peter Mortensen的解决scheme)之间的性能差异(如果有的话)。 然而,在手册中看到类似的例子是令人鼓舞的。

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. 

干杯

使用:

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

但是,要小心。 如果您更改错误的文件/文件夹的权限,它可以真的伤害你。

正确的recursion命令是:

 sudo chmod 755 -R /opt/lampp/htdocs 

-R :更改每个包含当前文件夹的子文件夹

chmod -R 755 directory_name作品,但你将如何保持新的文件也755? 该文件的权限成为默认权限。

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

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

而对于所有的图像,JavaScript,CSS,HTML …,你不应该执行它们。 所以使用

 chmod 644 img/* js/* html/* 

但对于所有的逻辑代码(例如PHP代码),您应该设置权限,以便用户不能看到该代码:

 chmod 600 file 

对于Mac OS X 10.7(Lion),它是:

 chmod -R 755 /directory 

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

我想亚当在询问如何更改绑定在/opt/lampp/htdocs目录上运行的所有进程的umask值。

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

所以如果您将使用某种types的ftp程序将file upload到/opt/lampp/htdocs您需要将您的ftp服务器configuration为使用您想要的umask。

如果文件/目录是由php创build的,则需要修改php代码

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

如果您将从bash会话中创build新的文件/文件夹,则可以在shellconfiguration文件中设置umask值〜/ .bashrc或者,您可以在/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 

而要更改已创build的文件的权限,您可以使用查找。 希望这可以帮助。

有两个答案find文件和应用chmod到他们。 首先是find文件,并应用它find(如@WombleGoneBadbuild议)。

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

第二个解决scheme是使用find命令生成所有文件的列表,并将该列表提供给chmod命令(如@lamgesh所示)。

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

只要find命令返回的文件数很less,这两个版本都可以很好地工作。 第二个解决scheme看起来很棒,比第一个解决scheme更可读。 如果有大量的文件,第二个解决scheme返回错误: Argument list too long.

所以我的build议是

  1. 如果要一次更改所有文件和目录的权限,请使用chmod -R 755 /opt/lampp/htdocs
  2. 使用find /opt/lampp/htdocs -type d -exec chmod 755 {} \; 如果您使用的文件数量非常大。 -type x选项仅search特定types的文件,其中d用于查找目录,f用于文件,l用于链接。
  3. 使用chmod 755 $(find /path/to/base/dir -type d)否则
  4. 在任何情况下最好使用第一个

这很简单。

在terminal去文件pipe理器。 例如: sudo nemo 。 去/opt/然后单击属性→权限 。 然后是其他 。 最后,改变创build和删除和文件访问读写,然后点击button应用…和工作。