Mesmo assim root, você não pode executar arquivos sem xbits de permissão definidos. O que você pode fazer é chamá ld.so-lo (desde que sejam executáveis vinculados dinamicamente):
$ echo /lib/*/ld*.so
/lib/i386-linux-gnu/ld-2.27.so /lib/x86_64-linux-gnu/ld-2.27.so
Use aquele que corresponde à arquitetura do chmodexecutável. No meu caso, o seguinte x86_64:
sudo /lib/x86_64-linux-gnu/ld-2.27.so /bin/chmod 755 /bin /bin/chmod
Ou ligue para algo em /usr/binou em outro lugar para fazer o chmodcomo perl:
sudo perl -e 'chmod 0755, "/bin", "/bin/chmod"
Cuidado ao restaurar permissões que alguns arquivos /bingostam mountou sudevem ter permissões diferentes de 0755.
Se você reiniciou, no entanto, talvez não seja capaz de chegar ao ponto em que pode executar perlou, no ld.soentanto. Você pode consertar as coisas do initramfsporém (passe um diretório raiz incorreto para obter um shell de recuperação no initramfs; veja também o parâmetro break=bottomou break=initkernel no Debian, para o initramfs fornecer um shell depois que o sistema de arquivos raiz foi montado (somente leitura) Apesar)). Ou inicialize sua VM a partir de uma imagem de CD ativo ou corrija montando o sistema de arquivos da VM no host, conforme sugerido por outros.
Corrigindo a maneira initramfs:
Em grub, edite a entrada de inicialização e remova o root=parâmetro do linuxcomando:
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-Xpara inicializar. O initramfs do Ubuntu não encontra o sistema de arquivos raiz, então inicie uma recuperação sh. Em seguida, monte o sistema de arquivos raiz (no meu caso /dev/vdb, adapte-se à sua máquina) e corrija as coisas lá:
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
Depois de inicializado, corrija as permissões dos arquivos que não devem ter 755 permissões comparando com outro sistema.
Correção executando pythoncomo init:
Em grub, edite a entrada de inicialização, desta vez mantenha o root=parâmetro, altere ropara rwe adicione um 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
Em seguida, no prompt do 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
Novamente, uma vez inicializado, corrija as permissões dos arquivos que não devem ter 755 permissões comparando com outro sistema.
/binvocê chmoded ou os arquivos/binou ambos?