Saya ingin menonaktifkan shutdown
perintah untuk semua pengguna, bahkan root, pada instalasi Ubuntu Server.
Alasan saya ingin melakukan ini adalah untuk memastikan bahwa saya tidak terbiasa mematikan mesin dengan cara ini, karena saya SSH ke banyak mesin produksi pada saat yang sama seperti ini, dan saya tidak ingin secara tidak sengaja mematikan salah satu mesin lain dengan mengetikkan perintah ke jendela yang salah.
Server yang saya inginkan menonaktifkan penonaktifan hanya berjalan di dalam VirtualBox di desktop Windows saya, dan saya hanya menggunakannya untuk pengujian lokal sehingga tidak masalah jika saya tidak dapat mematikannya dari baris perintah.
Saya sudah sedikit mengurangi masalah dengan memastikan saya memiliki kata sandi yang berbeda pada gambar VirtualBox, tetapi jelas jika saya berada di dalam sudo
'jendela' di salah satu mesin produksi, saya masih bisa secara tidak sengaja mematikannya.
Pertanyaan saya adalah:
- Bagaimana cara menonaktifkan perintah mematikan?
- Jika saya menonaktifkan perintah shutdown, apakah ada konsekuensi yang harus saya ketahui? Paling khusus, apakah itu akan menonaktifkan dukungan untuk shutdown ACPI yang setara dengan menekan tombol power pada mesin fisik? Bisakah itu mempengaruhi aplikasi generik lainnya?
Sebagai informasi, saya hanya menggunakan gambar VirtualBox ini untuk mencoba skrip shell, menjalankan Tomcat dan Java, dan hal semacam itu.
Jawaban:
Jika Anda biasanya menjalankan perintah sebagai
sudo shutdown
, alih-alihsudo /sbin/shutdown
, maka Anda bisa mensetup global shell alias untuk "shutdown" untuk hanya menggemakan pesan ke terminal saja. Eksekusi nyata masih akan ada untuk semua tujuan lain.sumber
alias shutdown=sl
) tidak akan berpengaruh pada argumen ke sudo. Di zsh Anda dapat mendefinisikan alias yang cocok dengan argumen, tapi saya rasa tidak dalam bash. Anda bisa aliassudo
ke skrip shell yang menolak untuk melakukan apa pun jika argumen pertama adalahshutdown
.Sebuah banyak pendekatan yang lebih baik untuk masalah ini adalah dengan menginstal molly-guard Program pada kotak Anda tidak ingin shutdown, daripada mencoba untuk melatih diri untuk tidak pernah menjalankan shutdown.
Konfigurasi tipikal adalah ia meminta Anda untuk mengetik nama host mesin untuk mengonfirmasi bahwa Anda benar-benar berada di sebelah kanan.
Dimungkinkan untuk menambahkan skrip baru ke
/etc/molly-guard/run.d
(seperti yang didokumentasikan pada halaman manual , file skrip harus mengikuti penamaan yang diharapkan olehrun-parts
.Jika Anda benar-benar ingin menonaktifkan
shutdown
(dan ini adalah ide yang aneh), lakukan sajamaka jika Anda perlu menggunakannya, chmod kembali ke 0755.
sumber
Untuk menonaktifkan perintah shutdown, buat saja biner yang tidak dapat dijalankan, mis.
sudo chmod a-x /sbin/shutdown
Saya juga tidak berpikir bahwa itu akan mempengaruhi metode shutdown lain karena sebagai entri man untuk shutdown mengatakanjadi perintah / skrip lain dapat melakukan ini bahkan setelah menonaktifkan perintah shutdown misalnya saya masih dapat mematikan sistem saya menggunakan shutdown dari menu GNOME. Anda juga masih dapat me-reboot komputer dari baris perintah menggunakan perintah reboot
sumber
The
shutdown
perintah di/sbin/shutdown
. Anda dapat menonaktifkannya dengan melakukan ini:Tetapi : Ini berarti bahwa hampir tidak ada metode yang biasa untuk mematikan sistem akan bekerja lebih lama. Mematikan gnome pada mesin uji saya untuk jawaban ini menyebabkannya hanya mengeluarkan Anda dan melemparkan Anda kembali ke GDM.
Jika Anda ingin mematikan sistem Anda setelah itu, Anda harus melakukannya
Shutdown "Disabling" akan memengaruhi setiap aplikasi yang menggunakan perintah untuk apa pun. Karena
init 0
bukan cara yang disarankan untuk mematikan sistem, semua program yang harus mematikan penggunaan sistemshutdown
untuk itu, yang tidak akan berfungsi lagi.Aplikasi juga dapat melempar pengecualian karena file yang hilang , atau file yang tidak dapat dieksekusi , berpotensi menyebabkannya crash walaupun shutdown tidak diperlukan. Ini adalah kasus tepi yang dapat Anda atasi dengan memindahkan beberapa file biner, idealnya dapat dieksekusi (bukan skrip shell - yang tidak akan berfungsi) di tempatnya. Sebagai contoh:
Ini setelah Anda memindahkan yang asli dengan aman.
Sekarang, semua ini cukup berantakan, dan saya sarankan untuk tidak melakukannya , untuk alasan yang diuraikan dalam komentar João Pinto. Tetapi saya tidak akan menghentikan Anda untuk melakukannya. :-)
Jangan hanya membuat cadangan / sbin / shutdown, juga, miliki rencana pemulihan jika itu menyebabkan masalah. Jangan lakukan ini di server yang tidak bisa Anda tuju, misalnya. Dan uji rencana pemulihan Anda sebelumnya, dengan asumsi bahwa sistem tidak bisa boot sama sekali (itu akan boot tentu saja - saya sudah mengujinya - tapi tolong di sisi yang aman).
sumber
Saya pikir itu harus mengambil solusi lain, Server harus memiliki kebijakan ssh untuk menonaktifkan shutdown dan init 0 over ssh, atau harus ada dialog khusus yang ditampilkan pada konsol seperti pada Windows untuk memasukkan "mengapa" dan khusus "kata sandi shutdown" . Untuk ini powerbutton harus dilindungi kata sandi pada penggunaan Server.
Saat ini kami menggunakan "saklar kunci fisik = 4Euros" alih-alih Tombol Tekan.
sumber
Saya ingin menonaktifkan
shutdown
perintah.ini karena jika seseorang mencoba dengan paksa ingin menggunakan perintah ini, maka dia juga tidak bisa
sekarang tidak ada yang bisa menggunakan perintah shutdown.
itu akan menampilkan perintah pesan tidak ditemukan menginstalnya.
Tambahkan baris terakhir dari bash.bashrc
jika Anda ingin kembali (diaktifkan). cukup salin kembali
sumber