Estaba tratando de correr chmod -R 777 ./
pero terminé escribiendo chmod -R 777 /
y configurando 777
toda mi máquina. ¿Qué puede ir mal? ¿Cómo puedo arreglarlo?
Estaba tratando de correr chmod -R 777 ./
pero terminé escribiendo chmod -R 777 /
y configurando 777
toda mi máquina. ¿Qué puede ir mal? ¿Cómo puedo arreglarlo?
Respuestas:
¿Problemas? Si mucho. ¿Se puede arreglar? Seguro. ¿Más rápido que reinstalar? Probablemente no.
Mi recomendación es reinstalar. Mantenga una copia de seguridad del sistema existente y restaure la lista de paquetes y el contenido de los archivos en /etc
y /var
. Para /usr/local
, probablemente pueda restaurar los permisos manualmente. Para /home
y /srv
, deberá restaurar los permisos de las copias de seguridad.
Si este es un sistema con múltiples usuarios locales, tenga en cuenta que hacer que algunos archivos sean legibles en todo el mundo ha revelado algunas cosas que deberían haber permanecido confidenciales.
Si realmente desea intentar reparar (más un ejercicio de aprendizaje que una ruta de recuperación práctica), primero restaure los permisos de algunos archivos. Tenga en cuenta que si bien la mayoría de los archivos ahora están demasiado abiertos, a algunos les faltan los bits setuid necesarios . Estos son los pasos que debe seguir antes que nada. Tenga en cuenta que esta no es una lista exhaustiva, solo un intento de hacer que el sistema apenas funcione.
chmod -R go-w /
chmod 440 /etc/sudoers
chmod 640 /etc/shadow /etc/gshadow
chmod 600 /etc/ssh/*_key /etc/ssh*key # whichever matches
chmod 710 /etc/ssl/private /etc/cups/ssl
chmod 1777 /tmp /var/tmp /var/lock
chmod 4755 /bin/su /usr/bin/passwd /usr/bin/sudo /usr/bin/sudoedit
chmod 2755 /var/mail /var/spool/mail
Luego, deberá restaurar todos los permisos en todas partes. Para los archivos bajo /usr
, puede reinstalar los paquetes con uno de los siguientes comandos, según su distribución:
apt-get --reinstall install
pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman
, suponiendo que esté en un Live CD y que su instalación de Arch esté montada en /newarch
.Para los archivos bajo /etc
y /var
, que no funcionarán, se dejarán muchos de ellos como están: tendrá que replicar los permisos en una instalación que funcione. Para los archivos bajo /srv
y /home
, de todos modos tendrá que restaurar desde copias de seguridad. Como puede ver, también podría reinstalar.
Es posible que no lo note al principio, pero muchas cosas pueden y saldrán mal. El principal problema es que todo el modelo de seguridad para todo el sistema está roto. Es como tener un cuerpo sin piel, órganos en el aire. Seguramente se infectará porque no debe funcionar así. Incluso si parece funcionar durante unos minutos, debe limpiar esto.
La mejor manera sería comenzar desde cero. De esta manera, reducirá en gran medida su riesgo y le dará un resultado más limpio en menos tiempo. Si tiene copias de seguridad adecuadas, esto no debería ser demasiado probar una experiencia.
Si intenta limpiarlo, la forma principal sería decirle al administrador de paquetes de su distribución que reinstale TODO en el sistema, incluida la sobrescritura de los archivos de configuración. Luego use el sistema de verificación que tenga para revisarlos y asegúrese de que ninguno de ellos esté marcado como que tiene archivos con permisos fuera de lo común. Luego, trabaje en cosas como los directorios de inicio de los usuarios y restablezca todo a permisos sanos en masa, luego trabaje en las pocas cosas que deberían tener permisos especiales (como archivos de claves ssh). Por último, haga una búsqueda completa del sistema para todo lo marcado como 777 y revise la lista (debería ser pequeño si ha realizado los otros pasos a fondo) y revise uno por uno asegurándose de que estén como están.
SOLUCIÓN: PROBÉ ESTO EN CENTOS
Este chico salvó mi trabajo! (Necesitas acceder de alguna manera)
http://www.adminlinux.org/2009/07/how-to-restore-default-system.html
1) Para restablecer uids y gids en archivos y directorios:
for u in $(rpm -qa); do rpm --setugids $u; done
2) A los permisos en archivos y directorios
for p in $(rpm -qa); do rpm --setperms $p; done
luego cambie manualmente los permisos a estos archivos:
# ll /etc/ssh/
# chmod 600 /etc/ssh/ssh_host_rsa_key
# chmod 600 /etc/ssh/ssh_host_dsa_key
# service sshd restart
Algunos programas conscientes de la seguridad no se iniciarán si ciertos archivos tienen permisos demasiado "flojos". Como dijo @ceving, sshd
es lo más típico de esto.
Lo principal que puede salir mal es que ahora cualquier usuario puede abrir, leer y escribir cualquier archivo en su sistema. Las dos razones por las que esto es malo son: A) si un usuario malintencionado obtiene el control de su sistema, ya sea mediante una explotación o una configuración incorrecta, puede modificar cualquier cosa en su sistema ahora, y B) puede eliminar todo lo que desee, incluso si usted no es root, por lo que acaba de negar la mayoría de las protecciones de no ejecutarse como root.
Si no hizo una copia de seguridad de los permisos de antemano, se encuentra en una situación difícil. Es posible que pueda crear un script que "obtenga" una lista de permisos de un sistema recién instalado y luego "aplique" esos a todo en su sistema. Sin embargo, no tengo un guión tan útil.
rm -rf /
como tu usuario normal ahora, harás que tu sistema se detenga.