¿Cómo puedo revertir un chmod en el directorio etc?

9

Accidentalmente ejecuté el siguiente comando en el directorio etc.

sudo chmod -R 700 /etc

Sé que he hecho algo muy mal. Mi terminal ahora imprime:

I have no name!@ubuntu: /$

¿Cómo puedo revertir mi directorio etc a su estado anterior?

Intenté cambiar los permisos pero ahora falla. Además, sería muy útil si alguien puede explicar qué fue lo que realmente salió mal cuando ejecuté ese comando, etc. Solo fueron permisos de archivos. Entonces, ¿por qué todo el sistema parece completamente explotado? ¿Por qué no funcionan las contraseñas de inicio de sesión ahora? Sé que hay un archivo en el directorio etc. que tiene que ver con los usuarios. Pero, ¿cómo los permisos cambiantes pusieron en peligro todo? Algunos detalles técnicos sobre esto serían muy útiles.

Rafay
fuente
3
Necesita una lista de directorio ( ls -laR) de otro sistema en ejecución. ¿Qué versión es la tuya? Puede cambiar los directorios a 755 y los archivos a 644, pero algunos deben tener modos diferentes (como / etc / shadow, por ejemplo).
ott--
44
Cuando escribe sudo, debe leerlo en su cabeza como "Me estoy otorgando el máximo poder sobre mi sistema sin red de seguridad, ¿estoy seguro de saber lo que estoy haciendo? ¿Estoy seguro de que escribí lo que quise decir?" antes de presionar regresar.
msw
1
Con un sistema de trabajo, puede usar find /etc -type d ! -perm 755 -exec ls -ld {} \;y find etc -type f ! -perm -644 -exec ls -l {} \;buscar directorios y archivos con modos no estándar. En Debian son solo 2 directorios y 39 archivos
ott--
"Pero, ¿cómo los permisos cambiantes pusieron en peligro todo?" - Algunas cosas que necesitaban leer esos archivos ahora no tienen permiso para leer esos archivos.
user253751

Respuestas:

15

Una cosa salió mal: el uso de sudocon ese comando. El -Rinterruptor le dice chmoda establecer recursivamente los permisos para ese directorio, que es, en todos los casos, una acción no recomendada (deberíamos llamarla herejía) si no sabe qué está haciendo (una vez que esto me sucedió, yo no emitió el comando pero lo hizo una GUI defectuosa y mi sistema se conectó).

Solo eran permisos de archivo. Entonces, ¿por qué todo el sistema parece completamente explotado?

GNU / Linux es muy sensible a los permisos de archivos, ya que se creó teniendo en cuenta la estabilidad y la seguridad . Lo mismo se aplica a la mayoría de los programas que se ejecutan en GNU / Linux (es decir, apache2elimina los privilegios y usos de la raíz www-data, o un usuario similar, y su 700permiso no le permitiría leer / escribir sus propios archivos).

¿Por qué no funcionan las contraseñas de inicio de sesión ahora?

Como ya mencionó, las contraseñas de inicio de sesión se almacenan en un archivo /etc/passwdy solo la raíz (supongo que no cambió eso) puede leerlo, pero la solicitud de inicio de sesión (o inicio de sesión GUI) utiliza una cuenta sin privilegios, por lo tanto, no puede leer el archivo.

Pero, ¿cómo los permisos cambiantes pusieron en peligro todo?

Igual que se dijo anteriormente, Linux es muy sensible a los permisos de archivos. Algunos programas incluso comprueban los permisos de sus archivos de configuración y, si no se esperan, no se ejecutarán en absoluto.

¿Cómo puedo revertir mi directorio etc a su estado anterior?

Si usa una distribución basada en RPM, esto se puede hacer usando el rpm --setpermscomando, sería revertir dolorosamente uno por uno los paquetes, en un sistema similar a Debian apt-get --reinstall installes su amigo. Puede haber otras soluciones disponibles, pero necesitaría un sistema de trabajo para ello.

Braiam
fuente
5

Veamos, lo que ha hecho es establecer permisos en todo el directorio / etc como lectura / escritura / ejecución permitida solo para el propietario del archivo / directorio, denegado para todos los demás. Si está confundido por los permisos de archivo, puede leer más en Wikipedia: permisos UNIX tradicionales .

La razón por la que ha explotado su sistema es porque muchos procesos ya no pueden leer su configuración, ya que no pueden acceder a / etc. No será fácil recuperar todo el directorio / etc a su estado anterior. Cómo hacerlo dependerá de su distribución, pero básicamente significa reinstalar cada paquete que contenga cualquier archivo dentro de / etc.

Como una ayuda rápida de banda para poder usar el sistema, para arreglarlo correctamente (reinstalando todos los paquetes con contenido dentro de / etc, como se indicó anteriormente), puede hacer lo siguiente:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

Con esas dos líneas, establecerá permisos liberales en todos los directorios / etc, con lectura / escritura permitidas para el propietario y el grupo, y lectura permitida para todos los demás. La razón de los dos chmod es establecer el bit de ejecución solo en directorios. Algunos procesos se quejarán o fallarán, incluso cualquier ejecutable dentro de / etc, pero debería poder realizar la reinstalación que describí anteriormente.

Tenga en cuenta que hasta que recupere los permisos originales, su sistema estará, al menos, en un estado inseguro.

Javier Marcet
fuente
2
Además, algunos programas no funcionarán; SSH, por ejemplo, requiere permisos restrictivos en ciertos archivos. /etc/sudoerses otro.
Mel Boyce
1
¡Pero algunos archivos /etcno deben ser legibles para el mundo nunca! Restaurar desde copias de seguridad, es por eso que las tiene (o es por eso que la gente le ha estado instando a hacer copias de seguridad).
tripleee
0

700 ha eliminado el acceso a muchos archivos para grupos y usuarios mundiales (por ejemplo, los archivos ahora tienen rwx------permisos). Por ejemplo, todos los usuarios deben poder leer /etc/passwd. Con su configuración, solo la raíz puede leer ahora /etc/passwd. Muchas cosas se romperán si rompe los permisos de los archivos de /etc/manera impredecible.

Podría intentar y reconstruir los permisos (suponiendo que aún pueda cambiar a root) en función de un servidor que funcione, pero eso es propenso a errores.

Sugiero restaurar /etc/desde una copia de seguridad si tiene una (asegurándose de que la restauración restablezca los permisos o, si su solución de copia de seguridad lo admite, restaure solo los permisos).

OchoBitTony
fuente