Jawaban:
Saya ingin tahu apakah chmod 000 /
akan berhasil.
Yah, tanpa cacat. Beberapa menit kemudian saya mencari CD penyelamat.
Ketika saya pertama kali mulai bekerja sebagai konsultan pengguna untuk universitas yang saya hadiri, saya diberikan sudo
hak terbatas untuk membantu siswa yang kehilangan / lupa kata sandi mereka. sudo passwd <username>
adalah teman baruku. Satu jam setelah orientasi saya, keingintahuan saya membaik dan saya mengetik sudo passwd
dan menatap ngeri pada prompt untuk kata sandi baru. Saya agak takut untuk ^C
keluar dari itu, berpikir (secara keliru, ternyata) bahwa saya mungkin meninggalkan akun tersebut dalam keadaan sementara, jadi saya memasukkan kata sandi dan segera berjalan ke lantai atas ke domain lantai 2 yang suci dari SuperUser kampus dan bertanya apakah dia ingin mengetahui kata sandi root sistem utama.
passwd
berperilaku lucu saat dijalankan sebagai root. Misalnya, ketika gagal memeriksa kesalahan ketik, itu meminta lagi.
Terkejut tidak ada orang lain yang menyebutkan ini:
rm -rf .*
(Saat mencoba untuk menghapus semua file dan subdirektori tersembunyi, sepenuhnya lupa bahwa itu akan muncul kembali .
dan ..
)
rm
tidak akan melakukannya sekarang. Saya mencoba Darwin dan mendapatkan kesalahan rm: "." and ".." may not be removed
.
.
dan ..
, gunakan .[^.]*
. (Ya, ini sebenarnya akan melewatkan semua file yang dimulai dengan ..
, tetapi biasanya hanya ada satu.)
.??*
, yang saya temukan lebih mudah untuk diketik . Yang ini tidak akan cocok dengan file dot dua huruf seperti .a
, tetapi itu juga tidak biasa. Saya mencari file config di direktori home saya dengan grep -r .??*
, misalnya.
Makefile:
clean:
@rm -f * .o
Yang tentu saja membuat make clean
penghapusan kode sumber Anda bukan hanya file objek.
Pelajaran: gunakan kontrol versi.
*
dan.o
Seandainya seorang teman berjalan :() { :|:&}; :
di server jarak jauh tempat kami tidak memiliki akses konsol. Tidak dapat mem-boot ulang server produksi yang benar-benar beku .
Rusak (berdasarkan permintaan) agar lebih mudah dibaca.
:() # 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 ':'
Mungkin lebih mudah untuk melihatnya
bomb() { bomb|bomb& }; bomb
:
itu tidak melakukan apa pun. Dan itu tidak menggunakan memori sama sekali, hanya banyak garpu. [Ya, saya memang mencobanya :)]. Efek dapat diblokir dengan kuota pada jumlah proses per pengguna.
Maksud saya baik, saya benar-benar melakukannya. Mencoba untuk chmod
secara rekursif direktori dan akhirnya bertukar ./
dengan /
.
Tentu saja sebagai root, karena hanya dengan root dapat dicapai rasa sakit sejati (dan dengan demikian pencerahan).
Saya menghapus tabel partisi drive utama saya secara tidak sengaja, berpikir saya sedang mengerjakan drive lain.
Dengan scrollback, penggunaan yang hati-hati df
, memori, dan keberuntungan saya dapat membuatnya kembali dengan tepat, menulis ulang, reboot, dan berharap ... Dan itu berhasil.
dd
membaca blok 4k pertama dari setiap silinder yang disalurkan ke file -
untuk menemukan superblock dan dengan demikian awal dari sistem file. Ini ada di CD live dan tidak ada cukup RAM untuk melakukan semua yang perlu kami lakukan (termasuk menginstal satu atau dua paket) jadi kami menyalurkan ke proses yang berjalan di ssh pada komputer lain.
sfdisk -O
untuk membuat cadangan tabel partisi, selalu. FYI: cgsecurity.org/wiki/TestDisk dapat mengotomatiskan apa yang dilakukan @Neil Mayhew.
testdisk
menyelamatkan kotak saya
gpart
, yang mencari hal-hal yang mungkin menyerupai sistem file dan membangun tabel partisi dari itu.
Bukan momen saya, tapi milik orang lain.
Kembali ketika saya bekerja di fasilitas penelitian ilmu nuklir yang kami gunakan untuk menjalankan sejumlah komputer SunOS, Ultrix dan Linux dan para peneliti harus membagikan CPU pada mesin-mesin itu. Ketika masing-masing kelompok riset mendapatkan dana penelitian sendiri, mereka membeli komputer sendiri, kebanyakan SparcStations dan mereka melakukan administrasi sistem sendiri.
SunOS digunakan untuk mengirim dengan desktop OpenView dan manajer file yang bagus, seperti inilah tampilannya:
Sebagian besar peneliti kami menjalankan sebagai root, dan lebih dari sekali kami harus menginstal ulang sistem operasi mereka karena seseorang telah memutuskan untuk merapikan direktori root dan memindahkan / bin, / etc, / tmp dan segala sesuatu yang mengacaukan tampilan menjadi Trashcan atau beberapa subfolder.
Pengguna lain memilih untuk merapikan direktori / bin dan menghapus perintah apa pun yang tidak mereka ketahui.
Yang beruntung memiliki cadangan, sebagian besar telah membeli tape drive, tetapi tidak memiliki tradisi menjalankan backup sendiri.
Kembali di pertengahan hingga akhir 90-an, seorang teman saya dan saya sedang mendiskusikan kebodohan rm -rf *
dan pada titik apa sebuah kotak Linux akan naik turun. Kami masuk ke perpustakaan yang terhubung secara statis versus yang terhubung secara dinamis dan saya berpendapat bahwa sistem dapat hidup dengan baik tanpa /lib
dan kemudian melanjutkan untuk mengubah nama di workstation saya. Hal-hal buruk terjadi , tetapi kami ditinggalkan dengan beberapa jendela konsol terbuka yang dapat digunakan untuk memperbaiki kerusakan (shutdown bukan pilihan lagi). Tak satu pun dari editor akan berjalan. Sungguh menakjubkan penggunaan esoteris yang dapat Anda temukan untuk echo
perintah.
vi
dan Caps-Lockvs./etc/passwd
su -
vi /etc/passwd
. Tidak ada vipw
, dan "kami hanya melakukan pengeditan kecil".Saya melakukan ini sekali. Hebatnya, sistem tetap berfungsi selama berbulan-bulan. Cronjobs berjalan dengan baik, tidak ada kesalahan menonjol di logfiles.
Kami tidak melihat masalah ini sampai kami mem-boot ulang sistem beberapa bulan kemudian dan tidak bisa masuk di konsol. ps
menunjukkan banyak pekerjaan yang dimiliki oleh UID '0' bukan oleh pengguna 'root'.
Anda tidak bisa masuk sebagai root, atau menjalankan su
atau su -
, dan tidak ada sudo
di kotak ini. Tidak ada floppy drive, CD-ROM rusak dan tidak ada port USB (jadi tidak ada CD-ROM eksternal). Mode single user tidak berfungsi, karena Anda perlu mengetikkan kata sandi untuk root, dan itu berasal /etc/passwd
.
rm -f * ~
dan
rm -rf ${DIR}/
kapan DIR
tidak diatur!
${DIR}
? Karena $(DIR)
akan mencoba mengeksekusi perintah DIR.
Pengenalan sederhana halt
beberapa detik kemudian bahwa saya tidak menggunakan shell lokal dan tidak memiliki kemungkinan untuk menghidupkan kembali server produksi.
Pelajaran yang dipetik? Prompt dari mesin sekarang terlihat seperti
[ --> root <-- @kompost:/home/echox] #
dengan beberapa markup merah yang bagus ;-)
molly-guard
yang memeriksa apakah Anda login jarak jauh dan bertanya apakah Anda benar-benar ingin melakukan ini.
Momen favorit saya adalah, ketika rekan kerja, yang merupakan pengguna emacs, ingin mengedit file penting.
Karena emacs
terlalu banyak mengetik, ia harus menyiapkan alias untuk emacs
:
alias em=emacs
Di bawah pengaruh kopi yang tidak cukup atau terlalu banyak, dia tentu saja salah mengetik em
...
Yah, ini hanyalah alasan lain untuk menggunakan vi
...;)
alias e=emacs
.
Atau pengalaman lain, bagaimana merasa benar-benar bodoh dalam beberapa langkah mudah yang tampaknya tidak terlalu bodoh secara individual.
Langkah satu: buat akun untuk anak itu, kalau-kalau dia ingin menggunakan kotak Linux. Berikan kata sandi yang sepele, karena bagaimanapun ini adalah sistem rumah dan tidak terekspos ke internet.
Langkah dua: beri waktu untuk berlalu, jadi Anda tidak ingat langkah pertama.
Langkah tiga: buka port SSH di firewall (sebenarnya NAT di router) untuk ssh in. Lagi pula, akun saya memiliki kata sandi yang cukup bagus, dan tidak seperti ada sesuatu yang sangat berharga.
Langkah empat: dapatkan pemberitahuan dari ISP bahwa ada semacam aktivitas DOS yang menuju ke situs Swedia. Asumsikan itu mungkin kotak Windows, dan periksa dan perkuat.
Langkah lima: dapatkan pemberitahuan dari ISP bahwa itu masih terjadi. Mintalah beberapa perincian, dapatkan alamat IP situs Swedia, jalankan Wireshark, temukan kotak dari mana serangan itu berasal.
Langkah enam: bersihkan kotak Linux, merasa bodoh. Cari info masuk berasal dari alamat Rumania. Hapus akun tanpa kata sandi yang baik.
Di laboratorium komputer ketika saya masih kuliah, mereka memiliki screen saver yang mensimulasikan sekelompok bola yang akan melayang bolak-balik. Mereka menarik masing-masing dengan gravitasi simulasi.
Suatu kali, ketika saya bermain-main dengan pengaturan, itu jatuh dengan kesalahan Error: force on balls too great
Saya pernah mengembangkan driver perangkat untuk Unix. Itu memiliki masalah pointer dan selama pengujian mulai menghapus akhir array dalam memori kernel. Saya lambat menemukan ini dan tidak langsung menekan tombol reset. Driver telah menulis di seluruh cache buffer disk yang kemudian dibuang ke disk sebelum saya tekan reset. Banyak blok adalah inode dan direktori, dan saya berakhir dengan filesystem yang benar-benar hancur. Saya pikir 6000 file yatim piatu dimasukkan lost+found
sebelum saya menyerah dan diinstal ulang. Untungnya, ini hanya sistem pengujian, bukan workstation saya dengan semua file saya di atasnya.
Saya menghapus / etc dan kemudian memulihkannya . Saya tidak berpikir saya belajar pelajaran saya ... Saya harus pulih dari yang dihapus /bin
juga. Tampaknya terjadi ketika saya sudah bekerja dengan seorang chroot
.
Tahun lalu, seorang kolega saya menggunakan salah satu workstation linux kami untuk membuat salinan flash disk menggunakan dd
perintah. Dia tidak sengaja mengetik sesuatu yang mirip dengan yang berikut:
dd if=flash-image.img of=/dev/sda1
Pada saat dia menyadari kesalahannya - menimpa hard disk mesin dan bukan flash drive - mesin sudah disemprot. Kami harus membangun kembali kotak itu, yang kebetulan juga merupakan mesin yang menampung semua VM pengembangan kami pada saat itu ...
dd
!!! :-)
Ini terjadi pada saya tahun lalu. Saya sedang menghapus beberapa file dari server menggunakan variabel sementara:
rm -rf ${prefix}*
Tebak apa? Variabel $prefix
tidak ditentukan!
Bisa dibayangkan bencana ... itu mengakibatkan beberapa file yang sangat penting dihapus.
Saya hampir memecahkan Control-Cdan berlari ke CPU untuk melepaskan kabel jaringan !!
Hahaha aku yakin seseorang sudah melakukan ini ...
Sementara di tahun kedua saya belajar ilmu komputer kami diberi tugas pekerjaan rumah untuk menulis sebuah program dalam C yang akan menelurkan sejumlah subproses dengan fork
dan membuat mereka berkomunikasi dengan pipa dalam "lingkaran" dan mencari tahu mana yang harus menjadi "pemimpin" ".
Kami masih sangat noobs saat itu dan sebagian besar peple tidak memiliki mesin Linux, jadi kami mengerjakan akun kami di server utama fakultas kami (yang menjadi tuan rumah situs resmi dan akun staf serta situs juga). Sebagian besar orang menulis forkbomb pada tahap mencoba mengerjakan pekerjaan rumah. Lebih dari setengah dari kelompok saya membuka abusers
file. Itu adalah beban tertinggi pada server itu dalam waktu yang lama :)
Ketika Universitas saya memutuskan untuk mengganti jaringan nirkabel untuk menggunakan otentikasi LEAP Cisco milik ...
Memulai pertempuran yang sangat panjang yang berakhir dengan cukup baik. Menulis dokumentasi untuk orang lain yang ingin menjalankan Linux dan memiliki akses ke internet. Enam bulan kemudian mereka memutuskan untuk menambahkan dukungan PEAP juga. wajah tamparan
Itu favorit saya karena saya menang. Saya berhasil.
Saya adalah seorang asisten lab untuk kelas Linux. Salah satu siswa memanggil saya karena dia tidak bisa lagi su -
karena dia mendapatkan permission denied
. Oke, dia salah ingat / salah ketik kata sandi. Reboot ke mode pengguna tunggal dan reset. Apa?! su
MASIH tidak berfungsi ?! HARUS tunduk pada kehendak saya! Jadi saya reboot ke mode single user untuk mencari tahu apa yang dia lakukan. Saya menyadari bahwa dia berlarichmod -R 777 /var/www/html/drupal-6.19 /
Perhatikan jarak antara nama direktori dan garis miring terakhir.
Setelah beberapa menit, "Saya benar-benar tidak ingin menginstalnya kembali, jadi apa yang dilakukan dan bagaimana ini.", Saya berhasil menemukan bahwa / bin / su sekarang memiliki izin file 777
. Itu juga dapat dibaca sebagai izin file 0777
, yang menghapus bit setuid dari /bin/su
. Cepat chmod u+s /bin/su
dan saya adalah pahlawan.
Bukan yang menyakitkan ... Tapi momen kecil yang menyenangkan:
Aku sudah salah ketik ls
sebagai sl
dan menemukan bahwa sysadmin memiliki sesuatu yang dipasang untuk kasus tersebut.
(sudah tersedia di repositori Debian , Ubuntu , Gentoo , ...)
git init
git clean -f
Ini tidak menghapus repositori. Ini menghapus semua yang tidak ada di repositori.
Setelah mencoba untuk menyingkirkan repo yang ada dan kemudian mulai kontrol sumber lagi (pada menyelesaikan versi pertama dari proyek), kedua perintah nuked seluruh kode saya.
Sebuah perusahaan tempat saya bekerja dulu memiliki produknya yang berjalan di SCO. Saya sedang melakukan beberapa debug tentang aplikasi menjadi sangat lambat di server demo kami dan pada saat yang sama ada banyak pelanggan yang diberikan demo / kuliah tentang fitur baru yang akan datang.
Jadi, saya menjalankan aplikasi yang dulu macet, melakukan hal-hal saya untuk memverifikasi akar masalahnya, tetapi karena masih "macet", saya mencoba membunuhnya:
pkill -9 mytestapplication
Apa yang saya pelajari adalah bahwa pkill tidak melakukan hal yang persis sama pada SCO seperti pada linux =)
... Ini pada dasarnya membunuh semua yang dapat diakses pengguna, dan dengan root ... itu segalanya =)
Peralihan saya dari Debian ke Ubuntu dimulai pada hari saya mencoba menghapus beberapa file dan direktori, yang berarti mengetik
rm -r /var/tmp/*
Sayangnya, saya memasukkan spasi antara "/ var / tmp /" dan "*" dan bahkan lebih buruk lagi, saya berada di root dari sistem file.
root@workstation:/# rm -r /var/tmp/ *
Tolong jangan mencobanya di rumah!
Saya memiliki dua drive yang diinstal pada satu titik dan memiliki sistem file root dari drive kedua yang dipasang di direktori di dalamnya /mnt
. Saya berada di direktori itu dan mencoba untuk menghapus var
tetapi akhirnya mengetik rm -rf /var
. Beberapa naluri sepertinya menendang yang mengatakan var
harus didahului dengan garis miring!
Ketika saya menyadari apa yang telah saya lakukan, saya langsung memukul Ctrl-Ctetapi sudah terlambat. rpm
Database saya sudah lama meninggalkan gedung. Saya menghabiskan waktu lama untuk mengembalikan semuanya menjadi normal.
Sekarang untuk bagian yang menyakitkan.
Saya kembali ke direktori itu /mnt
untuk melanjutkan apa yang telah saya lakukan. Apa yang saya ketik? Baiklah, katakan saja insting itu muncul lagi.
Setidaknya saya bisa memulihkan sistem lebih cepat untuk yang kedua kalinya;)
rm
perintah. Atau sedih.