![为什么我的 chmod 没有按预期工作?](https://linux22.com/image/111210/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20chmod%20%E6%B2%A1%E6%9C%89%E6%8C%89%E9%A2%84%E6%9C%9F%E5%B7%A5%E4%BD%9C%EF%BC%9F%20.png)
我想将文件夹权限设置为 555,将文件权限设置为 554,所以我尝试了以下操作chmod
:
sudo chmod -R -v ug=rx,o=r,a+X mydir/
我认为这会将user
和group
权限设置为r-x
和others
权限r--
,但由于只有a+X
文件夹会收到r-x
该others
权限,但文件将保留r--
。
但这不起作用,它将所有文件和文件夹设置为 555,即使我之前将所有文件夹和文件设置为 444 以确保x
任何地方都没有任何权限。
为什么这个chmod
命令不能按我的预期工作?
答案1
好的,我找到了答案在维基百科上:
当它解释该X
选项时:
...它将执行权限应用于目录,无论其当前权限如何,并将执行权限应用于已经具有的文件至少已设置一个执行权限位(所有者、团体或其他)...
我真的不明白为什么有人会想要x
对任何用户(所有者、组或其他)应用权限,如果另一个用户已经拥有此权限......或者换句话说,如果有的话,请授予others
执行权限,但有人看到owner
这是最好的默认行为,这就是它的工作原理,想想吧。
我将代码更改为:
chmod -R ugo=r,a+X,ug+x
由于顺序很重要,现在它会按预期运行。