Linux chmod由root所有,权限为220

Linux chmod由root所有,权限为220,linux,unix,file-permissions,Linux,Unix,File Permissions,如果chmod具有root:root的用户:组权限,并且具有220的权限,则root用户可以恢复执行权限吗 一般来说,从Unix体系结构的角度来看,这些鸡蛋问题应该如何解决 我一直认为,root用户可以做任何事情,甚至可以执行具有000权限的文件 一般来说,从Unix体系结构的角度来看,这些鸡蛋问题应该如何解决 如果您通过更改chmod的权限(无论出于何种原因)来破坏chmod,您仍然可以通过调用底层操作系统挂钩来修复它。例如: vagrant@vagrant-base-tfisher:~$ s

如果
chmod
具有
root:root
的用户:组权限,并且具有
220
的权限,则root用户可以恢复执行权限吗

一般来说,从Unix体系结构的角度来看,这些鸡蛋问题应该如何解决

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

一般来说,从Unix体系结构的角度来看,这些鸡蛋问题应该如何解决

如果您通过更改chmod的权限(无论出于何种原因)来破坏chmod,您仍然可以通过调用底层操作系统挂钩来修复它。例如:

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

是的,有一种非常简单的方法可以从根目录中恢复,只需使用基本工具:

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个权限,
cat
chmod
的内容复制到其中并不会改变权限。

啊,是的,这是一个最简单的解决方案,我想看下一条评论,关于隐藏在chmod命令下的调用。谢谢你的回答)。太好了!这就是我想知道的。非常感谢。没问题。请记住,虽然我用ruby编写了这个示例,但使用其他linux内置命令(如
cat
sh
)也同样简单。