Orang-orang yang tidak mengerti Terminal sering takut menggunakannya karena takut mereka akan mengacaukan perintah mereka dan merusak komputer mereka. Mereka yang tahu Terminal lebih tahu bahwa bukan itu masalahnya - biasanya Terminal hanya akan menampilkan kesalahan. Tapi adakah sebenarnya perintah yang akan membuat crash komputer Anda?
48
Jawaban:
Salah satu cara untuk menabrak komputer adalah dengan mengeksekusi bom fork .
Anda dapat menjalankannya di unix-sytem dengan:
Ini adalah perintah yang akan menelurkan proses secara rekursif sampai OS sangat sibuk sehingga tidak akan menanggapi tindakan apa pun lagi.
sumber
;
dengan&
dan Anda bisa menghapus semua file dan bom pada waktu yang bersamaan, dan lihat mana yang merusak sistem lebih dulu!Tidak yakin apa yang Anda maksud tentang 'menabrak' komputer - jika Anda ingin mengucapkannya kembali dengan mengatakan 'render komputer tidak dapat digunakan', maka ya. Tentu saja yang diperlukan hanyalah perintah sesat - hanya saat di mana Anda tidak berpikir jernih tentang apa yang Anda lakukan, mirip dengan ketika Anda berbicara tanpa berpikir, dan kerusakannya bisa sangat besar dan hampir seketika. Contoh klasik:
Jika Anda membiarkan perintah itu berjalan hanya dalam satu detik, itu dapat menghapus cukup banyak sistem Anda untuk membuatnya tidak bisa di-boot, dan mungkin menyebabkan kehilangan data yang tidak dapat dikembalikan lagi. Jangan lakukan itu.
sumber
-r
berarti menghapus file secara rekursif dalam direktori.-f
berarti "memaksa" seperti dalam jangan meminta konfirmasi, terlepas dari izin file yang diberikan./
adalah direktori root dari sistem file, yang berarti ia akan menghancurkan apa saja dan segalanya, kecuali mungkin beberapa file khusus yang tidak berperilaku seperti file biasa. Selain itu, Anda akan kesulitan menemukan perintah singkat yang akan merusak sistem Anda tanpa izin root / admin.rm -rf /
beberapa waktu lalu, danrm
mengatakan bahwa jika Anda ingin menghapus root, maka gunakan flag ini-dan-itu. Tidak ada data yang hilang. Sepertinya ada perlindungan keamanan sekarang dari berjalan membabi butarm -rf /
.rm -rf
sangat mirip dengan yang legal, yang benar-benar salah: /Misalkan Anda tidak tahu apa yang Anda lakukan dan berusaha melakukan backup dari beberapa hard drive
Nah jika Anda mencampurnya (beralih jika dan dari), itu akan menimpa data baru dengan data lama, tidak ada pertanyaan.
Campuran yang serupa dapat terjadi dengan utilitas arsip. Dan terus terang dengan sebagian besar utilitas baris perintah.
Jika Anda ingin contoh campuran satu karakter yang akan crash sistem Anda lihat skenario ini: Anda ingin memindahkan semua file di direktori saat ini ke yang lain:
Mari kita terima fakta yang telah Anda pelajari
./
untuk menunjukkan direktori saat ini. (Saya lakukan) Nah jika Anda menghilangkan titik, itu akan mulai memindahkan semua file Anda. Termasuk file sistem Anda. Anda beruntung tidak sudo ini. Tetapi jika Anda membaca di suatu tempat bahwa dengan 'sudo -i' Anda tidak akan lagi harus mengetikkan sudo Anda login sebagai root sekarang. Dan sekarang sistem Anda makan sendiri di depan mata Anda.Tapi sekali lagi saya pikir hal-hal seperti menimpa file kode berharga saya dengan sampah, karena saya mengacaukan satu karakter atau karena saya mencampur urutan parameter, lebih banyak masalah.
Katakanlah saya ingin memeriksa kode assembler yang dihasilkan gcc:
Misalkan saya sudah memiliki program.s dan saya menggunakan penyelesaian TAB. Saya sedang terburu-buru dan lupa untuk TAB dua kali:
Sekarang saya memiliki kode assembler di program.c saya dan tidak ada kode c lagi. Yang paling tidak merupakan kemunduran nyata bagi sebagian orang, tetapi bagi yang lain ini merupakan awal-dari-awal-waktu.
Saya pikir ini adalah orang-orang yang akan menyebabkan "kerusakan" nyata. Saya tidak terlalu peduli jika sistem saya crash. Saya akan peduli dengan data saya yang hilang.
Sayangnya ini adalah kesalahan yang harus dilakukan sampai Anda belajar menggunakan terminal dengan tindakan pencegahan yang tepat.
sumber
gcc program.c -o program.c
terima kasih tepatnya untuk penyelesaian tab. Saya belajar menggunakan kontrol versi secara agama setelah itu.Menyebabkan panik kernel lebih mirip dengan menabrak daripada jawaban lain yang saya lihat di sini sejauh ini:
(kode diambil dari sini dan juga ditemukan di dokumentasi Apple sendiri )
Anda mungkin juga mencoba:
Saya belum memverifikasi bahwa yang kedua benar-benar berfungsi (dan saya tidak berniat karena saya benar-benar membuka beberapa pekerjaan saat ini).
sumber
No matching processes were found
dtrace: system integrity protection is on, some features will not be available
dtrace: description 'BEGIN' matched 1 probe
dtrace: could not enable tracing: Permission denied
dtrace
yang secara efektif dikebiri oleh SIP.kernel_task
bukan proses normal. Itu abadi; Itu tidak dapat dibunuh kecuali melalui kesalahan sendiri (dan itu akan disebut KP dan membawa seluruh mesin ke bawah).kernel_task
PID adalah nominal 0, tetapi jika Anda memberikannya kekill(pid, sig)
syscall, halaman manual mengatakan Jikapid
sama dengan 0, makasig
dikirim ke setiap proses dalam grup proses dari proses pemanggilan. . Jadi, Anda tidak dapat mengirimkernel_task
sinyal.MacOS modern membuatnya sangat sulit untuk crash mesin Anda sebagai pengguna yang tidak memiliki hak (yaitu tanpa menggunakan
sudo
), karena sistem UNIX dimaksudkan untuk menangani ribuan pengguna tanpa membiarkan mereka menghancurkan seluruh sistem. Jadi, untungnya, Anda biasanya harus diminta sebelum Anda melakukan sesuatu yang menghancurkan mesin Anda.Sayangnya, perlindungan itu hanya berlaku untuk sistem itu sendiri. Seperti yang diilustrasikan xkcd, ada banyak hal yang Anda pedulikan yang tidak dilindungi oleh Perlindungan Integritas Sistem, hak akses root atau permintaan kata sandi:
Jadi, ada banyak hal yang bisa Anda ketik yang hanya akan menghancurkan akun pengguna Anda dan semua file Anda jika Anda tidak hati-hati. Beberapa contoh:
rm -rf ${TEMPDIR}/*
. Ini tampaknya benar-benar masuk akal, sampai Anda menyadari bahwa variabel lingkungan diejaTMPDIR
.TEMPDIR
biasanya tidak terdefinisi, yang membuat inirm -rf /
. Bahkan tanpasudo
, ini dengan senang hati akan menghapus segala sesuatu yang Anda miliki untuk menghapus izin, yang biasanya akan mencakup seluruh folder rumah Anda. Jika Anda membiarkan ini berjalan cukup lama, itu juga akan mengeluarkan semua drive yang terhubung ke mesin Anda, karena Anda biasanya memiliki izin menulis untuk itu.find ~ -name "TEMP*" -o -print | xargs rm
.find
biasanya akan menemukan file yang cocok dengan kriteria tertentu dan mencetaknya. Tanpa-o
ini, lakukan apa yang Anda harapkan dan hapus setiap file yang dimulai denganTEMP*
( selama Anda tidak memiliki spasi di path ). Tapi,-o
berarti "atau" (bukan "output" seperti halnya untuk banyak perintah lain!), Menyebabkan perintah ini untuk benar-benar menghapus semua file Anda. Kekecewaan.ln -sf link_name /some/important/file
. Saya mendapatkan sintaks untuk perintah ini sesekali salah, dan itu akan dengan senang hati menimpa file penting Anda dengan tautan simbolis yang tidak berguna.kill -9 -1
akan membunuh semua program Anda, mengeluarkan Anda lebih cepat dan mungkin menyebabkan kehilangan data.sumber
find
memiliki-delete
argumen yang jauh lebih aman daripada menyalurkan kexargs rm
ln -sf
dapat dilakukan ... dan bagaimana memulihkannya :-)find -print0 | xargs -0
untuk menangani karakter aneh dengan aman dalam nama file.<whatever> | xargs echo <something>
dulu, untuk melihat pratinjau apa perintah xargs sebenarnya akan berjalan. xargs adalah contoh hebat mengapa CLI begitu kuat: Anda dapat beroperasi pada banyak, banyak item sekaligus tanpa konfirmasi sial dan pegangan tangan ... pastikan Anda mengatakannya untuk melakukan apa yang Anda inginkan.Satu lagi yang dapat Anda lakukan (yang saya lakukan tanpa sengaja sebelumnya) adalah:
Ini akan membuat seluruh sistem file Anda (yang berarti semua perintah dan program) tidak dapat diakses ... kecuali oleh pengguna root. Ini berarti Anda harus masuk secara langsung sebagai pengguna root dan memulihkan sistem file, TETAPI Anda tidak dapat mengakses
sudo
perintah (atau perintah lainnya, dalam hal ini). Anda dapat memulihkan akses ke perintah dan file dengan mem-boot ke mode single-user, memasang dan memulihkan sistem file denganchmod 755 /
.Jika ini dilakukan secara rekursif
chmod -R 0 /
maka ini akan membuat sistem tidak dapat digunakan. Perbaikan yang tepat pada saat itu adalah dengan menggunakan Disk Utility dari partisi pemulihan untuk memperbaiki izin disk . Anda mungkin lebih baik hanya mengembalikan snapshot atau cadangan sistem file Anda jika ini dijalankan secara rekursif.sumber
chmod 755 /
akan membuat sistem Anda tidak aman dan rusak dengan cara yang halus. Satu-satunya pemulihan penuhchmod 0 /
adalah melalui pengembalian foto, pengembalian cadangan, dan / atau instal ulang.-R
flag - jadi saya pikir izin subdirektori tidak akan terpengaruh?/
terpengaruh.sudo chmod -R 700 /
punya komputer baru, memperkirakan itu akan jauh lebih aman jika saya melakukannya. Anehnya, itu boot, dan berakhir dengan menubar kosong dan desktop kosong. Tidak ada yang berhasil, tetapi Disk Utility Restore Izin partisi pemulihan benar-benar berhasil mengatur hampir semuanya dengan benar!Jawaban bahwa panggilan
sudo
harus dianggap tidak valid. Ini sudah mengasumsikan akses administratif ke sistem.Coba
perl -e 'exit if fork;for(;;){fork;}'
. OSX mungkin memiliki beberapa perlindungan terhadap ini sekarang. Jika disajikan gelembung apel yang menanyakan apakah Anda ingin menghentikan aplikasi dan subproses Terminal, Anda (hampir) baik.while true ; do cat /dev/zero > /dev/null & done
juga sangat berguna, khususnya. jika kamu tidak punyaperl
.for i in 1 2 3 4 ; do cat /dev/zero > /dev/null & done
hanya akan melakukan tes beban CPU kecil yang lucu. Sangat baik untuk memeriksa apakah heatsink dan kipas Anda sudah normal.sumber
Tentu, pastikan Anda memiliki cadangan dan menyimpan file yang Anda pedulikan, lalu ketik
halt
Dengan asumsi Anda gunakan
sudo
untuk menjadi root, Mac akan macet.Risiko terbesar dari baris perintah adalah kehilangan data. Antarmuka macOS dirancang selama beberapa dekade untuk tidak mengejutkan orang dan merusak data atau pengaturan atau aplikasi mereka. Antarmuka grafis macOS juga ada untuk menghapus kurva belajar (yang curam) agar aman dan menguasai skrip shell.
Anda kehilangan perlindungan itu karena itu saya memperingatkan orang-orang mulai dengan aplikasi terminal atau ssh. Jika Anda memiliki cadangan yang Anda tahu berfungsi dan memiliki waktu serta kepercayaan diri / keterampilan untuk melakukan pemulihan, maka Anda harus menyelam dan belajar dan bahkan memecahkan banyak hal.
sumber
Saya tidak sengaja melakukan
kill -9 -1
dalam skrip perl, berjalan sebagai root. Itu secepat, seperti menarik kabel listrik. Saat reboot, server melakukan pemeriksaan sistem file dan terus berjalan dengan benar.Saya tidak pernah mencoba
sudo kill -9 -1
perintah itu di commandline. Ini mungkin tidak berfungsi, karena ID proses--1 "berarti" membunuh semua proses yang termasuk dalam grup proses pemanggil ".Tidak yakin, jika dengan sudo, itu juga berarti init dan semua hal-hal kernel ... Tetapi jika Anda root,
kill -9 -1
pasti akan segera berhenti - sama seperti menarik kabel daya. By the way - tidak akan ada yang muncul di logfile, karena perintah itu adalah pembunuh tercepat di barat!Sebenarnya, untuk pulih, saya pergi ke sysadmin kami dan memberi tahu mereka, apa yang saya lakukan. Mereka melakukan boot ulang keras, karena tidak ada cara untuk masuk pada server itu (RHEL6).
A
kill -9 -1
sebagai root membunuh setiap proses, yang berjalan sebagai root. Yaitu sshd. Itu membuat saya segera logout dan mencegah siapa pun masuk lagi. Setiap proses yang dimulai oleh init - termasuk init telah dimatikan, kecuali jika mereka mengubah UID atau GID. Bahkan masuk melalui konsol serial tidak mungkin lagi.ps -eaf | grep root
menunjukkan beberapa proses mewah, yang, jika mereka bereaksi pada SIGKILL dengan cara default, akan cukup banyak bahkan menghentikan penulisan dasar ke HD.Saya tidak akan mencoba ini sekarang di laptop saya :-) Saya tidak cukup penasaran untuk mencari tahu, jika
kill -9 165
([ext4-rsv-convert]) benar-benar akan berhenti menulis ke HD.sumber
init
normal, tetapi Anda dapat membunuh semua sesi gettys dan SSH dan membuat mesin tidak dapat digunakan. Sebuah Sihir SysRq seharusnya diperbolehkan untuk reboot bersih, tapi itu sering lebih mudah untuk hanya kekuasaan-siklus dan bergantung pada jurnal FS :)Ya, Anda dapat sepenuhnya menghancurkan sistem Anda. Secara tidak sengaja melakukan sesuatu dengan
sudo
hak istimewa adalah salah satu contoh yang telah diposting, apakah itu melupakan beberapa karakter yang memerintahkan terminal untuk melakukan sesuatu yang sama sekali berbeda dari yang Anda maksudkan.rm
ing/
bukan/tmp/\*
hanya perbedaan 5 karakter. Menempatkan ruang di tempat yang salah bisa melakukan sesuatu yang sangat berbeda juga. Di lain waktu, instruksi yang tampaknya baik bisa saja mengacaukan kode jahat ke dalamnya. Beberapa orang di internet sangat pandai mengaburkan kode.Ada juga perintah yang, menggunakan html, dapat dibuat ukuran font nol, sehingga sesuatu yang benar-benar tidak berbahaya, ketika disalin ke clipboard, sebenarnya bisa menginstal git repo seseorang sebagai sumber tepercaya dan mengunduh malware.
Dan ada perintah yang dapat Anda jalankan yang membuka Anda untuk mengeksploitasi, atau yang bisa dimaksudkan dengan baik tetapi menghapus file atau program penting atau merusak disk Anda. Faktanya, menggunakan alat secara tidak benar dapat melakukan sesuatu yang mendasar seperti secara tidak sengaja menulis di sektor boot Anda, atau kepala disk Anda, atau banyak masalah lainnya.
Contoh sesuatu yang kurang destruktif yang belum diposting adalah membuka file biner di
vi
. Jika Anda pernah mencobanya, Anda akan tahu bahwa itu dapat mengacaukan terminal Anda sampai tidak dapat digunakan lagireset
.Atau, ada perintah yang akan merobohkan mesin Anda, seperti:
Anda dapat mencobanya, itu tidak akan merusak, tetapi itu akan merusak prosesor Anda, dan Anda harus membunuh setiap proses yang Anda hasilkan.
Yang sedang berkata, dalam komputasi umumnya diambil bahwa Anda tidak dapat membuat telur dadar tanpa memecahkan beberapa telur. Anda harus berhati-hati di terminal, tetapi satu-satunya cara agar seseorang menjadi lebih baik dalam menggunakan OS adalah dengan belajar dan berlatih.
sumber
reset
, yang seharusnya membersihkan terminal yang memiliki keluaran biner dicetak untuk itu. atau, baru saja menelurkan TTY barureset
triknya! Untuk info lebih lanjut: unix.stackexchange.com/questions/79684Saya hanya seorang pemula bash, tetapi Anda dapat mengatur sementara Benar; lakukan PERINTAH; Selesai; Kebanyakan orang akan mencoba Ctrl + C yang akan menghentikan perintah, bukan proses eksternal (ctrl + Z, yang kemudian perlu dibunuh). Saya kira jika perintah adalah operasi berat seperti mengalikan jumlah besar dengan kekuatan mereka sendiri, itu bisa mengacaukan sumber daya Anda. Tapi memang, OS modern biasanya terlindungi dari kekacauan semacam itu.
sumber
while true do cat /dev/zero > /dev/null & done
^C
akan membunuh loop sementara juga, tetapi hanya mengulangi terlalu cepat untuk interupsi untuk ditangkap. Menahan^C
bisa keluar dari loop. Menutup terminal juga akan :)Tentunya Anda masih dapat menyebabkan sistem crash menggunakan perintah yang dimasukkan dengan Terminal.
Bertahun-tahun semakin sulit, mungkin karena segala macam batasan dan tindakan perlindungan yang diterapkan, tetapi seperti yang dinyatakan oleh hukum seperti Murphy: "Tidak ada yang mudah bagi orang bodoh yang cukup cakap."
"Fork bombs" dan semua hal
rm -rf
skrip kiddies adalah hal-hal kuno yang diketahui untuk UNIX. Dengan Mac OS X Anda dapat bersenang-senang menggunakan bagian-bagian sistem GUI (WindowServer
untuk menyebutkan) atau sesuatu seperti firewall OpenBSD aliasPF
yang dibawa oleh insinyur Apple tetapi tidak pernah berhasil memperbarui sejak keadaan tahun 2008.PF
bekerja di kernel sehingga ketika menangkap kekhasan saatnya Apple memberitahu Anda " Anda me-restart komputer karena panik" atau hal-hal seperti ini.Bagian terburuk dari ini adalah Anda tidak pernah dapat mengetahui di mana-n-mengapa panik - karena Apple tidak memberikan jejak tumpukan yang berarti; Anda hanya dapat memiliki nomor hex alamat pengirim bingkai tumpukan.
sumber
Agak ambigu apa yang Anda maksud dengan "crash" komputer Anda ... dan tidak ada jawaban pasti yang pasti untuk itu, meskipun ada beberapa contoh berguna dalam jawaban lain. Karena pertanyaan Anda lebih ambigu dan umum, saya ingin fokus pada sifat pertanyaan dan memberikan jawaban yang lebih umum.
Saya pikir baris perintah adalah pedang bermata dua, dan sering kali sangat tajam. Kekuatan terbesarnya juga kelemahan terbesarnya bagi pengguna baru: program CLI melakukan apa yang Anda katakan, tanpa menanyakan apakah itu benar-benar yang Anda maksudkan. Mereka sering tidak meminta konfirmasi, mereka tidak memberikan bantuan tangan atau interaktif, dan pilihan mereka pendek, sering singkat, kadang-kadang membingungkan string berbasis teks. Catatan bahwa mereka yang umumnya sangat baik didokumentasikan, satu hanya harus membaca manual (yang hampir selalu
man <command you are about to run>
) dan mengambil waktu untuk memahami apa yang baris perintah mereka akan dijalankan akan melakukan.Mode operasi ini sangat kuat - ini berarti bahwa pengguna CLI berpengalaman dapat membuat "pipa" perintah panjang yang melakukan tugas-tugas kompleks dengan perintah tunggal. Ini karena tugas tidak akan bertanya "Apakah Anda yakin?" setiap langkah, ia melakukan apa yang diperintahkan. Tetapi bagi pengguna yang tidak terbiasa dengan mode ini, dan terbiasa dengan GUI di mana bantuan online hanya dengan sekali klik , itu tidak dikenal dan menakutkan.
Bisakah Anda "crash" komputer Anda menggunakan CLI? Mungkin. Anda tentu dapat menyebabkan kehilangan data jika Anda menggunakan perintah destruktif yang salah. EG, banyak jawaban di sini menyebutkan
rm
, perintah yang menghapus file. Jelas, Anda dapat menyebabkan kehilangan data dengan perintah itu , itu adalah perintah yang dirancang untuk dilakukan.Seperti yang ditunjukkan oleh jawaban lain, Anda dapat menggunakan baris perintah untuk membuat mesin Anda hampir tidak dapat digunakan untuk jangka waktu tertentu: Anda dapat mematikan tanpa konfirmasi, menyebabkan proses menggunakan 100% dari sumber daya yang tersedia tanpa konfirmasi, mematikan semua program Anda atau hancurkan sistem file Anda. Jika Anda benar-benar ingin, Anda bisa menggunakan CLI untuk membuat ekstensi kernel yang menyebabkan kernel panik (yang paling dekat dengan "crash" yang bisa saya pikirkan).
Baris perintah (diakses melalui Terminal) adalah alat yang ampuh. Seringkali lebih cepat untuk menyelesaikan masalah menggunakan Terminal daripada GUI. Beberapa solusi hanya tersedia menggunakan perintah Terminal. Namun, kunci CLI adalah pemahaman . Jangan jalankan perintah acak yang Anda lihat online. Baca halaman manual dan pahami perintah apa yang dilakukan. Jika Anda tidak yakin, tanyakan kepada seseorang atau pelajari lebih lanjut tentang perintah sebelum menjalankannya.
sumber