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.

/binEstá chmoded o los archivos en/bino 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
/bootpartición de esa VM. Intenta localizar el sistema de archivos raíz. Si está en LVM, ejecútelovgchange -aydespués de conectarlonbdpara activarlo.Aun así
root, no puede ejecutar archivos que no tengan establecido unxbit 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
chmodejecutable. En mi caso elx86_64uno:O llamar a algo
/usr/bino en otro lugar para hacer elchmodcomoperl:Tenga cuidado al restaurar permisos de que algunos archivos tienen me
/bingustamountosuestá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
perlold.sono. Sininitramfsembargo, 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=bottomobreak=initkernel 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 dellinuxcomando: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
pythoncomoinit:En
grub, editar la entrada de inicio, esta vez a mantener elroot=parámetro, cambiarroarwy 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 rebootcaso: 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.execlyexecson 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
/binpara hacer su trabajo. Obviamente, no he probado esto ...fuente
chmodes una llamada al sistema, llamada por elchmodprograma y también por lachmodfunción en python / perl / ruby, etc. Sinchmodembargo, los shells sí llaman a la utilidad.chmodincorporado. Ese es el tipo de situación en la que las conchassashson útiles. Está estáticamente vinculado y tiene la mayoría de los comandos de recuperación comochmodincorporado (por lo que no se basa en nada más). Por lo general, se sentaría/sbinaunque no dañaría tener copias adicionales en todos los sistemas de archivos, y se puede usar en combinación con memlockd.zshyksh93tiene un chmod incorporado (aunque no está habilitado de forma predeterminada).Puedes probar
sudo chmod -R 744 /path-to-your-system/bindesde una distribución en vivo.fuente