Mesmo assim root
, você não pode executar arquivos sem x
bits 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 chmod
executá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/bin
ou em outro lugar para fazer o chmod
como perl
:
sudo perl -e 'chmod 0755, "/bin", "/bin/chmod"
Cuidado ao restaurar permissões que alguns arquivos /bin
gostam mount
ou su
devem ter permissões diferentes de 0755.
Se você reiniciou, no entanto, talvez não seja capaz de chegar ao ponto em que pode executar perl
ou, no ld.so
entanto. Você pode consertar as coisas do initramfs
porém (passe um diretório raiz incorreto para obter um shell de recuperação no initramfs; veja também o parâmetro break=bottom
ou break=init
kernel 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 linux
comando:
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 python
como init
:
Em grub
, edite a entrada de inicialização, desta vez mantenha o root=
parâmetro, altere ro
para rw
e 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.
/bin
você chmoded ou os arquivos/bin
ou ambos?