Bagaimana anda menonaktifkan menakutkan perintah terminal?
Saya menggunakan SSH untuk mengakses remote Ubuntu server tanpa akses ke server fisik. Saya pikir saya sedang mengetik 'shutdown
' ke NoSQL server yang berjalan pada OS Ubuntu, tapi benar-benar saya bilang Ubuntu server shutdown. Kemudian saya harus memberitahu server admin apa yang saya lakukan sehingga dia bisa start up server fisik bagi saya. Itu memalukan!
Bagaimana saya bisa mencegah hal ini terjadi lagi?
Standar jawabannya adalah, "don't login sebagai root". Semua perintah dijalankan sebagai root yang menakutkan. Jika isn't opsi, anda bisa menempatkan beberapa alias perintah ke anda .bashrc
untuk menonaktifkan perintah yang anda temukan sangat menakutkan. Misalnya:
for scary in shutdown halt reboot rm
do
alias $scary="echo If you really want to do that, type: `which $scary`"
done
Kemudian, jika anda ketik shutdown anda akan mendapatkan pesan berikut:
If you really want to do that, type: /sbin/shutdown
(Pastikan anda.bashrc
telah dimuat pertama, sebelum anda mencoba ini di server produksi)
Berhenti anda saat ini ssh
sesi dan login lagi, atau menggunakan . ~/.bashrc
harus memuat/run .bashrc. Mungkin mencoba menjalankan rm
tanpa ada argumen untuk memastikan server anda sudah't dinonaktifkan secara otomatis loading .bashrc
pada login atau serupa.
Perhatikan bahwa jika anda terutama yang bersangkutan dengan menghentikan dan shutdown, anda bisa pertimbangkan untuk menginstal molly-penjaga, yang akan membuat anda ketik hostname sebelum mematikan mesin. Ini adalah lebih berguna jika anda secara teratur shutdown seluruh OS'es pada commandline, tapi ingin pastikan anda mematikan yang benar.
Anda juga bisa uji coba ini dengan kurang menakutkan perintah seperti logout atau keluar.
sudo
ada untuk sebuah alasan yang digunakan itu.
Ketika perintah anda (dalam hal ini interaktif CLI) selesai, anda're dibuang kembali ke tingkat pengguna shell, tidak root shell. Ada beberapa alasan yang layak untuk berada di root shell. (Saya'm terkejut bahwa ini isn't sudah menjawab...)
Setelah mengatakan bahwa, don't menjadi muppet yang menggunakan sudo
untuk semua. Memahami apa yang anda're lakukan, dan memahami mengapa hal itu tidak/doesn't membutuhkan hak akses root.
Selain itu anda dapat membedakan anda cepat untuk root / pengguna kerang. Hal ini juga membuatnya lebih jelas bahwa anda're kembali pada prompt shell dan tidak "some lain CLI". Tambang ini sangat berwarna-warni, dan memiliki banyak informasi yang berguna (seperti hostname), yang membuatnya very sederhana untuk mengetahui apa yang menjadi tuan rumah akan mengeksekusi perintah, dan juga membuatnya lebih mudah untuk melihat kembali melalui sejarah anda dan menemukan petunjuk - root shell menggunakan default prompt.
Ini lebih cocok untuk digunakan pada "your" akun, tetapi jika anda're mengambil keamanan/sysadminning serius, maka anda tidak't akan berbagi password/account, dan anda tidak't akan duduk di root shell tanpa sepenuhnya sadar.
Sebagai orang-orang telah mengatakan lebih, dan lebih, dan lebih lagi "aliasing perintah untuk membuat lingkungan yang aman adalah buruk idea". Anda're akan mendapatkan nyaman di lingkungan yang aman, mengetik mereka 'menakutkan' perintah di mana anda seharusnya't. Kemudian suatu hari anda'll mengubah pekerjaan, atau login ke mesin baru, dan kemudian boom "whoopsy, saya didn't berarti untuk saya'm sorry"...
Paket 'molly-guard' (setidaknya pada Debian berasal sistem) akan menginstal bungkus sekitar shutdown, berhenti, poweroff, dan reboot. Jika mendeteksi bahwa terminal adalah remote yang satu, maka ia akan meminta untuk menjadi tuan rumah's nama. Jika itu doesn't pertandingan, maka perintah tersebut dibatalkan.
Aku menerima jawaban yang saya suka banyak, namun, jika ada orang lain yang membaca dan ingin yang lebih sederhana jawabannya, di sini adalah milikku.
Menemukan .bashrc file dan menempatkan sebagai baris terakhir:
alias shutdown=notforuse
Kemudian ketika anda ketik shutdown anda mendapatkan sesuatu seperti ~bash: notforuse bukan perintah
Mungkin ini konyol, tapi itu adalah sederhana dan bekerja. Saya menghargai jawaban dengan cara yang lebih baik untuk melakukan hal ini namun!
Untuk shutdown
(reboot
, berhenti
dan yang terkait): saya punya copy dengan bertanya kepada saya jika saya'm benar-benar yakin (dan itu tidak apa-apa sih). Saya menyimpan skrip tersebut di dalam /usr/local/sbin
. Pada Debian ini memiliki prioritas lain /sbin
(ini adalah pertama direktori dari PATH).
Script sistem menggunakan full path, jadi seperti hack mencegah saya untuk berhenti remote server bukan mesin lokal (sebuah perilaku buruk dari Awesome WM), tetapi tidak memiliki efek tidak langsung lainnya, dan aku masih bisa menggunakannya sebagai /sbin/shutdown ketika benar-benar dibutuhkan.
File Sudoers memungkinkan jauh lebih halus tingkat granularity dari 'diperbolehkan untuk menggunakan sudo', secara khusus anda dapat menggunakan command alias untuk membuat daftar putih dari kelompok perintah pengguna tertentu atau kelompok terbatas. Saya telah bekerja dengan remote server yang dibatasi untuk akses ssh dan diperbolehkan password kurang sudo (kita tidak memerlukan dilindungi password ssh keys). Ada beberapa alasan bagus untuk melakukan hal ini, tetapi memiliki bahaya, jadi kami menggunakan command alias untuk memungkinkan akses tak terbatas untuk hal-hal yang harus mereka lakukan (restart server dll) tanpa memberikan mereka hak istimewa untuk hal yang mereka didn't.
Ada juga sintaks untuk mengatakan 'dapat't menjalankan perintah ini'. Hal ini dapat bekerja di sekitar, jadi seharusnya't dapat digunakan sebagai ukuran keamanan tetapi akan bekerja untuk skenario anda gambarkan.
Pria sudoers memiliki beberapa contoh yang baik tentang bagaimana untuk mengatur semua ini.
Tentu saja hal ini memerlukan menggunakan sudo, tapi yang harus pergi tanpa mengatakan.
Anda mungkin telah jatuh korban baru Ubuntu kebodohan.
Ubuntu digunakan untuk memiliki normal, klasik shutdown
perintah yang membutuhkan waktu wajib argumen.
Berikut adalah apa yang terjadi pada Ubuntu 12 jika saya ketik shutdown
, bahkan sebagai user biasa:
$ shutdown
shutdown: time expected
Try `shutdown --help' for more information.
Kemudian
$ shutdown +100
shutdown: need to be root.
Sekarang, di sini adalah Ubuntu 16.10. I'm tidak root:
$ date ; /sbin/shutdown
Fri Jun 23 16:00:16 PDT 2017
Shutdown scheduled for Fri 2017-06-23 16:01:16 PDT, use 'shutdown -c' to cancel.
Dengan tidak ada argumen, jadwal shutdown selama 60 detik kemudian, dan bahkan jika anda're tidak root—hanya sebuah akun yang dibuat dengan hak admin.
Menyalahkan Kanonik.
Untuk shutdown ada molly-guard. Anda hanya perlu menginstalnya dan ketika anda mencoba untuk shutdown via ssh, itu akan meminta anda untuk mengetik nama host.
Untuk menghapus file ada solusi seperti libtrash, yang mengemulasi tempat sampah melalui LD_PRELOAD
perpustakaan.
Dan anda dapat menguji file apa yang anda're mengubah/menghapus/... dengan mungkin program. Yang's cukup keren ketika menguji sesuatu.
Coba ini: ketika anda berada pada remote shell, setiap kali anda ada di sekitar untuk type "kembalikan" tombol, berhenti selama 5 detik, dengan jari anda melayang pada "kembalikan" tombol, dan membaca perintah anda kirim. Apakah itu OK? Apakah anda yakin?
Hal ini tampaknya keras, tapi, di sisi lain, kita tidak't harus menghabiskan banyak waktu pada remote kerang. Kita harus menemukan cara-cara untuk mengotomatisasi kami pekerjaan pemeliharaan sehingga kita jarang, jika pernah, perlu untuk login ke remote server pada semua.