提问人:Adam Halasz 提问时间:9/18/2010 最后编辑:Henry EckerAdam Halasz 更新时间:12/19/2022 访问量:5082992
如何更改文件夹及其子文件夹/文件的权限?[已结束]
How do I change permissions for a folder and its subfolders/files? [closed]
问:
这个问题似乎不是关于特定的编程问题、软件算法或程序员主要使用的软件工具。如果您认为该问题在另一个 Stack Exchange 站点上是主题,您可以发表评论以解释该问题可能在哪里得到回答。
11个月前关闭。
如何更改文件夹及其所有子文件夹和文件的权限?
这仅适用于文件夹,而不适用于其内容:/opt/lampp/htdocs
chmod 775 /opt/lampp/htdocs
如何为文件夹的所有当前内容设置,以及将来自动设置在其下创建的新文件夹/文件?chmod 755
/opt/lampp/htdocs
答:
若要设置为所有子文件夹(递归),请使用 -R
chmod 755 /folder -R
评论
选中 -R 选项
chmod -R <permissionsettings> <dirname>
将来,您可以通过先检查手册页来节省大量时间:
man <command name>
所以在这种情况下:
man chmod
评论
x
-x
cd
用:
sudo chmod 755 -R /whatever/your/directory/is
但是,要小心。如果您更改错误文件/文件夹的权限,它真的会伤害您。
chmod 755 -R /opt/lampp/htdocs
将递归设置权限。无法自动设置设置权限后仅在此目录中创建的文件的权限,但可以通过设置 来更改系统范围的默认文件权限。umask 022
评论
inherit
myforlder
myfolder
root
chown -R username:usergroup /directory
正确的递归命令是:
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 {} \;
一些抱怨:(感谢@tobbez)
chmod 755 {}
指定将为每个目录执行的命令find
chmod 644 {}
指定将为每个文件执行的命令find
{}
替换为路径;
分号表示这是它应该执行的命令的结尾find
\;
分号被转义,否则它将被 shell 解释,而不是find
评论
/path/to/directory/*
-exec chmod 755 '{}' \;
-exec chmod 755 '{}' ';'
如果要将所有文件的权限设置为 ,将所有目录的权限设置为 ,并通过完整的子目录树递归执行此操作,请使用:a+r
a+x
chmod -R a+rX *
(即大写,不小!)被忽略为文件(除非它们已经是某人的可执行文件),但用于目录。X
X
x
评论
x
chmod -R a+rX
chmod -R g+wX
a
g
u
o
X
您可能需要考虑 nik 在超级用户上给出的这个答案,并对所有文件/文件夹使用“一个 chmod”,如下所示:
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
评论
-exec
find
Argument list too long
查找文件并应用它们有两个答案。chmod
第一个是文件,并在找到时应用(如@WombleGoneBad所建议)。find
chmod
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
第二种解决方案是使用命令生成所有文件的列表,并将此列表提供给命令(如@lamgesh建议的那样)。find
chmod
chmod 755 $(find /path/to/base/dir -type d)
只要命令返回的文件数很少,这两个版本都可以很好地工作。第二种解决方案看起来很棒,并且比第一种解决方案更具可读性。如果文件数量较多,则第二个解决方案将返回错误:find
Argument list too long.
所以我的建议是
- 如果要一次更改所有文件和目录的权限,请使用。
chmod -R 755 /opt/lampp/htdocs
- 如果您正在使用的文件数量非常大,请使用。该选项仅搜索特定类型的文件,其中 d 用于查找目录,f 用于查找文件,l 用于链接。
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
-type x
- 以其他方式使用
chmod 755 $(find /path/to/base/dir -type d)
- 最好在任何情况下使用第一个
这是将目录设置为 775 并将文件设置为 664 的另一种方法。
find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)
它可能看起来很长,但它很酷,原因有三个:
请注意,我尚未确认此解决方案与仅使用两个查找命令(如 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 direct‐
tories into /root/suid.txt and large files into /root/big.txt.
评论
{} +
可以对 find 执行与 xargs 通常相同的操作。
我认为亚当是在问如何更改尝试在目录上操作的所有进程的掩码值。/opt/lampp/htdocs
用户文件创建模式掩码 (umask) 用于确定新创建的文件的文件权限。它可用于控制新文件的默认文件权限。
因此,如果您要使用某种FTP程序将文件上传到,则需要将FTP服务器配置为使用所需的掩码。/opt/lampp/htdocs
如果需要创建文件/目录,例如通过PHP创建,则需要修改PHP代码:
<?php
umask(0022);
// Other code
?>
如果您要从 Bash 会话创建新文件/文件夹,您可以在 shell 配置文件 ~/.bashrc 文件中设置 umask 值。
或者,您可以为所有用户设置掩码或文件。/etc/bashrc
/etc/profile
将以下内容添加到文件中:
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-ed/permissions for those are appropriate.对于您想要的所有目录
find /opt/lampp/htdocs -type d -exec chmod 711 {} \;
对于所有图像,JavaScript、CSS、HTML......好吧,你不应该执行它们。所以使用
chmod 644 img/* js/* html/*
但是对于所有逻辑代码(例如PHP代码),您应该设置权限,以便用户看不到该代码:
chmod 600 file
您可以使用 with 对所有文件和子文件夹进行递归遍历。-R
chmod
您可能需要 sudo,因为它取决于当前用户或其他用户正在安装的 LAMP:
sudo chmod -R 755 /opt/lampp/htdocs
评论
sudo chmod 755 -R /directory
sudo chmod -R 755 /directory
chmod -R 755 directory_name
有效,但是您如何将新文件也保留为 755?文件的权限将成为默认权限。
这很简单。
在终端中,转到文件管理器。例:。转到 ,然后单击“属性”→“权限”。然后是其他。最后,更改为创建和删除以及文件访问权限以读取和写入,然后单击按钮应用...它起作用了。sudo nemo
/opt/
评论
nemo
是 Cinnamon 的图形文件管理器。它可能已安装,也可能不会安装,并且需要您运行图形环境。
您可以使用以下命令更改权限:
sudo chmod go+rwx /opt/lampp/htdocs
对于仍在为权限问题而苦苦挣扎的任何人,请从项目的根目录向上导航一个目录级别,将自己(用户)添加到目录中,并授予编辑其中所有内容的权限(在 macOS 上测试)。cd ..
为此,您需要运行以下命令(首选):
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 75 /opt/lampp/htdocs
chmod 755 /opt/lampp/htdocs