Y ahora no puedo volver a modificarlo ni usar ninguno de mis otros programas del sistema. Afortunadamente, esto está en una máquina virtual con la que he estado jugando, pero ¿hay alguna forma de resolver esto? El sistema es Ubuntu Server 12.10.
He intentado reiniciar en modo de recuperación, desafortunadamente ahora no puedo iniciar en absoluto en el sistema debido a los permisos que no otorgan algunos programas después de la disponibilidad de inicio inferior para ejecutar, el sistema simplemente se bloquea. Esto es lo que veo:
Begin: Running /scripts/init-bottom ... done
[ 37.062059] init: Failed to spawn friendly-recovery pre-start process: unable to execute: Permission denied
[ 37.084744] init: Failed to spawn friendly-recovery post-stop process: unable to execute: Permission denied
[ 37.101333] init: plymouth main process (220) killed by ABRT signal
Después de esto, la computadora se cuelga.
/bin
Está chmoded o los archivos en/bin
o ambos?Respuestas:
Inicie otro sistema operativo limpio, monte el sistema de archivos y corrija los permisos.
A medida que su sistema de archivos roto vive en una VM, debe tener su sistema host disponible y funcionando. Monta tu sistema de archivos roto allí y arréglalo.
En el caso de QEMU / KVM, por ejemplo, puede montar el sistema de archivos usando nbd .
fuente
/boot
partición de esa VM. Intenta localizar el sistema de archivos raíz. Si está en LVM, ejecútelovgchange -ay
después de conectarlonbd
para activarlo.Aun así
root
, no puede ejecutar archivos que no tengan establecido unx
bit de permiso. Sin embargo, lo que puede hacer es invocarlold.so
(siempre que sean ejecutables vinculados dinámicamente):Utilice el que coincida con la arquitectura del
chmod
ejecutable. En mi caso elx86_64
uno:O llamar a algo
/usr/bin
o en otro lugar para hacer elchmod
comoperl
:Tenga cuidado al restaurar permisos de que algunos archivos tienen me
/bin
gustamount
osu
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. Sininitramfs
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ámetrobreak=bottom
obreak=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 elroot=
parámetro dellinux
comando: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í:Una vez arrancado, corrija los permisos de los archivos que no deben tener 755 permisos comparándolos con otro sistema.
Fijación ejecutando
python
comoinit
:En
grub
, editar la entrada de inicio, esta vez a mantener elroot=
parámetro, cambiarro
arw
y añadir uninit=/usr/bin/python
:Luego, en el indicador de Python:
Nuevamente, una vez arrancado, corrija los permisos de los archivos que no deben tener 755 permisos comparándolos con otro sistema.
fuente
already try to reboot
caso: arranque en un CD en vivo, monte rw la partición que contiene / bin, ychmod 755 /bin
(y archivos dentro si también se cambiaron). Pero luego, verifique que todos los archivos tengan el permiso correcto (dependiendo de su distribución de Linux, probablemente pueda verificar / bin con el paquete original)ld.so
, tal vez en algún directorio como/lib/x86_64-linux-gnu
.os.execl
yexec
son para ejecutar, no bifurcan un proceso, simplemente reemplazan el ejecutable en el mismo proceso , por lo que todo se hace en pid 1. El proceso 1 se ejecuta inicialmentepython
, luegosh
, luegoinit
.Utiliza python :)
Eso no debería necesitar nada
/bin
para hacer su trabajo. Obviamente, no he probado esto ...fuente
chmod
es una llamada al sistema, llamada por elchmod
programa y también por lachmod
función en python / perl / ruby, etc. Sinchmod
embargo, los shells sí llaman a la utilidad.chmod
incorporado. Ese es el tipo de situación en la que las conchassash
son útiles. Está estáticamente vinculado y tiene la mayoría de los comandos de recuperación comochmod
incorporado (por lo que no se basa en nada más). Por lo general, se sentaría/sbin
aunque no dañaría tener copias adicionales en todos los sistemas de archivos, y se puede usar en combinación con memlockd.zsh
yksh93
tiene un chmod incorporado (aunque no está habilitado de forma predeterminada).Puedes probar
sudo chmod -R 744 /path-to-your-system/bin
desde una distribución en vivo.fuente