Akses pengguna ke tindakan ini dikendalikan oleh polkit. Secara khusus, mereka berhubungan dengan tindakan berikut:
org.freedesktop.consolekit.system.stop
org.freedesktop.consolekit.system.restart
org.freedesktop.upower.suspend
org.freedesktop.upower.hibernate
Semua tindakan ini diizinkan secara default untuk pengguna lokal yang aktif (meskipun consolekit
lebih lanjut membatasi dua izin pertama untuk hanya berfungsi ketika ada satu pengguna yang masuk ke sistem).
Jika Anda ingin menonaktifkan tindakan ini, buat file yang /etc/polkit-1/50-local.d/disable-shutdown.pkla
berisi sesuatu seperti:
[Disable shutdown/whatever]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart;org.freedesktop.upower.suspend;org.freedesktop.upower.hibernate
ResultAny=no
ResultInactive=no
ResultActive=no
Ini harus mencegah tindakan tersebut dari menyelesaikan. Informasi lebih lanjut tentang file kebijakan ini dapat ditemukan dengan menjalankan man pklocalauthority
.
Jika Anda mencoba membatasi root
, ini hanya akan menjadi ketidaknyamanan kecil. Menurut definisi, root
adalah akun tidak dibatasi menurut sistem kontrol akses diskresioner UNIX tradisional. Jika Anda tidak dapat mempercayai pengguna yang telah Anda root
akses penuh , maka Anda memiliki masalah yang lebih besar daripada hanya mematikan sistem.
Perhatikan bahwa dalam versi Ubuntu yang lebih baru seseorang memutuskan untuk memutus kompatibilitas. Seperti yang dijawab dalam Cara menonaktifkan shutdown / reboot dari lightdm di 14,04? tindakannya tampaknya telah berubah menjadi "org.freedesktop. login1 .reboot" (dan sejenisnya).
Misalnya dalam 14,04 menambahkan baris berikut sebagai /etc/polkit-1/localauthority/50-local.d/restrict-login-powermgmt.pkla
karya:
[Disable lightdm PowerMgmt]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions;org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
Selain itu perhatikan bahwa metode ini hanya memblokir perintah reboot / etc yang dikeluarkan dari GUI. Untuk memblokir perintah reboot / etc dari command line seseorang dapat menggunakan molly-guard - seperti yang dijelaskan dalam Menonaktifkan perintah shutdown untuk semua pengguna, bahkan root - konsekuensi?
shutdown
danpm-suspend
dari/sbin/
dan/bin/