Es posible regresar de una situación tan desordenada , sin reinstalar el sistema. Bueno, más exactamente ejecutando un nuevo sistema nuevo, ya sea desde una memoria USB o en una caja Virutal (más o menos) si tiene un sistema de arranque dual.
Volví a ejecutar el mismo tipo de problema (algún error en un script que estaba escribiendo) y lo resolví, pero debes pedir la ayuda de algún experto. ¡Sé muy cauteloso!
Primero, mi situación fue más fácil de resolver porque tenía un sistema de arranque dual (ubuntu y mi antigua instalación de fedora), pero ejecutar el sistema para una llave USB (o tal vez un CD / DVD) debería hacer lo mismo.
MPOINT = / mount / ubuntu
Primero monté mis sistemas de archivos de esta manera (no olvides crear los puntos de montaje): mount / dev / ubuntu / root $ MPOINT mount / dev / ubuntu / home $ MPOINT / home
Luego ejecuté el siguiente comando (mi problema era solo en unos pocos directorios críticos) para copiar los permisos del sistema en ejecución al desordenado (de hecho, en mi caso, instalé un sistema ubuntu en Virtual Box bajo fedora y obtuve los permisos allí):
find / etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n" {} \; > /tmp/restoreperms.sh
Y luego ejecuté el script restoreperms.sh.
Pude volver a arrancar en ubuntu.
El contenido de restoreperms.sh será algo así como:
(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)
No lo probé, pero también debe funcionar para propietarios y grupos de propietarios. Algo como:
find / etc / usr / bin -exec stat --format 'chown% U:% G $ {MPOINT}% n' {} \; > /tmp/restoreperms.sh^
(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)
Por supuesto, debe tener cuidado aquí, que el UID y el GID son iguales en ambos sistemas, pero para los usuarios y grupos relacionados con el sistema, esto no debería ser un problema.
Rk:
Una cosa importante para esto es mantener un disco de instalación sincronizado con la versión que está utilizando, o al menos trabajar con la versión actual de ubuntu. Ahora, tengo estos comandos en un cronjob, ejecutándome todos los días (podrían ser semanas) para mantener esa información. Hará la solución más fácil la próxima vez pero, por supuesto, como tengo esto ahora, nunca volverá a suceder. ;-) Algo como esto:
0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2
0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2
EDITAR: para admitir enlaces, el comando combinado es:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}