Respuestas:
Tenía curiosidad si chmod 000 /
funcionaría.
Bueno, perfectamente. Unos minutos más tarde estaba buscando un CD de rescate.
Cuando comencé a trabajar como consultor de usuarios para la universidad a la que asistía, me dieron sudo
derechos limitados para ayudar a los estudiantes que habían perdido / olvidado sus contraseñas. sudo passwd <username>
Fue mi nuevo amigo. Una hora después de mi orientación, mi curiosidad se apoderó de mí y escribí sudo passwd
y miré con horror la solicitud de una nueva contraseña. Estaba un poco asustado de ^C
salir de allí, pensando (por error, resulta que) podría dejar la cuenta en cuestión en un estado transitorio, así que ingresé una contraseña e inmediatamente subí las escaleras al dominio sagrado del segundo piso del SuperUser del campus y le preguntó si le gustaría saber la contraseña de root del sistema principal.
passwd
comporta de manera extraña cuando se ejecuta como root. Por ejemplo, cuando falla la verificación de error tipográfico, vuelve a preguntar.
Sorprendido, nadie más ha mencionado este todavía:
rm -rf .*
(Al intentar eliminar todos los archivos y subdirectorios ocultos, olvidando por completo que volverá a aparecer en .
y ..
)
rm
no lo harán ahora. Probé con Darwin y obtuve el error rm: "." and ".." may not be removed
.
.
y ..
, use .[^.]*
. (Bueno, esto realmente perderá todos los archivos que comienzan con ..
, pero generalmente solo hay uno).
.??*
, que me parece más fácil de escribir. Este no coincidirá con archivos de punto de dos letras .a
, pero también son inusuales. Busco los archivos de configuración en mi directorio de inicio con grep -r .??*
, por ejemplo.
Makefile:
clean:
@rm -f * .o
Lo que, por supuesto, hace que make clean
limpie su código fuente en lugar de solo archivos de objetos.
Lección: usar el control de versiones.
*
y.o
Tenía un amigo :() { :|:&}; :
en un servidor remoto donde no teníamos acceso a la consola. No se pudo reiniciar, completamente congelado, servidor de producción .
Desglosado (por solicitud) para que sea un poco más legible.
:() # Define ':' as a function. Every time we say ':' execute the following code block
{ # Start of code block
: # Call ':' again.
| # Pipe output to...
: # Another ':'
& # Disown process.
# All on one line this would read :|:&,
} # End of code block
; # End definition of ':' as a function
: # Call ':'
Puede ser más fácil verlo como
bomb() { bomb|bomb& }; bomb
:
no hace nada. Y no usa memoria en absoluto, solo se bifurca mucho. [Sí, lo intenté :)]. Los efectos se pueden bloquear con una cuota en el número de procesos por usuario.
Tenía buenas intenciones, realmente lo hice. Intentando chmod
recursivamente un directorio y terminé intercambiando ./
con /
.
Como raíz, por supuesto, porque solo con la raíz se puede lograr el verdadero dolor (y, por lo tanto, la iluminación).
Limpié la mesa de partición de mi unidad principal por accidente, pensando que estaba trabajando en otra unidad.
Con el desplazamiento hacia atrás, el uso cuidadoso de la df
memoria y la suerte pude recrearlo exactamente, reescribirlo, reiniciar y esperar ... Y funcionó.
dd
lectura del primer bloque de 4k de cada cilindro conectado file -
para encontrar el superbloque y, por lo tanto, el inicio del sistema de archivos. Esto estaba en un CD en vivo y no había suficiente RAM para hacer todo lo que necesitábamos hacer (que incluía instalar un paquete o dos), así que entramos en un proceso que se ejecuta en ssh en otra máquina.
sfdisk -O
para hacer una copia de seguridad de la tabla de particiones, siempre. FYI: cgsecurity.org/wiki/TestDisk puede automatizar lo que hizo @Neil Mayhew.
testdisk
gpart
, que busca cosas que podrían parecerse a los sistemas de archivos y construye una tabla de partición a partir de eso.
No es realmente mi momento, sino el de alguien más.
Cuando trabajaba en una instalación de investigación de ciencias nucleares, solíamos ejecutar varias computadoras SunOS, Ultrix y Linux, y los investigadores tenían que compartir la CPU en esas máquinas. A medida que los grupos de investigación individuales obtuvieron sus propias becas de investigación, compraron sus propias computadoras, principalmente SparcStations, y se encargaron ellos mismos de la administración del sistema.
SunOS solía enviarse con el escritorio OpenView y un buen administrador de archivos, así es como se veía:
La mayoría de nuestros investigadores se estaban ejecutando como root, y más de una vez tuvimos que reinstalar sus sistemas operativos porque alguien había decidido ordenar el directorio raíz y movió / bin, / etc, / tmp y todo lo demás que saturaba la vista en cualquiera de los dos la papelera o alguna subcarpeta.
Otros usuarios optaron por ordenar el directorio / bin y eliminar cualquier comando que no conocían.
Los afortunados tenían copias de seguridad, la mayoría había comprado una unidad de cinta, pero no tenían la tradición de ejecutar copias de seguridad.
A mediados y finales de los 90, un amigo mío y yo estábamos discutiendo la locura rm -rf *
y en qué punto una caja de Linux se vendría abajo. Entramos en bibliotecas vinculadas estáticamente versus vinculadas dinámicamente y postulé que el sistema podría vivir bastante bien sin él /lib
y luego procedí a cambiarle el nombre en mi estación de trabajo. Sucedieron cosas malas , pero nos quedamos con varias ventanas de consola abiertas con las que tratar de reparar el daño (el apagado ya no era una opción). Ninguno de los editores correría. Es sorprendente los usos esotéricos que puedes encontrar para el echo
comando.
vi
y Caps-Lockvs./etc/passwd
su -
vi /etc/passwd
. No hay vipw
, y de todos modos "solo estamos haciendo ediciones menores".Hice esto una vez. Sorprendentemente, el sistema permaneció funcional durante meses. Cronjobs funcionó bien, no se destacaron errores en los archivos de registro.
No notamos este problema hasta que reiniciamos el sistema meses después y no pudimos iniciar sesión en la consola. ps
mostró un montón de trabajos propiedad del UID '0' no del usuario 'root'.
No podía iniciar sesión como root, ni ejecutar su
o su -
, y no había ninguna sudo
en este cuadro. No había unidad de disquete, el CD-ROM estaba roto y no había puertos USB (por lo que no había un CD-ROM externo). El modo de usuario único no funcionó, porque debe escribir la contraseña de root, y eso proviene /etc/passwd
.
rm -f * ~
y
rm -rf ${DIR}/
cuando DIR
no estaba configurado!
${DIR}
? Porque $(DIR)
intentaría ejecutar el comando DIR.
Un simple halt
reconocimiento algunos segundos después de que no estoy en un shell local y no tengo posibilidad de encender el servidor de producción nuevamente.
¿Lecciones aprendidas? El aviso de la máquina ahora se ve como
[ --> root <-- @kompost:/home/echox] #
con un bonito marcado rojo ;-)
molly-guard
que comprueba si ha iniciado sesión de forma remota y le pregunta si realmente desea hacer esto.
Mi momento favorito fue cuando un compañero de trabajo, que es usuario de emacs, quería editar un archivo importante.
Debido a que emacs
es demasiado para escribir, había configurado un alias para emacs
:
alias em=emacs
Bajo la influencia de café insuficiente o demasiado, por supuesto, escribió mal em
...
Bueno, esta es solo otra razón para usar vi
...;)
alias e=emacs
.
O otra experiencia, cómo sentirse realmente estúpido en unos sencillos pasos que no parecen tan estúpidos individualmente.
Paso uno: establezca una cuenta para el niño, en caso de que quiera usar una caja de Linux. Déle una contraseña trivial, ya que después de todo este es un sistema doméstico y no está expuesto a la red.
Paso dos: espere un tiempo para que no recuerde el primer paso.
Paso tres: abra el puerto SSH en el firewall (en realidad el NAT en el enrutador) para ingresar. Después de todo, mis cuentas tienen contraseñas bastante buenas, y no es que haya nada tremendamente valioso.
Paso cuatro: reciba una notificación del ISP de que hay algún tipo de actividad de DOS en un sitio sueco. Suponga que probablemente sean las cajas de Windows, y examínelas y endurezca.
Paso cinco: recibe una notificación del ISP de que todavía está sucediendo. Pida algunos detalles, obtenga la dirección IP del sitio sueco, inicie Wireshark, encuentre de qué casilla proviene el ataque.
Paso seis: limpia la caja de Linux, sintiéndote estúpido. Encuentra el inicio de sesión proviene de una dirección rumana. Eliminar cuentas sin buenas contraseñas.
En los laboratorios de computación cuando estaba en la universidad, tenían un protector de pantalla que simulaba un montón de bolas que flotaban de un lado a otro. Tiraron de cada uno con gravedad simulada.
Una vez, mientras estaba jugando con la configuración, se bloqueó con el error Error: force on balls too great
Una vez estaba desarrollando un controlador de dispositivo para Unix. Tenía un problema de puntero y durante las pruebas comenzó a escribir el final de una matriz en la memoria del kernel. Tardé en detectar esto y no presioné el botón de reinicio de inmediato. El controlador había garabateado todo el caché del búfer de disco que luego se volcó al disco antes de presionar restablecer. Muchos de los bloques eran inodos y directorios, y terminé con un sistema de archivos totalmente basura. Creo que se colocaron 6000 archivos huérfanos lost+found
antes de darme por vencido y volver a instalar. Afortunadamente, este era solo un sistema de prueba, no mi estación de trabajo con todos mis archivos.
Me borré / etc y luego se recuperó . Creo que no aprendí mi lección ... También tuve que recuperarme de un borrado /bin
. Parece suceder cuando he estado trabajando con a chroot
.
El año pasado, un colega mío estaba usando una de nuestras estaciones de trabajo Linux para crear copias de discos flash con el dd
comando. Accidentalmente escribió algo similar a lo siguiente:
dd if=flash-image.img of=/dev/sda1
Para cuando se dio cuenta de su error: sobrescribir el disco duro de la máquina en lugar de la unidad flash, la máquina ya estaba manguera. Tuvimos que reconstruir la caja, que por cierto también era la máquina que alojaba todas nuestras máquinas virtuales de desarrollo en ese momento ...
dd
!!! :-)
Esto me pasó el año pasado. Estaba eliminando algunos archivos del servidor usando una variable temporal:
rm -rf ${prefix}*
¿Adivina qué? ¡La variable $prefix
no fue definida!
Puedes imaginar el desastre ... resultó en la eliminación de algunos archivos muy críticos.
¡Casi me rompo Control-Cy corrí a la CPU para quitar el cable de red!
Jajaja estoy seguro de que alguien ya había hecho esto ...
Mientras estaba en mi segundo año de estudios de informática, nos dieron una tarea para escribir un programa en C que generaría una serie de subprocesos fork
y los haría comunicarse con tuberías en un "círculo" y descubrir cuál debería ser el "líder" ".
Todavía éramos bastante novatos en ese entonces y la mayoría de peple no tenía máquinas Linux, por lo que trabajamos en nuestras cuentas en el servidor principal de nuestra facultad (que también albergaba sitios oficiales y cuentas de personal y sitios). La mayoría de las personas escribieron bifurcaciones en algún momento tratando de hacer la tarea. Más de la mitad de mi grupo llegó al abusers
archivo. Esa fue la carga más alta en ese servidor en mucho tiempo :)
Cuando mi universidad decidió cambiar la red inalámbrica para usar la autenticación de Cisco LEAP patentada ...
Comenzó una batalla muy larga que terminó bastante bien. Escribió documentación para otras personas que querían ejecutar Linux y tener acceso a Internet. Seis meses después, decidieron agregar también soporte PEAP. Cachetada
Es mi favorito porque gané. Yo tengo que trabajar.
Fui asistente de laboratorio para una clase de Linux. Uno de los estudiantes me llamó porque ya no podía su -
porque estaba recibiendo permission denied
. De acuerdo, ha recordado mal o ha escrito mal la contraseña. Reiniciar en modo de usuario único y reiniciar. ¡¿Qué?! su
¿TODAVÍA no funciona? ¡DEBE inclinarse ante mi voluntad! Así que reinicio en modo de usuario único para averiguar qué hizo. Me di cuenta de que ella corríachmod -R 777 /var/www/html/drupal-6.19 /
Tenga en cuenta el espacio entre el nombre del directorio y la barra diagonal final.
Después de unos minutos de "Realmente no quiero que vuelva a instalarla, entonces, ¿qué está haciendo esto y cómo?", Me las arreglé para encontrar que / bin / su ahora tenía permisos de archivo 777
. Eso también se puede leer como permisos de archivo de 0777
, lo que elimina el bit setuid de /bin/su
. Un rápido chmod u+s /bin/su
y yo era un héroe.
No es tan doloroso ... Pero es un momento divertido:
He escrito mal ls
como sl
y descubrió que el administrador del sistema tenía algo instalado para tal caso.
(ya disponible en Debian , Ubuntu , Gentoo , ... repositorios)
git init
git clean -f
Esto no elimina el repositorio. Esto elimina todo lo que no está en el repositorio.
Después de intentar deshacerme del repositorio existente y luego volver a iniciar el control de código fuente (en la primera versión completa de un proyecto), estos dos comandos destruyeron mi código completo.
Una empresa para la que solía trabajar tenía su producto funcionando en SCO. Estaba haciendo una depuración sobre las aplicaciones que se estaban volviendo muy lentas en nuestro servidor de demostración y, al mismo tiempo, había un montón de clientes que recibían una demostración / conferencia sobre las próximas características nuevas.
Entonces, ejecuté la aplicación que solía atascarse, hice mis cosas para verificar la causa raíz, pero como todavía estaba "atascada", traté de matarla:
pkill -9 mytestapplication
Lo que aprendí fue que pkill no hace exactamente lo mismo en SCO que en linux =)
... Básicamente mata todo a lo que el usuario tiene acceso, y con root ... eso es todo =)
Mi cambio de Debian a Ubuntu comenzó el día que intenté eliminar algunos archivos y directorios, lo que significa escribir
rm -r /var/tmp/*
Desafortunadamente, inserté un espacio entre "/ var / tmp /" y "*" y, lo que es peor, estaba en la raíz del sistema de archivos.
root@workstation:/# rm -r /var/tmp/ *
¡Por favor no intentes eso en casa!
Tenía dos unidades instaladas en un punto y tenía el sistema de archivos raíz de la segunda unidad montado en un directorio dentro /mnt
. Estaba en ese directorio e intenté eliminarlo, var
pero terminé escribiendo en su rm -rf /var
lugar. ¡Algo de instinto pareció entrar en acción y dicho dicho var
debe ir precedido de un corte!
Cuando me di cuenta de lo que había hecho, golpeé de inmediato, Ctrl-Cpero ya era demasiado tarde. Mi rpm
base de datos había salido hace mucho tiempo del edificio. Pasé años para que todo volviera a la normalidad.
Ahora para la parte dolorosa.
Regreso a ese directorio /mnt
para reanudar lo que había estado haciendo. ¿Qué escribo? Bueno, digamos que el instinto volvió a aparecer.
Al menos pude restaurar el sistema mucho más rápido la segunda vez;)
rm
comando. O triste.