自动更改centos中的权限

时间:2014-09-14 02:29:16

标签: linux bash permissions

我有一个站点(许多文件和文件夹),我需要将权限更改为默认值。 文件:644和文件夹755。现在我有666个文件和777个文件夹。 我无法手动执行,因为我有许多文件夹,包括文件夹和文件等。

我的操作系统是Centos所以我可以运行bash shell脚本。

如何自动更改这些权限? 任何代码都会受到欢迎。

4 个答案:

答案 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代替xx只表示可执行权限,而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