如何更改文件夹及其所有子文件夹和文件的权限?

这仅适用于/opt/lampp/htdocs文件夹,而不适用于其内容:

chmod 775 /opt/lampp/htdocs

如何为/opt/lampp/htdocs文件夹的所有当前内容设置chmod 755,以及将来自动为其下创建的新文件夹/文件设置chmod?


当前回答

正确的递归命令是:

sudo chmod -R 755 /opt/lampp/htdocs

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

其他回答

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

chmod 755 /folder -R

您需要确保适当的文件和目录具有相应的chmod ed/权限。对于所需的所有目录

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

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

chmod 644 img/* js/* html/*

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

chmod 600 file

选中-R选项

chmod-R<权限设置><目录名>

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

man <command name>

因此,在这种情况下:

man chmod

我认为Adam正在询问如何更改所有试图在/opt/lampp/htdoc目录上操作的进程的umask值。

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

因此,如果您将使用某种FTP程序将文件上载到/opt/lampp/htdoc,则需要配置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。

查找文件并对其应用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命令返回的文件数量很少,这两个版本都能很好地工作。第二种解决方案看起来很好看,比第一种更易读。如果有大量文件,第二个解决方案将返回错误:参数列表太长。

所以我的建议是

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