Antworten:
Ich war neugierig wenn chmod 000 /
es funktionieren würde.
Nun, einwandfrei. Ein paar Minuten später suchte ich nach einer Rettungs-CD.
Als ich anfing, als Benutzerberater für die Universität zu arbeiten, die ich besuchte, wurden mir eingeschränkte sudo
Rechte eingeräumt, um Studenten zu helfen, die ihre Passwörter verloren oder vergessen hatten. sudo passwd <username>
war mein neuer Freund. Eine Stunde nach meiner Orientierung überwältigte mich meine Neugier, und ich tippte ein sudo passwd
und starrte entsetzt auf die Aufforderung, ein neues Passwort einzugeben. Ich hatte ein bisschen Angst ^C
davor, herauszukommen und dachte (fälschlicherweise stellt sich heraus), dass ich das betreffende Konto in einem vorübergehenden Zustand belassen könnte. Also gab ich ein Passwort ein und ging sofort die Treppe hinauf zu der heiligen Domäne im 2. Stock des campus SuperUser und fragte, ob er das root-Passwort des Hauptsystems wissen möchte.
passwd
verhält sich lustig, wenn es als root ausgeführt wird. Wenn beispielsweise die Tippfehlerprüfung fehlschlägt, wird erneut gefragt.
Überrascht hat dies noch niemand erwähnt:
rm -rf .*
(Während Sie versuchen, alle versteckten Dateien und Unterverzeichnisse zu entfernen, vergessen Sie völlig, dass es in .
und rekursiv wird. ..
)
rm
das jetzt nicht tun. Ich habe es mit Darwin versucht und den Fehler bekommen rm: "." and ".." may not be removed
.
.
und abgleichen möchten ..
, verwenden Sie .[^.]*
. (Nun, das wird eigentlich alle Dateien vermissen, die mit beginnen ..
, aber normalerweise gibt es nur eine.)
.??*
, den ich einfacher zu tippen finde. Diese Datei passt nicht zu Punktdateien mit zwei Buchstaben .a
, aber diese sind auch ungewöhnlich. Ich suche grep -r .??*
zum Beispiel mit die Konfigurationsdateien in meinem Homeverzeichnis .
Makefile:
clean:
@rm -f * .o
Was natürlich macht make clean
der Quellcode gelöscht und nicht nur die Objektdateien.
Lektion: Verwenden Sie die Versionskontrolle.
*
und.o
Habe einen Freund :() { :|:&}; :
auf einem Remote-Server laufen lassen, auf den wir keinen Konsolenzugriff hatten. Es konnte nicht neu gestartet werden, der Produktionsserver ist vollständig eingefroren .
Aufgeschlüsselt (auf Anfrage), um die Lesbarkeit zu verbessern.
:() # 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 ':'
Es könnte einfacher sein, es als zu betrachten
bomb() { bomb|bomb& }; bomb
:
, geschieht nichts. Und es verbraucht überhaupt keinen Speicher, sondern gibt nur viel aus. [Ja, ich habe es versucht :)]. Effekte können mit einer Quote für die Anzahl der Prozesse pro Benutzer blockiert werden.
Ich meinte es gut, ich tat es wirklich. Der Versuch, chmod
rekursiv ein Verzeichnis und am Ende tauschen ./
mit/
.
Natürlich als Wurzel, denn nur mit der Wurzel kann wahrer Schmerz (und damit Erleuchtung) erreicht werden.
Ich habe versehentlich die Partitionstabelle meines Hauptlaufwerks gelöscht, weil ich dachte, ich arbeite an einem anderen Laufwerk.
Mit Scrollback, sorgfältigem Umgang mit df
, Gedächtnis und Glück konnte ich es exakt nachbilden, neu schreiben, neu starten und hoffen ... und es funktionierte.
dd
den ersten 4k-Block jedes Zylinders zu lesen, in den die Pipeline geleitet wurde file -
, um den Superblock und damit den Start des Dateisystems zu finden. Dies war auf einer Live-CD und es gab nicht genug RAM, um alles zu tun, was wir brauchten (einschließlich der Installation von ein oder zwei Paketen), so dass wir einen Prozess leiteten, der in ssh auf einem anderen Computer lief.
sfdisk -O
, um die Partitionstabelle zu sichern. Zu Ihrer Information : cgsecurity.org/wiki/TestDisk kann automatisieren, was @Neil Mayhew's getan hat.
testdisk
meine Box gerettet
gpart
nach Dingen, die Dateisystemen ähneln könnten, und konstruieren daraus eine Partitionstabelle.
Nicht wirklich mein Moment, aber jemand anderes.
Als ich in einer nuklearwissenschaftlichen Forschungseinrichtung arbeitete, verwendeten wir eine Reihe von SunOS-, Ultrix- und Linux-Computern und Forscher mussten die CPU auf diesen Maschinen gemeinsam nutzen. Da einzelne Forschungsgruppen eigene Forschungsstipendien erhielten, kauften sie ihre eigenen Computer, hauptsächlich SparcStations, und sie übernahmen die Systemadministration selbst.
Früher wurde SunOS mit dem OpenView-Desktop und einem netten Dateimanager geliefert. So sah es aus:
Die meisten unserer Forscher liefen als Root, und mehr als einmal mussten wir ihre Betriebssysteme neu installieren, weil sich jemand entschlossen hatte, das Root-Verzeichnis aufzuräumen und / bin, / etc, / tmp und alles andere zu verschieben, was die Sicht auf die beiden unübersichtlich machte der Mülleimer oder ein Unterordner.
Andere Benutzer haben das Verzeichnis / bin aufgeräumt und alle nicht bekannten Befehle entfernt.
Die Glücklichen hatten Backups, die meisten hatten ein Bandlaufwerk gekauft, hatten aber keine Tradition, Backups selbst auszuführen.
Mitte bis Ende der 90er Jahre diskutierten ein Freund und ich über die Torheit von rm -rf *
und zu welchem Zeitpunkt eine Linux-Box hochgehen würde. Wir stiegen in statisch verknüpfte und dynamisch verknüpfte Bibliotheken ein, und ich ging davon aus, dass das System ohne ziemlich gut leben könnte, /lib
und benannte es dann auf meiner Workstation um. Es passierten schlimme Dinge , aber wir hatten noch einige offene Konsolenfenster, mit denen wir versuchen konnten, den Schaden zu beheben (das Herunterfahren war keine Option mehr). Keiner der Redakteure würde laufen. Es ist erstaunlich, welche esoterischen Verwendungen Sie für den echo
Befehl finden können.
vi
und Caps-Lockgegen/etc/passwd
su -
vi /etc/passwd
. Es gibt vipw
sowieso keine und "wir nehmen nur kleinere Änderungen vor".Ich habe das einmal gemacht. Erstaunlicherweise blieb das System über Monate funktionsfähig. Cronjobs liefen einwandfrei, in den Logfiles stachen keine Fehler heraus.
Wir bemerkten dieses Problem erst, als wir das System Monate später neu starteten und uns nicht an der Konsole anmelden konnten. ps
Es wurden eine Reihe von Jobs angezeigt, die der UID '0' und nicht dem Benutzer 'root' gehören.
Sie konnten sich weder als root anmelden noch ausführen su
oder su -
, und sudo
in diesem Feld befand sich kein . Es gab kein Diskettenlaufwerk, die CD-ROM war kaputt und keine USB-Anschlüsse (also keine externe CD-ROM). Der Einzelbenutzermodus funktionierte nicht, da Sie das Passwort für root eingeben müssen, und das kommt von /etc/passwd
.
rm -f * ~
und
rm -rf ${DIR}/
wann DIR
wurde nicht gesetzt!
${DIR}
? Denn $(DIR)
würde versuchen, DIR-Befehl auszuführen.
Ein einfaches halt
Erkennen einige Sekunden später, dass ich nicht auf einer lokalen Shell bin und keine Möglichkeit habe, den Produktionsserver wieder einzuschalten.
Gewonnene Erkenntnisse? Die Eingabeaufforderung der Maschine sieht nun so aus
[ --> root <-- @kompost:/home/echox] #
mit ein paar schönen roten Markups ;-)
molly-guard
, das prüft, ob Sie remote angemeldet sind und fragt, ob Sie dies wirklich möchten.
Mein Lieblingsmoment war, als ein Mitarbeiter, der ein Emacs-Benutzer ist, eine wichtige Datei bearbeiten wollte.
Da emacs
ist zu viel zu tippen, hatte er einen Alias für eingerichtet emacs
:
alias em=emacs
Unter dem Einfluss von zu wenig oder zu viel Kaffee hat er natürlich falsch geschrieben em
...
Naja, das ist nur ein weiterer Grund vi
...;)
alias e=emacs
.
Oder eine andere Erfahrung, wie man sich in ein paar einfachen Schritten wirklich dumm fühlt, die einem nicht so dumm vorkommen.
Schritt eins: Richten Sie ein Konto für das Kind ein, falls es eine Linux-Box verwenden möchte. Geben Sie ein triviales Kennwort ein, da dies schließlich ein Heimsystem ist und nicht dem Netz ausgesetzt ist.
Schritt zwei: Warten Sie, bis die Zeit abgelaufen ist, damit Sie sich nicht an Schritt eins erinnern können.
Schritt drei: Öffnen Sie den SSH-Port in der Firewall (eigentlich das NAT auf dem Router), um sich einzuschalten. Schließlich haben meine Konten ziemlich gute Passwörter, und es scheint nicht so, als gäbe es etwas sehr Wertvolles.
Schritt 4: Lassen Sie sich vom Internetdienstanbieter benachrichtigen, dass eine Art DOS-Aktivität auf einer schwedischen Site ausgeführt wird. Angenommen, es sind wahrscheinlich die Windows-Boxen, und untersuchen und härten Sie sie.
Fünfter Schritt: Lassen Sie sich vom ISP benachrichtigen, dass der Vorgang noch nicht abgeschlossen ist. Fragen Sie nach Details, erhalten Sie die IP-Adresse der schwedischen Site, starten Sie Wireshark und finden Sie heraus, von welcher Box der Angriff ausgeht.
Schritt sechs: Bereinigen Sie die Linux-Box und fühlen Sie sich dumm. Der Login stammt von einer rumänischen Adresse. Entfernen Sie Konten ohne gute Passwörter.
In den Computerlabors, als ich am College war, hatten sie einen Bildschirmschoner, der einen Haufen Bälle simulierte, der hin und her schwebte. Sie zogen jeweils mit simulierter Schwerkraft an.
Einmal, als ich mit den Einstellungen rumgespielt habe, ist es mit dem Fehler abgestürzt Error: force on balls too great
Ich habe einmal einen Gerätetreiber für Unix entwickelt. Es gab ein Zeigerproblem und während des Tests wurde das Ende eines Arrays im Kernel-Speicher abgeschrieben. Ich bemerkte dies nur langsam und drückte nicht sofort die Reset-Taste. Der Treiber hatte den gesamten Festplattenpuffer-Cache durchgekritzelt, der dann auf die Festplatte geschrieben wurde, bevor ich auf Zurücksetzen drückte. Viele der Blöcke waren Inodes und Verzeichnisse, und ich landete in einem total zerstörten Dateisystem. Ich denke, 6000 verwaiste Dateien wurden abgelegt, lost+found
bevor ich aufgab und neu installierte. Zum Glück war dies nur ein Testsystem, nicht meine Workstation mit all meinen Dateien.
Ich habe / etc gelöscht und dann wiederhergestellt . Ich glaube nicht, dass ich meine Lektion gelernt habe ... Ich musste mich auch von einem gelöschten erholen /bin
. Scheint zu passieren, wenn ich mit einem gearbeitet habe chroot
.
Letztes Jahr hat ein Kollege von mir eine unserer Linux-Workstations verwendet, um mit dem dd
Befehl Kopien von Flash-Disks zu erstellen . Er hat aus Versehen etwas Ähnliches wie das Folgende eingegeben:
dd if=flash-image.img of=/dev/sda1
Als er seinen Fehler bemerkte - das Überschreiben der Festplatte der Maschine anstelle des Flash-Laufwerks - war die Maschine bereits abgespritzt. Wir mussten die Box umbauen, die übrigens auch die Maschine war, auf der sich zu der Zeit alle unsere Entwicklungs-VMs befanden ...
dd
!!! :-)
Das ist mir letztes Jahr passiert. Ich habe einige Dateien mit einer temporären Variablen vom Server entfernt:
rm -rf ${prefix}*
Erraten Sie, was? Die Variable $prefix
wurde nicht definiert!
Sie können sich vorstellen, dass die Katastrophe dazu geführt hat, dass einige sehr wichtige Dateien gelöscht wurden.
Ich brach fast die Control-Cund lief zur CPU, um das Netzwerkkabel zu entfernen !!
Hahaha, ich bin sicher, jemand hat das schon getan ...
Während meines zweiten Studienjahres der Informatik erhielten wir eine Hausaufgabe, um ein Programm in C zu schreiben, das eine Reihe von Unterprozessen mit sich bringen würde fork
und sie mit Pipes in einem "Kreis" kommunizieren lassen und herausfinden, welcher der "Anführer" sein sollte ".
Wir waren damals noch ziemlich noobs und die meisten Leute hatten keine Linux-Maschinen, also arbeiteten wir an unseren Accounts auf dem Hauptserver unserer Fakultät (auf dem sich auch offizielle Sites und Mitarbeiter-Accounts befanden). Die meisten Leute haben Gabelbomben geschrieben, als sie versuchten, die Hausaufgaben zu machen. Über die Hälfte meiner Gruppe hat die abusers
Akte erreicht. Das war die höchste Auslastung auf diesem Server seit langem :)
Als meine Universität beschloss, das drahtlose Netzwerk auf die Verwendung der proprietären Cisco LEAP-Authentifizierung umzustellen ...
Begann eine sehr lange Schlacht, die gut genug endete. Verfasste Dokumentation für andere, die Linux ausführen und Zugang zum Internet haben wollten. Sechs Monate später beschlossen sie, auch PEAP-Unterstützung hinzuzufügen. Ohrfeigen
Es ist mein Favorit, weil ich gewonnen habe. Ich habe es zum Arbeiten gebracht.
Ich war Laborassistent in einer Linux-Klasse. Eine der Schülerinnen rief mich an, weil sie nicht mehr konnte, su -
weil sie bekam permission denied
. OK, sie hat das Passwort falsch eingegeben. Starten Sie den Einzelbenutzermodus neu und setzen Sie ihn zurück. Was?!su
STILL geht nicht ?! Es muss sich meinem Willen beugen! Also starte ich im Einzelbenutzermodus neu, um herauszufinden, was sie getan hat. Mir wurde klar, dass sie ranntechmod -R 777 /var/www/html/drupal-6.19 /
Beachten Sie das Leerzeichen zwischen dem Verzeichnisnamen und dem abschließenden Schrägstrich.
Nach ein paar Minuten von "Ich möchte wirklich nicht, dass sie neu installiert wird, also was macht das und wie.", Stellte ich fest, dass / bin / su nun über Dateiberechtigungen von verfügte 777
. Das kann auch als Dateiberechtigung von gelesen werden 0777
, die das setuid-Bit von entfernt /bin/su
. Eine schnelle chmod u+s /bin/su
und ich war ein Held.
Nicht das schmerzhaft ... Aber ein lustiger kleiner Moment:
Ich habe vertippt ls
wie sl
und fand heraus , dass der Sysadmin hatte etwas für diesen Fall installiert hat.
(bereits in Debian , Ubuntu , Gentoo , ... Repositories verfügbar )
git init
git clean -f
Das Repository wird dadurch nicht entfernt. Dies entfernt alles, was sich nicht im Repository befindet.
Nachdem ich versucht hatte, das vorhandene Repo zu entfernen und die Quellcodeverwaltung erneut zu starten (in der abgeschlossenen ersten Version eines Projekts), haben diese beiden Befehle meinen gesamten Code überarbeitet.
Ein Unternehmen, für das ich gearbeitet habe, hat sein Produkt auf SCO laufen lassen. Ich habe einige Fehler behoben, um zu verhindern, dass Anwendungen auf unserem Demoserver sehr langsam werden, und gleichzeitig wurde einigen Kunden eine Demo / Vorlesung über bevorstehende neue Funktionen gegeben.
Also habe ich die Anwendung ausgeführt, die stecken geblieben ist, habe meine Sachen darauf gemacht, um die Grundursache zu überprüfen, aber da sie immer noch "steckengeblieben" war, habe ich versucht, sie zu töten:
pkill -9 mytestapplication
Was ich gelernt habe war, dass pkill auf SCO nicht genau dasselbe macht wie auf Linux =)
... Es tötet im Grunde alles, worauf der Benutzer Zugriff hat, und mit root ... das ist alles =)
Mein Wechsel von Debian zu Ubuntu begann an dem Tag, an dem ich versuchte, einige Dateien und Verzeichnisse zu löschen, was bedeutete, sie zu tippen
rm -r /var/tmp/*
Leider habe ich ein Leerzeichen zwischen "/ var / tmp /" und "*" eingefügt und noch schlimmer, ich befand mich im Stammverzeichnis des Dateisystems.
root@workstation:/# rm -r /var/tmp/ *
Bitte versuchen Sie das nicht zu Hause!
Ich hatte zwei Laufwerke an einem Punkt installiert und hatte das Root-Dateisystem des zweiten Laufwerks in einem Verzeichnis innerhalb gemountet /mnt
. Ich befand mich in diesem Verzeichnis und versuchte zu löschen, gab var
aber rm -rf /var
stattdessen etwas ein. Ein gewisser Instinkt schien in dieses besagte var
Muss einzutreten mit einem Schrägstrich vorangestellt werden!
Als ich merkte, was ich getan hatte, schlug ich sofort zu, Ctrl-Caber es war zu spät. Meinerpm
Datenbank hatte das Gebäude längst verlassen. Ich habe ewig gebraucht, um alles wieder normal zu machen.
Nun zum schmerzhaften Teil.
Ich gehe zurück in dieses Verzeichnis in /mnt
um fortzufahren, was ich getan habe. Was schreibe ich? Sagen wir einfach, dieser Instinkt hat wieder eingesetzt.
Zumindest konnte ich das System beim zweiten Mal viel schneller wiederherstellen;)
rm
Befehl betreffen . Oder traurig.