Odpowiedzi:
Byłem ciekawy, czy chmod 000 /
zadziała.
Cóż, bezbłędnie. Kilka minut później szukałem ratunkowej płyty CD.
Kiedy po raz pierwszy zacząłem pracować jako konsultant użytkowników dla uniwersytetu, do którego uczęszczałem, otrzymałem ograniczone sudo
prawa do pomocy studentom, którzy zgubili / zapomnieli hasła. sudo passwd <username>
był moim nowym przyjacielem. Godzinę po mojej orientacji moja ciekawość zwyciężyła, więc wpisałem się sudo passwd
i wpatrzyłem się z przerażeniem na monit o nowe hasło. Trochę się przestraszyłem ^C
, myśląc (jak się okazuje, że to erotycznie), że mogę pozostawić to konto w stanie przejściowym, więc wprowadziłem hasło i od razu poszedłem na górę do uświęconej domeny drugiego piętra kampus SuperUser i zapytał, czy chciałby znać hasło roota głównego systemu.
passwd
zachowuje się zabawnie po uruchomieniu jako root. Na przykład, gdy sprawdzanie literówki nie powiedzie się, pyta ponownie.
Zaskoczony, nikt jeszcze o tym nie wspominał:
rm -rf .*
(Podczas próby usunięcia wszystkich ukrytych plików i podkatalogów, całkowicie zapominając, że będzie się powtarzał w .
i ..
)
rm
nie robi. Wypróbowałem Darwina i dostałem błąd rm: "." and ".." may not be removed
.
.
i ..
, użyj .[^.]*
. (Cóż, tak naprawdę brakuje wszystkich plików, zaczynając od ..
, ale zwykle jest tylko jeden.)
.??*
łatwiejsze do pisania. Ten nie będzie pasował do dwuliterowych plików kropek .a
, ale są one również niezwykłe. Na przykład szukam plików konfiguracyjnych w moim katalogu domowym grep -r .??*
.
Makefile:
clean:
@rm -f * .o
Co oczywiście powoduje make clean
wyczyszczenie kodu źródłowego zamiast tylko plików obiektowych.
Lekcja: użyj kontroli wersji.
*
i.o
Gdyby znajomy działał :() { :|:&}; :
na zdalnym serwerze, do którego nie mieliśmy dostępu do konsoli. Nie można go ponownie uruchomić, całkowicie zamrożony, serwer produkcyjny .
Podział (na żądanie), aby był bardziej czytelny.
:() # 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 ':'
Może być łatwiej na to spojrzeć
bomb() { bomb|bomb& }; bomb
:
to nic nie robi. I w ogóle nie wykorzystuje pamięci, po prostu dużo forksuje. [Tak, próbowałem :)]. Efekty można blokować przydziałem liczby procesów na użytkownika.
Miałem na myśli dobrze, naprawdę. Próbowałem chmod
rekurencyjnie katalogu i skończyłem ./
z /
.
Oczywiście jako korzeń, ponieważ tylko za pomocą korzenia można osiągnąć prawdziwy ból (a tym samym oświecenie).
Przez przypadek wyczyściłem tablicę partycji głównego dysku, myśląc, że pracuję na innym dysku.
Dzięki przewijaniu, ostrożnemu użyciu df
, pamięci i szczęściu udało mi się dokładnie go odtworzyć, przepisać, uruchomić ponownie i mieć nadzieję ... I zadziałało.
dd
odczytem pierwszego bloku 4k każdego cylindra podłączonego do niego, file -
aby znaleźć superblok, a tym samym początek systemu plików. To było na live CD i nie było wystarczającej ilości pamięci RAM, aby zrobić wszystko, co musieliśmy zrobić (w tym zainstalować pakiet lub dwa), więc przeszliśmy do procesu działającego w ssh na innym komputerze.
sfdisk -O
do tworzenia kopii zapasowej tabeli partycji. Informacje: cgsecurity.org/wiki/TestDisk może zautomatyzować to, co zrobił @Neil Mayhew.
testdisk
uratowałem swoje pudełko
gpart
, którzy szukają rzeczy, które mogą przypominać systemy plików i na tej podstawie budują tablicę partycji.
Nie tak naprawdę moja chwila, ale czyjaś inna.
Kiedy pracowałem w ośrodku badawczym nauk nuklearnych, pracowaliśmy na wielu komputerach SunOS, Ultrix i Linux, a naukowcy musieli dzielić procesor na tych komputerach. Ponieważ poszczególne grupy badawcze otrzymały własne granty badawcze, zakupiły własne komputery, głównie SparcStations i same sami administrowały systemem.
SunOS był dostarczany z pulpitem OpenView i ładnym menedżerem plików, tak to wyglądało:
Większość naszych badaczy działała jako root i niejednokrotnie musieliśmy ponownie instalować systemy operacyjne, ponieważ ktoś postanowił uporządkować katalog główny i przeniósł / bin, / etc, / tmp i wszystko inne, co zaśmieciło widok Kosz lub jakiś podfolder.
Inni użytkownicy postanowili uporządkować katalog / bin i usunąć wszelkie polecenia, których nie znali.
Szczęśliwcy mieli kopie zapasowe, większość kupiła napęd taśmowy, ale nie miała tradycji samodzielnego wykonywania kopii zapasowych.
W połowie lat 90. rozmawialiśmy z moim przyjacielem o szaleństwie, rm -rf *
w którym momencie Linux miałby upaść. Przeszliśmy do bibliotek połączonych statycznie i dynamicznie, a ja uznałem, że system mógłby funkcjonować całkiem dobrze bez, /lib
a następnie przystąpiłem do zmiany nazwy na mojej stacji roboczej. Zdarzały się złe rzeczy , ale pozostało nam kilka otwartych okien konsoli, za pomocą których można naprawić szkody (wyłączenie nie było już opcją). Żaden z edytorów nie działał. To niesamowite, że ezoteryczne zastosowania można znaleźć w echo
poleceniu.
vi
i Caps-Lockvs./etc/passwd
su -
vi /etc/passwd
. Nie mavipw
, a „i tak dokonujemy drobnych zmian”.Zrobiłem to raz. O dziwo, system pozostawał funkcjonalny przez wiele miesięcy. Cronjobs działał dobrze, w plikach dziennika nie wyróżniały się żadne błędy.
Nie zauważyliśmy tego problemu, dopóki nie uruchomiliśmy systemu kilka miesięcy później i nie mogliśmy zalogować się na konsoli. ps
pokazał kilka zadań należących do UID „0”, a nie do użytkownika „root”.
Nie można zalogować się jako root, ani uruchomić su
lub su -
, i nie było tego sudo
w tym polu. Nie było napędu dyskietek, dysk CD-ROM został uszkodzony i nie ma portów USB (więc nie ma zewnętrznego napędu CD-ROM). Tryb pojedynczego użytkownika nie działał, ponieważ musisz wpisać hasło użytkownika root, a pochodzi ono z /etc/passwd
.
rm -f * ~
i
rm -rf ${DIR}/
kiedy DIR
nie został ustawiony!
${DIR}
? Ponieważ $(DIR)
próbowałby wykonać polecenie DIR.
Kilka halt
sekund później proste stwierdzenie, że nie jestem w lokalnej powłoce i nie mam możliwości ponownego włączenia serwera produkcyjnego.
Zdobyta wiedza? Wygląda teraz komunikat zachęty
[ --> root <-- @kompost:/home/echox] #
z ładnym czerwonym znacznikiem ;-)
molly-guard
które sprawdza, czy jesteś zalogowany zdalnie i pyta, czy naprawdę chcesz to zrobić.
Moim ulubionym momentem było, gdy współpracownik, który jest użytkownikiem emacsa, chciał edytować ważny plik.
Ponieważ emacs
jest zbyt wiele do pisania, dla którego skonfigurował aliasemacs
:
alias em=emacs
Pod wpływem niewystarczającej lub zbyt dużej ilości kawy oczywiście źle napisał em
...
Cóż, to tylko kolejny powód do użycia vi
...;)
alias e=emacs
.
Lub kolejne doświadczenie, jak poczuć się naprawdę głupio w kilku prostych krokach, które nie wydają się takie głupie indywidualnie.
Krok pierwszy: załóż konto dla dziecka, na wypadek, gdyby chciał skorzystać z Linux-a. Daj mu trywialne hasło, ponieważ w końcu jest to system domowy i nie jest narażony na działanie sieci.
Krok drugi: poczekaj, aż upłynie czas, więc nie pamiętasz kroku pierwszego.
Krok trzeci: otwórz port SSH w zaporze ogniowej (właściwie NAT na routerze), aby się zalogować. W końcu moje konta mają całkiem dobre hasła i nie jest tak, że coś jest niezwykle cenne.
Krok czwarty: otrzymaj powiadomienie od dostawcy usług internetowych o przejściu aktywności DOS na szwedzką stronę. Załóżmy, że to prawdopodobnie okna systemu Windows, i zbadaj je i stwardnij.
Krok piąty: otrzymaj powiadomienie od dostawcy usług internetowych, że nadal trwa. Zapytaj o szczegóły, uzyskaj adres IP szwedzkiej strony, uruchom Wireshark, znajdź pole, z którego pochodzi atak.
Krok szósty: oczyść Linuksa, czując się głupio Znajdź login pochodzi z rumuńskiego adresu. Usuń konta bez dobrych haseł.
W pracowniach komputerowych, gdy byłem na studiach, mieli wygaszacz ekranu, który symulował kilka piłek, które unosiłyby się do przodu i do tyłu. Pociągnęli każdego z symulowaną grawitacją.
Kiedyś, gdy bałaganiłem ustawienia, rozbił się z błędem Error: force on balls too great
Kiedyś opracowywałem sterownik urządzenia dla Uniksa. Miał problem ze wskaźnikiem i podczas testowania zaczął zapisywać koniec tablicy w pamięci jądra. Powoli to zauważyłem i nie nacisnąłem przycisku resetowania od razu. Sterownik nabazgrał całą pamięć podręczną bufora dysku, który został następnie opróżniony na dysk, zanim wykonałem reset. Wiele bloków to i-węzły i katalogi, a ja skończyłem z całkowicie zniszczonym systemem plików. Myślę, że lost+found
przed poddaniem się i ponownym zainstalowaniem włożono 6000 osieroconych plików . Na szczęście był to tylko system testowy, a nie moja stacja robocza z wszystkimi moimi plikami.
I usunięte /, itp, a następnie odzyskuje się . Nie sądzę, żebym nauczył się mojej lekcji ... Musiałem też zregenerować się po usunięciu /bin
. Wydaje się, że tak się dzieje, kiedy pracuję z chroot
.
W zeszłym roku mój kolega używał jednej z naszych stacji roboczych z systemem Linux do tworzenia kopii dysków flash za pomocą dd
polecenia. Przypadkowo wpisał coś podobnego do następującego:
dd if=flash-image.img of=/dev/sda1
Zanim zdał sobie sprawę ze swojego błędu - nadpisania dysku twardego zamiast dysku flash - maszyna była już ukryta. Musieliśmy przebudować skrzynkę, która nawiasem mówiąc, była także maszyną obsługującą wszystkie nasze maszyny wirtualne rozwoju w tym czasie ...
dd
!!! :-)
Zdarzyło mi się to w zeszłym roku. Usuwałem niektóre pliki z serwera za pomocą zmiennej tymczasowej:
rm -rf ${prefix}*
Zgadnij co? Zmienna $prefix
nie została zdefiniowana!
Możesz sobie wyobrazić katastrofę ... która spowodowała usunięcie niektórych bardzo krytycznych plików.
Prawie zepsułem się Control-Ci pobiegłem do procesora, aby odłączyć kabel sieciowy !!
Hahaha jestem pewien, że ktoś już to zrobił ...
Podczas mojego drugiego roku studiów informatyki dostaliśmy zadanie domowe do napisania programu w C, który odrodziłby wiele podprocesów z fork
i umożliwiłby im komunikację z rurami w „okręgu” i ustalenie, który z nich powinien być „liderem” „.
Wciąż byliśmy dość noobami i większość peple nie miała żadnych maszyn z Linuksem, więc pracowaliśmy nad naszymi kontami na głównym serwerze naszego wydziału (który hostował oficjalną stronę, a także konta pracowników i strony). Większość ludzi pisała widełki na pewnym etapie odrabiania lekcji. Ponad połowa mojej grupy dotarła do abusers
akt. To było największe obciążenie na tym serwerze od dłuższego czasu :)
Kiedy moja uczelnia postanowiła zmienić sieć bezprzewodową, aby korzystać z zastrzeżonego uwierzytelnienia Cisco LEAP ...
Rozpoczęła się bardzo długa bitwa, która zakończyła się dość dobrze. Napisałem dokumentację dla innych, którzy chcieli uruchomić Linuksa i mieć dostęp do Internetu. Sześć miesięcy później postanowili również dodać obsługę PEAP. uderzenie w twarz
To moje ulubione, bo wygrałem. Mam to do pracy.
Byłem asystentem laboratoryjnym na zajęciach z Linuksa. Jeden ze studentów zadzwonił do mnie, ponieważ nie mogła już, su -
bo dostawała permission denied
. OK, źle zapamiętała / źle wpisała hasło. Uruchom ponownie w trybie pojedynczego użytkownika i zresetuj. Co?!su
STILL nie działa ?! MUSI pokłonić się mojej woli! Ponownie uruchamiam się w trybie pojedynczego użytkownika, aby dowiedzieć się, co zrobiła. Uświadomiłem sobie, że ona biegłachmod -R 777 /var/www/html/drupal-6.19 /
Zwróć uwagę na spację między nazwą katalogu a ostatnim ukośnikiem.
Po kilku minutach „Naprawdę nie chcę jej ponownie instalować, więc co to robi i jak”. Udało mi się znaleźć, że / bin / su ma teraz uprawnienia do plików 777
. Można to również odczytać jako uprawnienia do pliku 0777
, co usuwa bit setuid /bin/su
. Szybki chmod u+s /bin/su
i byłem bohaterem.
Nie to bolesne ... Ale zabawna chwila:
Błędnie wpisałem ls
jako sl
i dowiedziałem się, że sysadmin miał coś zainstalowanego na taki przypadek.
(już dostępne w repozytoriach Debian , Ubuntu , Gentoo , ...)
git init
git clean -f
To nie usuwa repozytorium. To usuwa wszystko, czego nie ma w repozytorium.
Po próbie pozbycia się istniejącego repozytorium, a następnie ponownego uruchomienia kontroli źródła (w ukończonej pierwszej wersji projektu), te dwie komendy zniszczyły cały mój kod.
Firma, dla której kiedyś pracowałem, miała swój produkt na SCO. Debiutowałem, gdy aplikacje działały bardzo wolno na naszym serwerze demonstracyjnym, a jednocześnie wielu klientów otrzymało prezentację / wykład na temat nadchodzących nowych funkcji.
Więc uruchomiłem aplikację, która kiedyś się zacięła, zrobiłem na niej swoje rzeczy, aby zweryfikować główną przyczynę, ale ponieważ nadal „utknęła”, próbowałem ją zabić:
pkill -9 mytestapplication
Nauczyłem się, że pkill nie działa dokładnie tak samo w SCO, jak w Linux =)
... Zasadniczo zabija wszystko, do czego użytkownik ma dostęp, a przy rootowaniu ... to wszystko =)
Moja zmiana z Debiana na Ubuntu rozpoczęła się w dniu, w którym próbowałem usunąć niektóre pliki i katalogi, co oznaczało pisanie
rm -r /var/tmp/*
Niestety wstawiłem spację między „/ var / tmp /” a „*”, a co gorsza, byłem w katalogu głównym systemu plików.
root@workstation:/# rm -r /var/tmp/ *
Proszę, nie próbuj tego w domu!
Miałem dwa dyski zainstalowane w jednym punkcie i główny system plików drugiego dysku zamontowano w katalogu wewnątrz /mnt
. Byłem w tym katalogu i próbowałem usunąć, var
ale rm -rf /var
zamiast tego pisałem . Jakiś instynkt zdawał się budzić przypuszczenie, że to var
musi być poprzedzone cięciem!
Kiedy zdałem sobie sprawę z tego, co zrobiłem, natychmiast uderzyłem, Ctrl-Cale było już za późno. Moja rpm
baza danych już dawno opuściła budynek. Spędziłem wieki, przywracając wszystko do normy.
Teraz część bolesna.
Wracam do tego katalogu w /mnt
aby wznowić to, co robiłem. Co mam wpisać? Powiedzmy, że instynkt ponownie się uruchomił.
Przynajmniej udało mi się przywrócić system za drugim razem znacznie szybciej;)
rm
polecenia. Lub smutny.