chmod由root拥有,权限为220

如果chmod具有root:root用户:组权限,并且拥有220的权限,root用户是否可以恢复执行权限?

一般来说,如何从Unix架构的angular度来解决这些鸡蛋问题呢?

我一直认为,root用户可以做所有事情,甚至可以执行具有000权限的文件。

一般来说,如何从Unix架构的角度来解决这些鸡蛋问题呢?

如果你通过改变它的权限(不管什么原因)来破坏你的chmod,你仍然可以通过调用底层的OS钩子来修复它。 例如:

 vagrant@vagrant-base-tfisher:~$ sudo -i root@vagrant-base-tfisher:~# which chmod /bin/chmod root@vagrant-base-tfisher:~# chown 220 /bin/chmod root@vagrant-base-tfisher:~# ls -la /bin/chmod -rwxr-xr-x 1 220 root 51760 Apr 1 2012 /bin/chmod root@vagrant-base-tfisher:~# chmod 220 /bin/chmod root@vagrant-base-tfisher:~# ls -la /bin/chmod --w--w---- 1 root root 51760 Apr 1 2012 /bin/chmod root@vagrant-base-tfisher:~# chmod 755 /bin/chmod -bash: /bin/chmod: Permission denied root@vagrant-base-tfisher:~# irb irb(main):002:0> File.chmod(0755,'/bin/chmod') => 1 irb(main):003:0> quit root@vagrant-base-tfisher:~# ls -la /bin/chmod -rwxr-xr-x 1 root root 51760 Apr 1 2012 /bin/chmod 

是的,有一个非常简单的方法可以只使用基本工具从root恢复:

 mv /bin/chmod /bin/chmod.wrongperms cp -p /bin/cat /bin/chmod cat /bin/chmod.wrongperms >! /bin/chmod rm /bin/chmod.wrongperms 

使用-p复制另一个可执行文件(例如cat ),保留755权限,并将chmod的内容记录到其中,但不会更改权限。