有没有办法为 /opt/lampp/htdocs 设置 chmod 755 及其所有内容,包括子文件夹和文件?
/opt/lampp/htdocs
chmod 755
此外,将来,如果我在 htdocs 中创建一个新文件夹或文件,它的权限如何自动设置为 755 ?
htdocs
755
这有效,但仅适用于此文件夹:
chmod 775 /opt/lampp/htdocs
使用:
sudo chmod 755 -R /whatever/your/directory/is
但是,要小心 . 如果您更改错误文件/文件夹的权限,它真的会伤害您 .
找到文件并将 chmod 应用于它们有两个答案 . 第一个是 find 文件,并在找到时应用 chmod (由@WombleGoneBad建议) .
chmod
find
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.
Argument list too long.
所以我的建议是
如果要一次更改所有文件和目录的权限,请使用 chmod -R 755 /opt/lampp/htdocs .
chmod -R 755 /opt/lampp/htdocs
如果您使用的文件数量非常大,请使用 find /opt/lampp/htdocs -type d -exec chmod 755 {} \; . -type x 选项仅搜索特定类型的文件,其中d用于查找目录,f用于文件,l用于链接 .
-type x
否则请使用 chmod 755 $(find /path/to/base/dir -type d)
最好在任何情况下使用第一个
检查-R选项
chmod -R <permissionsettings> <dirname>
将来,您可以通过首先检查手册页来节省大量时间:
man <command name>
所以在这种情况下:
man chmod
您可以使用 -R 与 chmod 进行所有文件和子文件夹的递归遍历 .
-R
您可能需要sudo,因为它取决于当前用户或另一个用户安装的LAMP:
sudo chmod 755 -R /opt/lampp/htdocs
如果要将所有文件的权限设置为 a+r ,将所有目录设置为 a+x ,并通过完整的子目录树递归执行,请使用:
a+r
a+x
chmod -R a+rX *
文件将忽略 X (即大写 X ,不小 x !)(除非它们已经可供某人使用),但用于目录 .
X
x
其他答案是正确的,因为 chmod -R 755 会将这些权限设置为树中的所有文件和子文件夹 . But why on earth would you want to ?它可能对目录有意义,但为什么要在所有文件上设置执行位?
chmod -R 755
我怀疑你真正想要做的是将目录设置为755并保留文件或将它们设置为644.为此,您可以使用 find 命令 . 例如:
要将所有目录更改为755( drwxr-xr-x ):
drwxr-xr-x
要将所有文件更改为644( -rw-r--r-- ):
-rw-r--r--
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
chmod 755 -R /opt/lampp/htdocs 将以递归方式设置权限 . 没有办法仅在设置权限后创建的此目录中自动设置文件权限,但您可以通过设置 umask 022 来更改系统范围的默认文件权限 .
chmod 755 -R /opt/lampp/htdocs
umask 022
这很简单 .
在终端中转到文件管理器 . 例如: sudo nemo . 转到 /opt/ 然后单击 Properties → Permission . 然后 Other . 最后,更改为创建和删除以及文件访问以进行读取和写入,然后单击按钮应用...并且工作 .
sudo nemo
/opt/
您希望确保适当的文件和目录是chmoded /权限 . 对于您想要的所有目录
find /opt/lampp/htdocs -type d -exec chmod 711 {} \;
对于所有图像,JavaScript,CSS,HTML ......好吧,你不应该执行它们 . 所以用
chmod 644 img/* js/* html/*
但对于所有逻辑代码(例如PHP代码),您应该设置权限,以便用户无法看到该代码:
chmod 600 file
这是将目录设置为775并将文件设置为664的另一种方法 .
find /opt/lampp/htdocs \ \( -type f -exec chmod ug+rw,o+r {} \; \) , \ \( -type d -exec chmod ug+rwxs,o+rx {} \; \)
它可能看起来很长,但它有三个原因很酷:
仅扫描文件系统一次而不是两次 .
更好地控制文件的处理方式与目录的处理方式 . 这在使用special modes时非常有用,例如sticky bit,您可能希望将其应用于目录而不是文件 .
直接使用 man 页面中的技术(见下文) .
man
请注意,我还没有确认此解决方案与仅使用两个find命令之间的性能差异(如果有)(如Peter Mortensen的解决方案) . 但是,在手册中看到类似的例子令人鼓舞 .
man find 页面的示例:
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.
干杯
chmod -R 755 directory_name 有效,但您如何将新文件保存到755?文件的权限成为默认权限 .
chmod -R 755 directory_name
正确的递归命令是:
-R :更改包含当前文件夹的每个子文件夹
对于Mac OS X 10.7(Lion),它是:
chmod -R 755 /directory
是的,正如所有其他人所说,做这件事时要小心 .
我认为亚当正在询问如何为所有追求操作的进程更改umask值 /opt/lampp/htdocs 目录 .
用户文件创建模式掩码(umask)用于确定新创建文件的文件权限 . 它可用于控制新文件的默认文件权限 .
因此,如果您将使用某种ftp程序将文件上传到 /opt/lampp/htdocs ,您需要配置您的ftp服务器以使用您想要的umask .
如果文件/目录例如由php创建,则需要修改php代码
<?php umask(0022); // other code ?>
如果要从bash会话创建新文件/文件夹,可以在shell配置文件中设置umask值〜/ .bashrc或者可以在 /etc/bashrc 或 /etc/profile 文件中为所有用户设置umask . 将以下内容添加到文件:umask 022
/etc/bashrc
/etc/profile
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 . 希望这可以帮助 .
您可能需要在超级用户上考虑this answer given by nik并对所有文件/文件夹使用"one chmod",如下所示:
chmod 755 $(find /path/to/base/dir -type d) chmod 644 $(find /path/to/base/dir -type f)
要设置为所有子文件夹(递归),请使用-R
chmod 755 /folder -R
并使用umask将默认设置为新文件夹/文件cd /文件夹umask 755
16 回答
使用:
但是,要小心 . 如果您更改错误文件/文件夹的权限,它真的会伤害您 .
找到文件并将
chmod
应用于它们有两个答案 . 第一个是find
文件,并在找到时应用chmod
(由@WombleGoneBad建议) .第二种解决方案是使用
find
命令生成所有文件的列表,并将此列表提供给chmod
命令(由@lamgesh建议) .只要
find
命令返回的文件数量很少,这两个版本都可以正常工作 . 第二个解决方案看起来很棒,比第一个解决方案更具可读性 . 如果有大量文件,则第二个解决方案返回错误:Argument list too long.
所以我的建议是
如果要一次更改所有文件和目录的权限,请使用
chmod -R 755 /opt/lampp/htdocs
.如果您使用的文件数量非常大,请使用
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
.-type x
选项仅搜索特定类型的文件,其中d用于查找目录,f用于文件,l用于链接 .否则请使用
chmod 755 $(find /path/to/base/dir -type d)
最好在任何情况下使用第一个
检查-R选项
chmod -R <permissionsettings> <dirname>
将来,您可以通过首先检查手册页来节省大量时间:
所以在这种情况下:
您可以使用
-R
与chmod
进行所有文件和子文件夹的递归遍历 .您可能需要sudo,因为它取决于当前用户或另一个用户安装的LAMP:
如果要将所有文件的权限设置为
a+r
,将所有目录设置为a+x
,并通过完整的子目录树递归执行,请使用:文件将忽略
X
(即大写X
,不小x
!)(除非它们已经可供某人使用),但用于目录 .其他答案是正确的,因为
chmod -R 755
会将这些权限设置为树中的所有文件和子文件夹 . But why on earth would you want to ?它可能对目录有意义,但为什么要在所有文件上设置执行位?我怀疑你真正想要做的是将目录设置为755并保留文件或将它们设置为644.为此,您可以使用
find
命令 . 例如:要将所有目录更改为755(
drwxr-xr-x
):要将所有文件更改为644(
-rw-r--r--
):chmod 755 -R /opt/lampp/htdocs
将以递归方式设置权限 . 没有办法仅在设置权限后创建的此目录中自动设置文件权限,但您可以通过设置umask 022
来更改系统范围的默认文件权限 .这很简单 .
在终端中转到文件管理器 . 例如:
sudo nemo
. 转到/opt/
然后单击 Properties → Permission . 然后 Other . 最后,更改为创建和删除以及文件访问以进行读取和写入,然后单击按钮应用...并且工作 .您希望确保适当的文件和目录是chmoded /权限 . 对于您想要的所有目录
对于所有图像,JavaScript,CSS,HTML ......好吧,你不应该执行它们 . 所以用
但对于所有逻辑代码(例如PHP代码),您应该设置权限,以便用户无法看到该代码:
这是将目录设置为775并将文件设置为664的另一种方法 .
它可能看起来很长,但它有三个原因很酷:
仅扫描文件系统一次而不是两次 .
更好地控制文件的处理方式与目录的处理方式 . 这在使用special modes时非常有用,例如sticky bit,您可能希望将其应用于目录而不是文件 .
直接使用
man
页面中的技术(见下文) .请注意,我还没有确认此解决方案与仅使用两个find命令之间的性能差异(如果有)(如Peter Mortensen的解决方案) . 但是,在手册中看到类似的例子令人鼓舞 .
man find
页面的示例:干杯
chmod -R 755 directory_name
有效,但您如何将新文件保存到755?文件的权限成为默认权限 .正确的递归命令是:
-R
:更改包含当前文件夹的每个子文件夹对于Mac OS X 10.7(Lion),它是:
是的,正如所有其他人所说,做这件事时要小心 .
我认为亚当正在询问如何为所有追求操作的进程更改umask值
/opt/lampp/htdocs
目录 .用户文件创建模式掩码(umask)用于确定新创建文件的文件权限 . 它可用于控制新文件的默认文件权限 .
因此,如果您将使用某种ftp程序将文件上传到
/opt/lampp/htdocs
,您需要配置您的ftp服务器以使用您想要的umask .如果文件/目录例如由php创建,则需要修改php代码
如果要从bash会话创建新文件/文件夹,可以在shell配置文件中设置umask值〜/ .bashrc或者可以在
/etc/bashrc
或/etc/profile
文件中为所有用户设置umask . 将以下内容添加到文件:umask 022要更改已创建文件的权限,您可以使用find . 希望这可以帮助 .
您可能需要在超级用户上考虑this answer given by nik并对所有文件/文件夹使用"one chmod",如下所示:
要设置为所有子文件夹(递归),请使用-R
并使用umask将默认设置为新文件夹/文件cd /文件夹umask 755