如何更改文件夹及其子文件夹/文件的权限?

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

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

chmod 775 /opt/lampp/htdocs

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

相关:如何在Linux终端中设置默认的chmod?

4845592 次浏览

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

chmod 755 /folder -R

<罢工>并使用umask将默认设置为新文件夹/文件cd /folderumask 755

检查-R选项

chmod -R <permissionsettings> <dirname>

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

man <command name>

所以在这种情况下:

man chmod

用途:

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

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

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

正确的递归命令是:

sudo chmod -R 755 /opt/lampp/htdocs

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

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

chmod -R 755 /directory

是的,正如其他人所说,这样做时要小心。

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

##(感谢@托贝兹

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

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

chmod -R a+rX *

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

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

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

找到文件并将chmod应用于它们有两种答案。

第一个是find文件,并在找到时应用chmod(如@WOBLEGONBAD所建议)。

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. 在任何情况下最好使用第一个

这是另一种将目录设置为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页面中的技术(见下文)。

请注意,我还没有确认此解决方案与简单使用两个查找命令(如Peter Mortenen的解决方案)之间的性能差异(如果有的话)。

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

干杯

我想Adam是在问如何更改所有试图在/opt/lampp/htdocs目录上运行的进程的umask值。

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

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

如果需要创建文件/目录,例如通过PHP,您需要修改PHP代码:

<?phpumask(0022);// Other code?>

如果您将从Bash会话创建新文件/文件夹,您可以在shell配置文件~/. bashrc文件中设置umask值。

或者您可以在/etc/bashrc/etc/profile文件中为所有用户设置umask。

将以下内容添加到文件中:

umask 022
Sample umask Values and File Creation PermissionsIf umask value set to    User permission     Group permission     Others permission000                            all                 all                   all007                            all                 all                   none027                            all             read / execute               none

要更改已创建文件的权限,您可以使用找到

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

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

对于所有的图像,JavaScript,CSS,超文本标记语言……好吧,你不应该执行它们。所以使用

chmod 644 img/* js/* html/*

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

chmod 600 file

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

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

sudo chmod -R 755 /opt/lampp/htdocs

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

这很简单。

在终端中,转到文件管理器。示例:sudo nemo。转到/opt/,然后单击属性权限。然后是其他。最后,更改为创建和删除,并访问阅读的文件,然后单击按钮应用…它起作用了。

您可以使用以下命令更改权限:

sudo chmod go+rwx /opt/lampp/htdocs

对于已经创建文件:

find . \( -type f -exec chmod g=r,o=r {} \; \) , \( -type d -exec chmod g=rx,o=rx {} \; \)

对于创造的未来文件:

sudo nano /etc/profile

并设置:

umask 022

常见的模式有:

  • 077: u=rw, g=, o=
  • 007: u=rw, g=rw, o=
  • 022: u=rw, g=r, o=r
  • 002: u=rw, g=rw, o=r

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

为此,您将运行此命令(首选):

sudo chown -R username: foldername .*

备注:对于当前未保存的更改,可能需要首先重新启动代码编辑器才能在不要求密码的情况下保存。

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


或者简单地说:

sudo chmod -R 755 foldername

但如上所述,您需要注意第二种方法。

用途:

sudo chmod -R a=-x,u=rwX,g=,o= folder

所有者rw,其他人没有访问权限,目录带有rwx。这将清除文件上现有的“x”。

符号chmod计算在Chmod 744中解释。

用途:

chmod 775 -R /folder-name

在你的情况下,它将是:

chmod 775 -R /opt/lampp/htdocs