即使使用root
,您也无法执行未x
设置权限位的文件。但是,您可以做的就是调用ld.so
它(只要它们是动态链接的可执行文件):
$ echo /lib/*/ld*.so
/lib/i386-linux-gnu/ld-2.27.so /lib/x86_64-linux-gnu/ld-2.27.so
使用与chmod
可执行文件体系结构匹配的文件。就我而言x86_64
:
sudo /lib/x86_64-linux-gnu/ld-2.27.so /bin/chmod 755 /bin /bin/chmod
或打电话给/usr/bin
其他地方的人做chmod
类似的事情perl
:
sudo perl -e 'chmod 0755, "/bin", "/bin/chmod"
还原权限时,请注意某些文件中的文件/bin
喜欢mount
或本su
应具有0755以外的权限。
如果您已经重新启动,但是,您可能不能够去那里,你可以运行点perl
或ld.so
虽然。您可以通过以下方式解决问题initramfs
:(传递错误的根目录以在initramfs中获得恢复外壳;另请参阅Debian上的break=bottom
or break=init
内核参数,有关initramfs在安装根文件系统后为您提供外壳的情况(只读虽然))。或从实时CD映像引导VM,或按照其他建议通过在主机上安装VM文件系统进行修复。
修复initramfs方法:
在中grub
,编辑启动项并root=
从linux
命令中删除参数:
setparams 'Ubuntu, with Linux 3.2.0-27-generic'
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod ext2
set root='(hd1)'
search --no-floppy --fs-uuid --set=root dc02b07c-88ef-4804-afe0-4f02db2\
94561
linux /boot/vmlinuz-3.2.0-27-generic
initrd /boot/initrd.img-3.2.0-27-generic
Ctrl-X启动。Ubuntu的initramfs找不到根文件系统,因此开始恢复sh
。然后挂载根文件系统(在我的情况下/dev/vdb
,请适应您的机器)并在那里进行修复:
Target filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.
BusyBox v1.18.5 (Ubuntu 1:1.18.5-1ubuntu4) built-in shell (ash)
Enter 'help' for a list of built-in commands.
(initramfs) mkdir /x
(initramfs) mount /dev/vdb /x
[ 48.430071] EXT3-fs (vdb): error: couldn't mount because of unsupported optio
nal features (240)
[ 48.477406] EXT4-fs (vdb): recovery complete
[ 48.477747] EXT4-fs (vdb): mounted filesystem with ordered data mode. Opts: (
null)
(initramfs) chmod -R 755 /x/bin
(initramfs) umount /x
(initramfs) reboot
一旦启动,请与另一个系统进行比较,以解决不具有755权限的文件的权限。
固定运行python
为init
:
在中grub
,编辑启动项,这次保留root=
参数,更改ro
为rw
并添加一个init=/usr/bin/python
:
setparams 'Ubuntu, with Linux 3.2.0-27-generic'
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod ext2
set root='(hd1)'
search --no-floppy --fs-uuid --set=root dc02b07c-88ef-4804-afe0-4f02db2\
94561
linux /boot/vmlinuz-3.2.0-27-generic root=UUID=dc02b07c-88ef-4804-afe0-\
4f02db294561 rw init=/usr/bin/python
initrd /boot/initrd.img-3.2.0-27-generic
然后,在python提示符下:
Begin: Running /scripts/init-bottom ... done.
Python 2.7.3 (default, Apr 20 2012, 22:39:59)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.chmod('/bin/sh',0755)
>>> os.chmod('/bin/chmod',0755)
>>> os.execl('/bin/sh','sh')
sh: 0: can't access tty; job control turned off
# chmod -R 0755 /bin
# mount -o remount,ro /
[ 100.704720] EXT4-fs (vdb): re-mounted. Opts: errors=remount-ro
# exec /sbin/init
再次,一旦启动,通过与另一个系统进行比较来修复不具有755权限的文件的权限。
/bin
chmoded还是其中的文件/bin
?