Si te ha entrado un sudor frío al leer el título de la historia, enhorabuena: eres una persona preparada para detectar cagadas tecnológicas al vuelo.
La historia de hoy va de estupidez. La mía, para ser más concretos. Y va de suerte. De mucha suerte, dicho sea de paso. Si no te interesan las tecnorayadas, sigue de largo .
En casa tengo un servidorcillo casero dedicado, con diversas cosas: SFTP, TeamSpeak, varios juegos de Valve, etc. Anoche estaba trasteando con unas carpetas, cambiando los permisos de unos ficheros que me traje de Windows, y que por tanto tenían activado el flag de ejecución.
Supongamos que estos ficheros colgaban de /foo/bar, en carpetas cuyos nombres eran A, B, etc. Así, las carpetas en cuestión eran /foo/bar/A, /foo/bar/B, y así sucesivamente. Ah, y todas las carpetas eran de un usuario distinto al mío.
Como soy una puta de la consola (cómo no), abrí una y me puse a hacer esto con mi usuario:
calvo@servidor /foo/bar $ sudo chmod 644 A/*
calvo@servidor /foo/bar $ sudo chmod 644 B/*
calvo@servidor /foo/bar $ sudo chmod 644 C/*
Y así sucesivamente. Creo que pillan la idea. Y también se habrán dado cuenta de que, en cualquier caso, estaba haciendo el gilipollas. ¿Han oído alguna vez eso de que un gran poder conlleva una gran responsabilidad? Pues entonces, ¿para qué coño me pongo yo a hacer cosas como superusuario?
Los que me conocen saben que tecleo a toda hostia. Y como tecleo a toda hostia, también, cuando me equivoco, lo hago a toda hostia. Supongan que, siguiendo con la secuencia de arriba, tecleo esto:
calvo@servidor /foo/bar $ sudo chmod 644 JK/*
Huy, me equivoqué y puse la K. Nada, nada, vamos a borrar.
Solo que borré una letra de más. Y esto fue lo que tecleé:
calvo@servidor /foo/bar $ sudo chmod 644 /*
Unas décimas de segundo más tarde me quedé con la mirada vidriosa, mientras la certeza de que la había cagado completamente se abría paso por mi sistema nervioso central. Mi hipotálamo gritaba diciéndome que venía un depredador. Cosas de los instintos atávicos.
Me quedé sin sistema. De repente, le cambié los permisos a toda la raíz del sistema de ficheros, con lo cual, me quedé sin órdenes. Al haber jodido /bin y /usr/bin, no tenía órdenes para ejecutar. No tenía chmod para revertir lo que había hecho. No tenía nada.
Me pegué dos buenos minutos cagándome en dios de formas creativas que harían enrojecer a un camionero moscovita. Noli me miraba pacientemente, a la espera de que se me pasara.
Los más avispados del lugar se habrán dado cuenta de que en realidad la cagada no fue tan gorda. Si hubiera hecho esto, sí que hubiera estado jodido:
calvo@servidor /foo/bar $ sudo chmod -R 644 /*
Porque en ese caso, no me hubiera limitado a cambiar los permisos de los directorios raíz, sino que hubiera cambiado los permisos de todos y cada uno de los ficheros del sistema. Y eso sí que no hay dios que pueda arreglarlo.
Cuando me serené, pensé que podría resolverlo usando el DVD de la distribución, entrando en modo live y cambiando como root los permisos de las carpetas.
¿Y qué permisos eran esos? Pues como da la casualidad de que tanto el portátil de Noli como el mío tienen instalado el mismo Linux, me fui al de ella e imprimí una captura de ls -laF /. Con eso lo único que tuve que hacer fue arrancar la consola y cambiar a mano los permisos para que fueran iguales a los que tenía ella.
Solo tuve un pequeño problema, y es que tengo /home montado en una partición diferente, con lo que los permisos que cambié usando el arranque live se perdieron. Sin embargo, entré en el equipo por SSH como root desde otra máquina y puse los permisos correctos. Después de un rato pude comprobar que todos los servicios estaban en orden.
Anoche dormí poco, obviamente.
¿Moraleja? La próxima vez que me de por usar sudo para hacer el gilipollas, me lo pienso dos veces.
PS Es probable que hubiera otra forma de resolverlo, quizás más simple. Si es así, les rogaría que lo dejen en los comentarios 
!-->