GNU/Linux >> Tutoriales Linux >  >> Linux

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

Una cosa salió mal:el uso de sudo con ese comando. El -R interruptor le dice a chmod para establecer recursivamente los permisos a ese directorio, que es, en todos los casos, una acción no recomendada (debemos llamarlo:herejía) si no sabes lo que estás haciendo (una vez que me pasó esto, no lo sabía emitió el comando, pero una GUI defectuosa lo hizo y mi sistema se conectó).

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

GNU/Linux es muy sensible a los permisos de archivos, ya que fue construido con estabilidad y seguridad. en mente. Lo mismo se aplica a la mayoría de los programas que se ejecutan en GNU/Linux (es decir, apache2 elimina los privilegios de root y usa www-data , o usuario similar, y su 700 el permiso no le permitiría leer/escribir sus propios archivos).

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

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

Pero, ¿cómo arriesgó todo cambiar los permisos?

Igual que se dijo anteriormente, Linux es muy sensible a los permisos de archivos. Algunos programas incluso verifican 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, puede hacerlo usando el rpm --setperms comando, sería doloroso revertir uno por uno los paquetes, en un sistema similar a Debian apt-get --reinstall install es tu amigo. Es posible que haya otras soluciones disponibles, pero necesitarían un sistema que funcione.


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

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 curita rápida para poder usar el sistema, con el fin de arreglarlo correctamente (reinstalando todos los paquetes con contenido dentro de /etc, como se indicó anteriormente), podría hacer:

    # 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 todo el directorio /etc, con lectura/escritura permitida para el propietario y el grupo, y lectura permitida para todos los demás. El motivo de los dos chmod es establecer el bit de ejecución solo en dirs. Algunos procesos se quejarán o fallarán aún así, incluido cualquier ejecutable dentro de /etc, pero debería poder hacer la reinstalación que describí anteriormente.

Tenga en cuenta que hasta que recupere los permisos originales, su sistema estará, como mínimo, en un estado inseguro.


Linux
  1. ¿Cómo cambiar la configuración de la zona horaria en Linux?

  2. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  3. ¿La diferencia entre ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc...?

  4. ¿Cómo monitorear los archivos /etc/shadow y /etc/passwd en busca de cambios con Auditd?

  5. CentOS / RHEL:cómo recuperarse de un archivo /etc/passwd eliminado

La forma correcta de editar archivos /etc/passwd y /etc/group en Linux

¿Cómo se actualiza /etc/motd?

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

Cómo incluir todos los archivos de un directorio en el script de shell (/etc/init.d/iptables en este caso)

/etc/passwd muestra al usuario en un grupo, pero /etc/group no

Cómo configurar /etc/issues para mostrar la dirección IP de eth0