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
!-->
Lol, hace mucho que no toco linux, pero es agradable ver estas cosas xDDDDDD
La verdad es que tienes razón, menuda cagada si lo llegas a poner recursivo xD yo creo que te hubiera tocado reinstalar.
Una forma de volver en sistemas algo catastróficos es entrar con una live, montar la partición del SO y chrootarte xD (chroot man pages)
Saludos
¿Agradable? ¡Cabrón! xDDD
Gracias por el briconsejo ^^
Hubiera podido ser peor, se te podría haber puesto como el titanio al hacer eso.
Respecto a tu pregunta, te vas a cagar en toas mis muelas de lo sencillo que es, pero para eso:
$ nautilus .
botón derecho sobre cada carpeta -> propiedades -> compartir -> etc.
bwhahahaha
No, no, ahora ya en serio:
$ rm -rf /
sacamos el DVD live de windows VISTA (o el ME en su defecto) -> etc etc
bwhahahaha
p.d: en realidad, si quieres hacerlo tus chmod vía consola con un solo comando:
$ find /foo/bar -type -d -exec chmod 644 -R {}\;
(man find para las opciones, voy de memoria..)
jajaja que guapo!
¿Hueles eso hijo? ¿Lo hueles? Son comandos ejecutados como root! Me gusta el olor de los comandos ejecutados como root, sobre todo cuando amanece. Una vez bombardeamos la raiz del sistema con comandos sudo, sin parar, durante 12 horas y cuando terminamos de bombardearla intenté hacer un ls... no encontré nada, salvo un cdlive ¡pero que olor aquel! ¡Allí olía a victoria!
sudo make me a sandwich
Más típica es la cagada del 'rm'. En general, uno ha de escribir
# rm carpetaqueborro -rf
y el rm está preparado para que los modificadores vayan al final. Pero hay quien escribe
# rm -rf carpertaqueborro
y luego la cagan escribiendo el final y a tomar por culo. Eso sí que no tiene vuelta atrás.
Otra cagada típica es dejar comandos chungos en el historial. Por ejemplo, cuando pones 'rm lib -rf', es conveniente no dejar esa bomba en el historial, por si luego la vuelves a ejecutar sin querer. La solución, sencilla. En el bashrc:
export HISTCONTROL="ignoreboth"
Luego cuando quieras que un comando no se guarde en el historial, sólo tienes que empezarlo por espacio.
@tlc Pero qué coño... xDDD Vale, me quedo con lo del find. Gracias :)
@Acatos LOL
@erGuiri DIE
@bitozoid Hey, buenos consejos. Me los apunto. Gracias :)
Pues yo creo que en estos casos, lo mejor es aceptar que eres un inútil, dejarte llevar por las ganas de llorar, levantarte, ir corriendo a la cama a que tu mujer te consuele (o abrazarte a su culo si no hay quien la despierte)… ¡y mañana será otro día, joder!
Bohnke, me conoces lo suficiente como para saber que antes sodomizado que dejar un problema a medias xD
Ya bueno, yo solo expongo la solución emocional ideal a cortísimo plazo. En cualquier caso, mejor me callo, que me sé de uno que estuvo 52 horas sentado «haciendo» de cero un Gentoo de los de antes… je… je… je.v_v'
O_o
Pues hoy hace fresquete no?
No, porque la bolsa sube. ¿O baja? Nu sé.
Por cierto, el comando que te he puesto tambien sirve para hacer jaulas1 en programas (lo mismo te interesa para que no te peten el server :-P, aunque como leerás tampoco es la panacea).
1. http://es.wikipedia.org/wiki/Chroot
Pd: Iba a explicarlo con mis propias palabras, pero después de 2 horas de leer cosas de estadística, casi que mejor la wiki xD
Pd2: Yo creo que este comando lo aprendí una vez cuando hice una gentoo desde stage 1 (pero no me quedaba viendo como compilaba, ojo xD)
Madre de dios, ya van dos de mis lectores que se compilaron una Gentoo from scratch xDDDD
Gracias por las indicaciones, Ki :)
Buah, siempre me quedará en la memoria el día en que la naranjita le dijo a un amigo muy gentooza que conocía la distro, casi se mea encima Looooool