我有一个目录,其中包含许多子目录和文件,我想通过以下方式更改其中文件的权限。基本上,我想更好地保护目录。
首先,所有目录应该只是递归地 chmod 到 750,但仅限于目录。
对于文件:如果一个文件有+x为主用户,则应改为750,否则应改为640(意思是无+x,r/w为主用户,r为组,无权限对于世界)。
这应该适用于全部所有目录中的文件。
有没有办法做到这一点?
答案1
X
中的(大写 X)模式字符完成chmod
了困难的一点:它允许您仅在某些用户已经存在的情况下添加执行权限。
chmod -R g+rX-w,o= /path/to/directory
(如果需要,添加用户权限更改。)
答案2
我认为“主用户”是指文件所有者? Find 可能适合你。假设 /dir 是您正在执行所有操作的目录:
# find /dir -type d -exec chmod 750 {} \;
# find /dir -type f -perm -u-x -exec chmod 640 {} \;
# find /dir -type f -perm -u+x -exec chmod 750 {} \;
第一个将所有目录更改为 750。第二个将没有所有者可执行权限的文件更改为 640。第三个将用户的带有 +x 的文件更改为 750。这些可能可以组合成一个 find 命令,但这需要比我现在需要花的时间多一点。