Reparar permisos del servidor después de un chmod accidental

Reparar permisos del servidor después de un chmod accidental

Mientras intentaba depurar un servidor de correo, escribí:

chmod -R 777 /

en lugar de:

chmod -R 777 .

y la guinda del pastel, debido a que olvidé que había cambiado un script que uso para iniciar sesión para arreglar algo, hice todo esto como root. No tengo copias de seguridad de la mayor parte del sistema (lo sé, es una mala elección).

A diferencia de las preguntas "Recuperación de chmod -R -777 /" y "¿Qué hacer después de 'chmod -R 777 /'?" Todavía estoy conectado como root y no se cambió todo el sistema, por lo que tengo cierto control sobre el sistema. También eliminé ^C d del comando en un segundo para minimizar el daño. Desde entonces he desconectado físicamente el servidor de Internet.

Creo que un script podría solucionarlo si restaurara los permisos del sistema de archivos según los datos del administrador de paquetes, pero no sé cómo haría para hacerlo. Si esto no es posible, ¿cómo guardaría los datos del servidor para reinstalar el sistema operativo?

Soy consciente de los riesgos potenciales de perder un archivo, pero preferiría que la recuperación lo reinstale a pesar de ellos.

esta es la salida actual de ls -la /:

drwxrwxrwx  22 root root  4096 Sep  7  2016 .
drwxrwxrwx  22 root root  4096 Sep  7  2016 ..
drwxr-xr-x   2 root root  4096 May 18 07:55 bin
drwxr-xr-x   3 root root  4096 Sep 21 07:53 boot
drwxr-xr-x  19 root root  3180 Sep 11 20:54 dev
drwxrwxrwx  92 root root  4096 Aug 23 07:50 etc
drwxr-xr-x   4 root root  4096 May 23  2016 home
lrwxrwxrwx   1 root root    31 Feb 24  2016 initrd.img -> /boot/initrd.img-3.16.0-4-amd64
drwxrwxrwx  18 root root  4096 Feb 24  2016 lib
drwxr-xr-x   2 root root  4096 Jun 20 07:00 lib64
drwx------   2 root root 16384 May 19  2016 lost+found
drwxrwxrwx   2 root root  4096 May  5  2015 media
drwxr-xr-x   2 root root  4096 May  5  2015 mnt
drwxr-xr-x   3 root root  4096 May 28  2016 opt
dr-xr-xr-x 148 root root     0 Sep  3 21:55 proc
drwxrwxrwx  10 root root  4096 Aug 19 17:58 root
drwxr-xr-x  22 root root   800 Sep 21 17:09 run
drwxrwxrwx   3 root root  4096 Jun 20 07:00 sbin
drwxr-xr-x   4 root root  4096 Sep 20 23:18 sftp
dr-xr-xr-x  13 root root     0 Sep  3 21:55 sys
drwxrwxrwx   8 root root  4096 Sep 21 17:17 tmp
drwxrwxrwx  11 root root  4096 Feb 24  2016 usr
drwxr-xr-x  14 root root  4096 Jun 25 06:21 var
lrwxrwxrwx   1 root root    27 Feb 24  2016 vmlinuz -> boot/vmlinuz-3.16.0-4-amd64

Acabo de notar que en pánico hice clic en el foro de Ubuntu, no en Debian... Soy consciente de que no es así como se arregla un servidor de correo. fue un arreglo descuidado y hacky para ver qué se rompía

He vuelto a publicar esto en el foro correcto ahora.

Respuesta1

Arreglar el error de permiso

¿Cómo restaurar el permiso del directorio raíz a los valores predeterminados?

Regla número 1: si no se siente cómodo con las líneas de comando, no ejecute ningún comando como root.

Ejecutando chmod -R 777 /como rootromperá su sistema.

Ejecutando rm -rf /como rootresultará en un desastre!.

Si lo ejecutó chmod -R 777 /como root, siga estos pasos para restaurarlo:

Paso 1:

Copie el siguiente script, péguelo en su consola para generar el script fixpermission

echo '
chmod -R 755 /bin /boot /dev /etc/ /home /lib /lib64 \
/media /mnt /opt /run /sbin /srv /usr /var

chmod -R 777 /initrd.img /vmlinuz
chmod -R 1777 /tmp
chmod -R 555 /sys
chmod -R 555 /proc
chmod -R 700 /root

' > fixpermission

chmod +x fixpermission

./fixpermission

Lo anterior creará un script llamado fixpermission y lo ejecutará ./fixpermissionsi aún no se ha invocado.

Paso 2:

Ejecute stat -c '%A %a %n' /*para mostrar su directorio adecuado y su permiso como restaurado.

Ejemplo: la estructura de permisos de su directorio debería ser similar a la siguiente:

root@plab:~# stat -c '%A %a %n' /*
drwxr-xr-x 755 /bin
drwxr-xr-x 755 /boot
drwxr-xr-x 755 /dev
drwxr-xr-x 755 /etc
drwxr-xr-x 755 /home
lrwxrwxrwx 777 /initrd.img
lrwxrwxrwx 777 /initrd.img.old
drwxr-xr-x 755 /lib
drwxr-xr-x 755 /lib64
drwx------ 700 /lost+found
drwxr-xr-x 755 /media
drwxr-xr-x 755 /mnt
drwxr-xr-x 755 /opt
dr-xr-xr-x 555 /proc
drwx------ 700 /root
drwxr-xr-x 755 /run
drwxr-xr-x 755 /sbin
drwxr-xr-x 755 /srv
dr-xr-xr-x 555 /sys
drwxrwxrwt 1777 /tmp
drwxr-xr-x 755 /usr
drwxr-xr-x 755 /var
lrwxrwxrwx 777 /vmlinuz
lrwxrwxrwx 777 /vmlinuz.old

Paso 3:

¡Reinicie su sistema!

Espero que esto ayude.

información relacionada