我有一个站点(许多文件和文件夹),我需要将权限更改为默认值。 文件:644和文件夹755。现在我有666个文件和777个文件夹。 我无法手动执行,因为我有许多文件夹,包括文件夹和文件等。
我的操作系统是Centos所以我可以运行bash shell脚本。
如何自动更改这些权限? 任何代码都会受到欢迎。
答案 0 :(得分:3)
您可以将解决方案合并到一个find
命令中。这应该快两倍,因为它不必两次走文件系统。
find /path/path -type d -exec chmod 755 {} + -o -type f -exec chmod 644 {} +
使用+
而不是\;
结束命令也更有效。它不是为每个文件单独运行chmod
命令,而是将所有文件名捆绑成一个单个执行的长参数(尽管如果参数对于单个执行来说太长,它将以最佳方式将它们拆分)。
如果您想自动执行此操作,可以将其放入定期运行的cron
作业中。
答案 1 :(得分:1)
找到解决方案!只需运行以下命令:
find /path/path -type d -exec chmod 755 {} \;
find /path/path/ -type f -exec chmod 644 {} \;
答案 2 :(得分:1)
Gnu chmod
的一个记录不充分但非常有用的功能是您可以使用符号权限X
代替x
。 x
只表示可执行权限,而X
表示可执行权限,如果(a)目标是目录或(b)目标是文件并且设置了其中一个可执行权限。
这可以让您执行以下操作:
chmod -R u=rwX,go=rX /path/to/directory
将以递归方式(-R
)将所有目录和可执行文件的权限设置为rwxr-xr-x
,将所有常规文件的权限设置为rwxr--r--
(分别为0755和0644)。
另一个例子:假设你有一些带有可执行文件的项目,目前只有你可以访问它们。 (因此权限目前为rwx------
或rw-------
)。现在,您希望将它们可读,可搜索(对于目录)和可执行(对于可执行文件)给组成员pundits
:
chgrp -R pundits /path/to/the/project
chmod -R g+rX /path/to/the/project
现在,目录和可执行文件为rwxr-x---
,其他文件为rwxr-----
(并且所有组都已更改为pundits
)。
答案 3 :(得分:1)
我们可以设置一个cron来完成这项任务。
(make sure the /root/permission.sh should be 755)
# cat /root/permission.sh
#!/bin/bash
/bin/find /path/to/change -type f -not -perm 644 -exec chmod 644 {} \; >/dev/null 2>&1
/bin/find /path/to/change -type d -not -perm 755 -exec chmod 755 {} \; >/dev/null 2>&1
每5分钟一次:
0 */5 * * * /root/permission.sh