Aun así root
, no puede ejecutar archivos que no tengan establecido un x
bit de permiso. Sin embargo, lo que puede hacer es invocarlo ld.so
(siempre que sean ejecutables vinculados dinámicamente):
$ echo /lib/*/ld*.so
/lib/i386-linux-gnu/ld-2.27.so /lib/x86_64-linux-gnu/ld-2.27.so
Utilice el que coincida con la arquitectura del chmod
ejecutable. En mi caso el x86_64
uno:
sudo /lib/x86_64-linux-gnu/ld-2.27.so /bin/chmod 755 /bin /bin/chmod
O llamar a algo /usr/bin
o en otro lugar para hacer el chmod
como perl
:
sudo perl -e 'chmod 0755, "/bin", "/bin/chmod"
Tenga cuidado al restaurar permisos de que algunos archivos tienen me /bin
gusta mount
o su
están destinados a tener permisos distintos de 0755.
Sin embargo, si ha reiniciado, es posible que no pueda llegar al punto en el que pueda ejecutar perl
old.so
no. Sin initramfs
embargo, puede arreglar las cosas (pase un directorio raíz incorrecto para obtener un shell de recuperación en initramfs; consulte también el parámetro break=bottom
o break=init
kernel en Debian, para que initramfs le proporcione un shell después de que se haya montado el sistema de archivos raíz (solo lectura) aunque)). O inicie su VM desde una imagen de CD en vivo, o corríjalo montando el sistema de archivos de VM en el host como otros sugirieron.
Arreglando la forma initramfs:
En grub
, edite la entrada de arranque y elimine el root=
parámetro del 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-Xarrancar. Los initramfs de Ubuntu no encontrarán el sistema de archivos raíz, así que comienza una recuperación sh
. Luego monte el sistema de archivos raíz (en mi caso /dev/vdb
, adáptese a su máquina) y arregle las cosas allí:
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
Una vez arrancado, corrija los permisos de los archivos que no deben tener 755 permisos comparándolos con otro sistema.
Fijación ejecutando python
como init
:
En grub
, editar la entrada de inicio, esta vez a mantener el root=
parámetro, cambiar ro
a rw
y añadir un 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
Luego, en el indicador de 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
Nuevamente, una vez arrancado, corrija los permisos de los archivos que no deben tener 755 permisos comparándolos con otro sistema.
/bin
Está chmoded o los archivos en/bin
o ambos?