Ada*_*dam 1711 linux directory permissions chmod
我想在Linux中一步(命令)更改文件夹及其所有子文件夹和文件的权限.
我已经尝试过以下命令,但它仅适用于上述文件夹:
chmod 775 /opt/lampp/htdocs
Run Code Online (Sandbox Code Playgroud)
有没有一种方法来设置chmod 755
的/opt/lampp/htdocs
所有内容,包括子文件夹和文件?
此外,将来,如果我在里面创建一个新的文件夹或文件htdocs
,它的权限如何自动设置为755
?
我也看过这个链接:
http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal
提前致谢.
小智 2811
其他答案是正确的,因为chmod -R 755
它将这些权限设置为树中的所有文件和子文件夹.但是为什么你想要呢?它可能对目录有意义,但为什么要在所有文件上设置执行位?
我怀疑你真正想做的是将目录设置为755并保留文件或将它们设置为644.为此,您可以使用该find
命令.例如:
要将所有目录更改为755(drwxr-xr-x
):
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
Run Code Online (Sandbox Code Playgroud)
要将所有文件更改为644(-rw-r--r--
):
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
Run Code Online (Sandbox Code Playgroud)
Ste*_*ard 756
检查-R选项
chmod -R <permissionsettings> <dirname>
将来,您可以通过首先检查手册页来节省大量时间:
man <command name>
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下:
man chmod
Run Code Online (Sandbox Code Playgroud)
小智 370
如果要将所有文件的权限a+r
和所有目录设置为a+x
,并通过完整的子目录树递归执行,请使用:
chmod -R a+rX *
Run Code Online (Sandbox Code Playgroud)
的X
(即资本X
,不小x
!)可以忽略的文件(除非它们是可执行的人的话),但用于目录.
rav*_*jan 133
您可以使用-R
with chmod
进行所有文件和子文件夹的递归遍历.
您可能需要sudo,因为它取决于当前用户或另一个用户安装的LAMP:
sudo chmod 755 -R /opt/lampp/htdocs
Run Code Online (Sandbox Code Playgroud)
Top*_*era 73
要设置为所有子文件夹(递归),请使用-R
chmod 755 /folder -R
Run Code Online (Sandbox Code Playgroud)
并使用umask将默认设置为新文件夹/文件cd /文件夹umask 755
Pra*_*pta 68
正确的递归命令是:
sudo chmod 755 -R /opt/lampp/htdocs
Run Code Online (Sandbox Code Playgroud)
-R
:更改包含当前文件夹的每个子文件夹
sle*_*ate 50
chmod 755 -R /opt/lampp/htdocs
将递归设置权限.没有办法仅在设置权限后创建的此目录中自动设置文件权限,但您可以通过设置更改系统范围的默认文件权限umask 022
.
Iam*_*esh 25
您可能想要考虑nik在超级用户上给出的答案,并对所有文件/文件夹使用"one chmod",如下所示:
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)
Run Code Online (Sandbox Code Playgroud)
Nat*_*ner 20
使用:
sudo chmod 755 -R /whatever/your/directory/is
Run Code Online (Sandbox Code Playgroud)
但是,要小心.如果您更改错误文件/文件夹的权限,它真的会伤害您.
chr*_*gen 20
这是将目录设置为775并将文件设置为664的另一种方法.
find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)
Run Code Online (Sandbox Code Playgroud)
它可能看起来很长,但它有三个原因很酷:
请注意,我还没有确认此解决方案与仅使用两个find命令之间的性能差异(如果有)(如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 direc?
tories into /root/suid.txt and large files into /root/big.txt.
Run Code Online (Sandbox Code Playgroud)
干杯
小智 9
您希望确保适当的文件和目录是chmoded /权限.对于您想要的所有目录
find /opt/lampp/htdocs -type d -exec chmod 711 {} \;
Run Code Online (Sandbox Code Playgroud)
对于所有图像,JavaScript,CSS,HTML ......好吧,你不应该执行它们.所以使用
chmod 644 img/* js/* html/*
Run Code Online (Sandbox Code Playgroud)
但是对于所有逻辑代码(例如PHP代码),您应该设置权限,以便用户无法看到该代码:
chmod 600 file
Run Code Online (Sandbox Code Playgroud)
小智 8
对于Mac OS X 10.7(Lion),它是:
chmod -R 755 /directory
Run Code Online (Sandbox Code Playgroud)
是的,正如所有其他人所说,做这件事时要小心.
查找文件和申请文件有两个答案chmod
。第一个是find
文件并chmod
在找到时应用(如@WombleGoneBad 所建议的那样)。
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
Run Code Online (Sandbox Code Playgroud)
第二种解决方案是使用find
命令生成所有文件的列表并将此列表提供给chmod
命令(如@lamgesh 所建议的那样)。
chmod 755 $(find /path/to/base/dir -type d)
Run Code Online (Sandbox Code Playgroud)
只要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)
否则使用小智 6
我认为Adam正在询问如何为所有在/opt/lampp/htdocs
目录上运行的进程更改umask值.
用户文件创建模式掩码(umask)用于确定新创建文件的文件权限.它可用于控制新文件的默认文件权限.
因此,如果您将使用某种ftp程序上传文件/opt/lampp/htdocs
,则需要配置您的ftp服务器以使用您想要的umask.
如果文件/目录例如由php创建,则需要修改php代码
<?php
umask(0022);
// other code
?>
Run Code Online (Sandbox Code Playgroud)
如果要从bash会话创建新文件/文件夹,可以在shell配置文件中设置umask值〜/ .bashrc或者可以为所有用户设置umask /etc/bashrc
或/etc/profile
file.将以下内容添加到文件中: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
Run Code Online (Sandbox Code Playgroud)
要更改已创建文件的权限,您可以使用find.希望这可以帮助.
对于仍在为权限问题苦苦挣扎的任何人,请cd ..
从项目的根目录向上导航一个目录级别,然后将您自己(用户)添加到该目录并授予编辑其中所有内容的权限(在 Mac OS 上测试)。
为此,您将运行此命令(首选):
sudo chown -R username: foldername .*
Run Code Online (Sandbox Code Playgroud)
注意:对于当前未保存的更改,可能需要先重新启动代码编辑器才能保存而无需输入密码。
另外,请记住,您可以tab
在键入用户名和文件夹时按以查看选项,以方便您自己。
或者干脆:
sudo chmod -R 755 foldername
Run Code Online (Sandbox Code Playgroud)
但如上所述,需要小心使用第二种方法。
归档时间: |
|
查看次数: |
3860071 次 |
最近记录: |