Recientemente escribí el comando
sudo chmod 777 -R /
después de eso algunas cosas como
sudo -i
No funcionan normalmente. Entonces, me pregunto si hay alguna forma de restablecer los permisos de la carpeta a su estado original.
Recientemente escribí el comando
sudo chmod 777 -R /
después de eso algunas cosas como
sudo -i
No funcionan normalmente. Entonces, me pregunto si hay alguna forma de restablecer los permisos de la carpeta a su estado original.
Respuestas:
Es posible regresar de esta situación desordenada.
Volví a ejecutar el mismo tipo de problema (algunos errores 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 operativo desde un CD / DVD o una llave USB 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 /sbin -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.
Editar:
Además, el propietario de la configuración anulará los indicadores SGID y SUID , lo que causa problemas extraños (por ejemplo, no podrá realizar sudo a menos que el permiso sea 4755). Debe y solo debe establecer permisos DESPUÉS de configurar los propietarios. GUARDE la información completa del permiso de archivo junto con la información del propietario.
Rk:
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
El comando correcto (combinado) es más parecido a:
`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`
Tenga en cuenta que es posible que se requiera un cuidado adicional para tener en cuenta los paréntesis en los nombres de archivo (en configuraciones regionales, por ejemplo) y que chown puede desactivar silenciosamente setuid y setgid bits establecidos por chmod. En el último caso, que rompería, digamos, / bin / su y / usr / bin / sudo, es posible que deba cambiar el orden de las cláusulas ejecutivas anteriores.
Después de recuperar sudo o seleccionar el modo de recuperación en el arranque
Es posible recuperar un sistema completo utilizando debsums que verifican la integridad y los permisos del archivo.
de la página del manual:
apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)
Reinstala paquetes con archivos modificados
o limitado a una ruta específica, por ejemplo /usr
:
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)
o limitado a un conjunto múltiple de ruta, por ejemplo: /sbin /etc /var
apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var ) | cut -d : -f 1 | sort -u)
chmod a-x /bin/ping
y debsums -c
no informaría ese archivo.
Siempre mira lo que corres como sudo.
Este hilo explica que puede volver a configurar manualmente algunos permisos, y un script allí ayuda con esto, pero aún así es un gran trabajo. En su lugar, siga los consejos en la banda de rodadura para guardar sus paquetes instalados (marcas) y reinstalar el sistema operativo, y aplicar sus marcas de paquetes guardados para recuperar sus aplicaciones.
Hasta donde yo sé, solo los paquetes del Sistema V y los RPM ofrecen un comando para reparar los permisos de los archivos. En el Sistema V (Solaris) es pkgchk, con RPM es rpm --setperms.
Desafortunadamente, no parece existir tal comando para los paquetes Debian / Ubuntu, pero podría estar equivocado aquí.
Pero incluso con la ayuda de estos comandos, no es una tarea trivial volver a poner su sistema en un estado sano, y al repararlo, puede causar nuevos daños fácilmente, si no tiene cuidado.
Aparte de lo que dijo Joseph, no eres el primero, y no serás el último en ingresar dicho comando. Pero la idea sola, cambiar los permisos de archivos a 777 en un sistema Unix, es una fuerte indicación de que no tienes mucha experiencia con este tipo de sistema. Lo mejor que puede hacer en esta situación es hacer una copia de seguridad de lo que necesitará nuevamente (directorios de inicio, archivos de configuración, archivos de correo) e intentar una instalación nueva.
Y debe tener mucho, mucho cuidado cuando restaure sus archivos de copia de seguridad dañados.
¡Buena suerte!
PD: ¿Me pregunto qué tipo de problema querías resolver?
No puedes deshacer una chmod
operación; al menos no en el sentido de retroceder a una configuración anterior, que es lo que requiere esta situación. Podría decirse que puede deshacer una chmod
operación chmod
devolviendo cada archivo y directorio a su modo original, pero no todos son iguales; determinar los modos originales es complicado (como se discutió en las otras respuestas).