为什么我不能像之前那样 chmod 这些文件?

为什么我不能像之前那样 chmod 这些文件?

我试图为文件夹中的 sh 文件添加执行权限。为此,我错误地使用了:

find . -print0 -iname '*.sh' | xargs -0 chmod -v 744

输出是:

mode of `.' changed from 0755 (rwxr-xr-x) to 0744 (rwxr--r--)
mode of `./codis.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ne fil.sw' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swo' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./new file' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./ezik.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)
mode of `./.whois1.sh.swp' changed from 0600 (rw-------) to 0744 (rwxr--r--)
mode of `./whois1.sh' retained as 0744 (rwxr--r--)

我现在知道 find 部分的正确用法是

find . -iname '*.sh' -print0

所以我创建了另一个像这样的发现:

find . \! -iname '*.sh' -print0 | xargs -0 chmod 600

这样我就可以设置非 sh 文件的权限(是的,我看到有些文件有 644 权限,而不是 600,但现在没关系)。该命令的输出是:

chmod: cannot access `./ne fil.sw': Permission denied
chmod: cannot access `./.whois1.sh.swo': Permission denied
chmod: cannot access `./new file': Permission denied
chmod: cannot access `./.whois1.sh.swp': Permission denied

我也用过sudo,但是还是没啥效果……

我发现我没有正确理解权限...如果我理解正确,我也需要x目录的权限direc才能在所述目录中执行命令。

答案1

您的findcmd 还会找到当前目录“ .”。然后,该目录的权限将被设置为600,因此您将失去访问该目录中文件的权限。

所以cd ..chmod 700说目录,然后运行你的恢复find,它现在排除当前目录,如下所示:

find . \! -path . \! -iname '*.sh' -print0 | xargs -0 chmod 600

相关内容