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

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

chmod 775 /opt/lampp/htdocs

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


当前回答

对于仍在权限问题上挣扎的任何人,请导航到一个目录级别的cd。。从项目的根目录中,将自己(用户)添加到目录中,并允许编辑其中的所有内容(在macOS上测试)。

为此,您可以运行以下命令(首选):

sudo chown -R username: foldername .*

注意:对于当前未保存的更改,可能需要首先重新启动代码编辑器,以便能够保存而无需询问密码。

此外,请记住,您可以在键入用户名和文件夹时按Tab键查看选项,以使自己更方便。


或者简单地:

sudo chmod -R 755 foldername

但是如上所述,您需要小心使用第二种方法。

其他回答

选中-R选项

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

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

man <command name>

因此,在这种情况下:

man chmod

可以使用-R和chmod递归遍历所有文件和子文件夹。

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

sudo chmod -R 755 /opt/lampp/htdocs

对于仍在权限问题上挣扎的任何人,请导航到一个目录级别的cd。。从项目的根目录中,将自己(用户)添加到目录中,并允许编辑其中的所有内容(在macOS上测试)。

为此,您可以运行以下命令(首选):

sudo chown -R username: foldername .*

注意:对于当前未保存的更改,可能需要首先重新启动代码编辑器,以便能够保存而无需询问密码。

此外,请记住,您可以在键入用户名和文件夹时按Tab键查看选项,以使自己更方便。


或者简单地:

sudo chmod -R 755 foldername

但是如上所述,您需要小心使用第二种方法。

其他答案是正确的,因为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 {} \;

一些splainin:(谢谢@tobez)

chmod 755{}指定find将为每个目录执行的命令chmod 644{}指定find将为每个文件执行的命令{}被路径替换; 分号告诉find它应该执行的命令到此结束\; 分号被转义,否则将由shell而不是find解释

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

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

它可能看起来很长,但很酷,原因有三:

仅扫描文件系统一次而不是两次。提供对文件处理方式与目录处理方式的更好控制。这在处理特殊模式(如粘滞位)时非常有用,您可能希望将其应用于目录而不是文件。直接使用手册页中的技术(见下文)。

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

手册查找页面示例:

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 direct‐
tories into /root/suid.txt and large files into /root/big.txt.