¿Cuáles son tus momentos favoritos * dolorosos * Unix


34

¿Qué tal compartir tus lecciones favoritas aprendidas momentos?


Es curioso cuántas de las respuestas involucran el rmcomando. O triste.
Barry Brown

Respuestas:


67

Tenía curiosidad si chmod 000 /funcionaría.

Bueno, perfectamente. Unos minutos más tarde estaba buscando un CD de rescate.


11
Wow, nunca lo consideré hasta que lo mencionaste. Bueno uno
Stefan Lasiewski

¿Qué sucede si lo haces en un archivo normal?
Luc M

@Luc supongo que sólo tiene que volver chmod
phunehehe

Usualmente hago tales 'experimentos' en mi Arch VM. Si bombardea, lo vuelvo a rodar.
André Paramés

Cometí este error una vez. Fue muy vergonzoso, pero una valiosa lección.
Charles Sprayberry

37

Cuando comencé a trabajar como consultor de usuarios para la universidad a la que asistía, me dieron sudoderechos 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 passwdy miré con horror la solicitud de una nueva contraseña. Estaba un poco asustado de ^Csalir 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.


44
je, ownage! Diputado confundido: P
Spudd86

30
podría haber ingresado una contraseña que no coincide en el segundo mensaje de confirmación, por lo que nada se habría visto afectado y passwd se cerraría.
Wadih M.

1
@Wadih: se passwdcomporta de manera extraña cuando se ejecuta como root. Por ejemplo, cuando falla la verificación de error tipográfico, vuelve a preguntar.
György Andrasek

Podrías haberlo cambiado de nuevo a lo que era antes.
HandyGandy

1
@HandyGandy no conocía la contraseña de root original. Simplemente tenía los derechos de sudo para ejecutar passwd.
Gnud

32

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 ..)


3
Si bien eso me ha quemado en el pasado, muchas versiones de rmno lo harán ahora. Probé con Darwin y obtuve el error rm: "." and ".." may not be removed.
Stefan Lasiewski

77
Lo hago todo el tiempo, en todo tipo de plataformas. Funciona según lo previsto en OpenBSD, NetBSD, Linux y OpenSolaris.
polemon

Si desea hacer coincidir todos los archivos de puntos, excepto para .y .., use .[^.]*. (Bueno, esto realmente perderá todos los archivos que comienzan con .., pero generalmente solo hay uno).
Sven Marnach

@Sven: Otra forma es .??*, 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.
Neil Mayhew

31

Makefile:

clean:
    @rm -f * .o

Lo que, por supuesto, hace que make cleanlimpie su código fuente en lugar de solo archivos de objetos.

Lección: usar el control de versiones.


11
Si no puede verlo, observe el carácter de espacio entre *y.o
Denilson Sá Maia

1
Siento tu dolor, nos sucedió a todos en algún momento :)
axel_c

Lección recargada: cada vez que haces cosas de shell, y ves un " ", be * extra , no, be extra Extra EXTRA cuidadoso.
Jürgen A. Erhard

Lo hice, a mano, después de pasar una noche en el laboratorio. El proyecto debía presentarse unas horas después. Resultó ser una bendición disfrazada; La nueva versión reescrita que entregué era mucho mejor que la versión vendada que borré.
Barry Brown

1
Referencia obligatoria de Bumblebee: github.com/MrMEEE/bumblebee/commit/a047be
Residuum

30

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

1
¿Sería tan amable de explicar lo que hace? No puedo entenderlo y no quiero probarlo;)
naugtur

23
Parece una bomba tenedor. No intentes esto a menos que realmente sepas lo que estás haciendo.
Zaid

55
Sip. Es una bifurcación. Y uno agradable :) Parece que bifurca al intérprete bash mientras trata de analizarlo sin parar. Si te saltas el último, :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.
naugtur


44
+1 para el comentario anterior. Es mucho más fácil de entender de lo que parece.
Umang

29

Tenía buenas intenciones, realmente lo hice. Intentando chmodrecursivamente 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).


23
+1 para citable "Solo con la raíz se puede lograr el verdadero dolor (y, por lo tanto, la iluminación)".
Stefan Lasiewski

21

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 dfmemoria y la suerte pude recrearlo exactamente, reescribirlo, reiniciar y esperar ... Y funcionó.


66
Un amigo hizo esto, y lo ayudé a restaurar la mesa. Desafortunadamente, no teníamos los valores anteriores para los tamaños de partición y las compensaciones, por lo que utilizamos un bucle bash con la ddlectura 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.
Neil Mayhew

2
Ay. Es por eso que siempre uso sfdisk -Opara hacer una copia de seguridad de la tabla de particiones, siempre. FYI: cgsecurity.org/wiki/TestDisk puede automatizar lo que hizo @Neil Mayhew.
Ephemient

2
Yo también estuve allí, testdisk
guardé

En estos días, tenemos gpart, que busca cosas que podrían parecerse a los sistemas de archivos y construye una tabla de partición a partir de eso.
Simon Richter

19

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: texto alternativo

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.


11
¿Ordenar el directorio raíz? De Verdad? ¿DE VERDAD? sollozo
Alex B

41
¡TRWTF está funcionando como root, en una instalación de investigación de ciencias nucleares!
invierte el

44
captura de pantalla genial! me pone todo nostálgico
Gabe.

@Alex - bueno, había un gran archivo VMUNIX que no estaba usando ...
Martin Beckett

1
En las versiones antiguas de Mac OS, podría mover prácticamente cualquier archivo a cualquier lugar, así que tal vez eso es lo que esperaban ...
Kevin Cantu

18

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 /liby 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 echocomando.


19
Hay una historia clásica sobre este tema exacto: lug.wsu.edu/node/414
Alex B

1
@Alex B: La historia también es parte de Unix Horror Stories , que es genial de leer.
Bobby

18

viy Caps-Lockvs./etc/passwd

  1. Conéctese a una vieja caja de Solaris usando una vieja terminal serial que no actualice la pantalla correctamente.
  2. su -
  3. vi /etc/passwd. No hay vipw, y de todos modos "solo estamos haciendo ediciones menores".
  4. Presione la Caps-Locktecla y no lo note.
  5. Golpea jun par de veces para desplazarte hacia abajo. Ignora el hecho de que acabas de escribir J("Unir"), que combina esta línea con la siguiente. La pantalla del terminal en serie no se actualizaba correctamente, por lo que no vio que simplemente combinó las primeras 5 líneas en una línea Loooooong, corrompiendo así a los primeros 5 usuarios ('root', 'daemon', etc.).
  6. Termine sus OTRAS ediciones previstas en el archivo, en la parte inferior.
  7. Guardar el archivo.
  8. Cerrar sesión.

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. psmostró un montón de trabajos propiedad del UID '0' no del usuario 'root'.

No podía iniciar sesión como root, ni ejecutar suo su -, y no había ninguna sudoen 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.


2
¿Seguramente "J" es el comando "Unir" (como en unir líneas juntas)?
dr-ene

2
Espere un minuto, no necesito escribir la contraseña para iniciar en modo de usuario único. De hecho, así es como restablezco la contraseña de root si la pierdo. ¿O fue diferente en los viejos tiempos?
phunehehe

En Solaris, debe conocer la contraseña de root para ingresar al modo de usuario único. Tuve que hacer esto hace 2 semanas en realidad.
Stefan Lasiewski

@phunehehe Creo que estás pensando en el truco init = / bin / sh. De hecho, eso no requiere la contraseña de root. Sin embargo, el nivel de ejecución 1 todavía requiere un pase de raíz
Patrick

18
rm -f * ~

y

rm -rf ${DIR}/

cuando DIRno estaba configurado!


44
Quieres decir ${DIR}? Porque $(DIR)intentaría ejecutar el comando DIR.
Denilson Sá Maia

16

Recuerdo haber intentado enviar una SysRqsecuencia de teclas a una máquina remota ...

... pero fue capturado por el local.


14

Un simple haltreconocimiento 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 ;-)


66
Existe una herramienta llamada molly-guardque comprueba si ha iniciado sesión de forma remota y le pregunta si realmente desea hacer esto.
Simon Richter

IPMI es algo muy conveniente :-)
Andre Holzner

13

Mi momento favorito fue cuando un compañero de trabajo, que es usuario de emacs, quería editar un archivo importante.

Debido a que emacses 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...;)


Lo que realmente me encanta de este es el hecho de que le preocupaba cuánto tiempo duraba emacs pero no solo lo usaba alias e=emacs.
Steven D

Además del café, el aviso de que 'e' y 'r' no son muy distantes cerca en el teclado ...
leonbloy

11

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.


1
Estado allí. Una vez creé una cuenta con un inicio de sesión de test: test, con la intención de usarla solo durante unos cinco minutos. Olvidé eliminarlo y obtuve los mismos resultados que tú. Nunca más. Voy a todas las claves públicas de autenticación ahora.
ATC

1
Sí, también uso claves públicas / privadas. A veces pueden ser un poco molestos, pero mucho más seguros que las contraseñas simples.
Denilson Sá Maia

44
Al abrir SSH en Internet, NUNCA permita la autenticación de contraseña. Solo autenticación de clave pública / privada, de esa manera no puede quedar desprevenido.
wazoox

@wazoox: otp es una buena alternativa también.
Jürgen A. Erhard

Utilizo un puerto no estándar de alto número para ssh, reenviado desde el enrutador al puerto ssh estándar en mis cajas de Linux y Mac OS X. Nunca recibo ningún intento de inicio de sesión. Tengo el puerto configurado en un acceso directo en ~ / .ssh / config en mis otras máquinas, por lo que generalmente ni siquiera tengo que escribirlo.
Neil Mayhew

11

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


10

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+foundantes 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.


Ahora, hacer eso en su sistema de trabajo hubiera sido realmente estúpido ;-)
Jürgen A. Erhard


7

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 ddcomando. 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 ...


2
+1 - ten mucho, mucho cuidado con dd!!! :-)
Josh

7

Esto me pasó el año pasado. Estaba eliminando algunos archivos del servidor usando una variable temporal:

rm -rf ${prefix}*

¿Adivina qué? ¡La variable $prefixno 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 ...


7

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 forky 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 abusersarchivo. Esa fue la carga más alta en ese servidor en mucho tiempo :)


eso fue una tontería de ellos ... no deberían haberte puesto en la misma máquina que los servidores web y esas cosas. (Mi escuela tiene lo mismo, pero tenemos servidores dedicados a proyectiles remotos para que las bifurcaciones anuales no se salgan de control)
Spudd86

Microsoft consiguió que la facultad se asociara y Windows y .net ya se promocionaron mucho. Nadie esperaba un montón de novatos en el servidor :)
naugtur

6

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.


6

Como root en Solaris,

$ kill -9 1

... y todo se vino abajo.

Mi amigo fue despedido por esto.


6

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/suy yo era un héroe.


55
¿Era lo único que necesitabas cambiar para romper su sistema?
Michael Mrozek

1
Estoy seguro de que todavía estaba roto, pero tal vez funcionó lo suficientemente bien para el resto de la clase.
Stefan Lasiewski

1
Funcionó lo suficientemente bien para el resto de la clase; la escuela evidentemente tiene el requisito de que todas las unidades de estudiantes se reinstalen cada trimestre. Y ella no continuaría con Linux después de que terminara este trimestre, así que no me molesté en arreglarlo el resto del camino.
Kevin M

5

No es tan doloroso ... Pero es un momento divertido:

He escrito mal lscomo sly descubrió que el administrador del sistema tenía algo instalado para tal caso.

(ya disponible en Debian , Ubuntu , Gentoo , ... repositorios)


44
Eso es más un huevo de Pascua que un momento doloroso. Lo leí antes de encontrarlo, pero nunca me he encontrado escribiendo eso, así que no hay +1.
Umang

Grinn ... Una vez tuve un usuario que vino a mí "¡Tu sistema está pirateado! 11Una vez que escribí una animación ASCII-art cuando
escribí

^ ¡No es tan gracioso!
mr_eclair

5
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.


git rebase (con aplastamiento) y git filter-branch (para eliminar archivos) son tus amigos :-) Con esto quiero decir que hay formas más seguras de eliminar cruft de tu historial de repositorios y terminar con un proyecto relativamente limpio. Por lo general, hago una copia de seguridad de la rama actual antes de un rebase extenso.
Neil Mayhew

5

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 =)


1
¿Podría describir qué hace en SCO? No tengo idea, y no pude encontrarlo fácilmente en Google.
Denilson Sá Maia

1
Básicamente, mata todo a lo que el usuario tiene acceso, y con root ... es todo =)
rasjani

3

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!


'zsh: ¿seguro que quieres eliminar todos los archivos en / [yn]?' - es bastante útil
André Paramés

esto eliminará los archivos de / ¿cómo es que?
mr_eclair

3

Hay un buen truco para hacer el equivalente dirnamey basename, respectivamente, en Bash:

${path%/*}
${path##*/}

No es tan divertido cuando $pathcontiene una barra inclinada final ...


3

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, varpero terminé escribiendo en su rm -rf /varlugar. ¡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 rpmbase 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 /mntpara 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;)


1
¿Supongo que esto fue antes de que descubrieras sobre chroot (1)?
Kevin M
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.