Bagaimana cara menonaktifkan shutdown / reboot / suspend / hibernate?

12

Saya memiliki PC Desktop Ubuntu 10,04 LTS dengan GNOME.

Bagaimana saya bisa sepenuhnya menonaktifkan fungsi reboot / shutdown / suspend / hibernate di GNOME atau bahkan dengan root? Sehingga root memberikan perintah "reboot" atau "pm-suspend" tidak melakukan apa-apa, dan mesin terus berjalan. Bagaimana saya bisa sepenuhnya menonaktifkan "fitur" dasar ini?

LanceBaynes
sumber
Saya tidak tahu? Sebagai kios? Anda cukup menghapus shutdowndan pm-suspenddari /sbin/dan/bin/
Amith KK
File-file itu bisa dalam cache, bukan? Menghapusnya akan secara permanen melarang fungsi reboot / shutdown / suspend / hibernasi bahkan di GNOME?
LanceBaynes
Ya, itu mungkin akan dilakukan @Lance Baynes
Amith KK

Jawaban:

15

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 consolekitlebih 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.pklaberisi 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, rootadalah akun tidak dibatasi menurut sistem kontrol akses diskresioner UNIX tradisional. Jika Anda tidak dapat mempercayai pengguna yang telah Anda rootakses 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.pklakarya:

[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?

James Henstridge
sumber
3
Berhenti bekerja di sini dengan Ubuntu 13.10 !!!
GabrieleV
@GabrieleV Mungkin versi dengan login1 berfungsi di 13.10? Saya mengujinya di 14,04 - dan semoga tidak ada seorang pun di Canonical yang merusak kompatibilitas dalam polkit di setiap rilis untuk bersenang-senang.
Mengurangi aktivitas
Sebagai titik data lain, saya hanya menggunakan ini dengan sukses pada Ubuntu 18.04.1 LTS baru, untuk melarang shutdown dan reboot (tetapi memungkinkan hibernate dan suspend). Perhatikan bahwa saya perlu menggunakan nama 'login1' ini; bahwa saya juga menonaktifkan 'penghentian' dan 'penghentian beberapa sesi'; bahwa saya melakukan itu karena saya menemukan tindakan itu di /usr/share/polkit-1/actions/org.freedesktop.login1.policy; dan akhirnya, bahwa di UI gdm3 Ubuntu 18.04, tombol-tombol dalam dialog konfirmasi tidak disembunyikan, tetapi mereka tidak memiliki efek.
MarnixKlooster ReinstateMonica
6

Pertimbangkan untuk menginstal molly-guard .

sudo apt-get install molly-guard

Paket ini akan mencegah shutdown / reboot / suspend / hibernate yang tidak diinginkan dengan secara interaktif meminta Anda untuk memasukkan nama host sistem.

Namun, itu sepele untuk mengkonfigurasi molly-guard untuk sepenuhnya menonaktifkan shutdown / reboot / suspend / hibernate. Cukup buat file yang dapat dieksekusi di /etc/molly-guard/run.d/99-prevent-all yang memiliki ini di dalamnya:

#!/bin/sh
exit 1

Catatan itu melindungi hanya terhadap perintah yang dikeluarkan dari baris perintah, shutdown / reboot / suspend / hibernate yang dikeluarkan dari GUI memintasinya. Untuk memblokir juga GUI menggunakan reboot seseorang dapat menggunakan aturan polkit .

Dustin Kirkland
sumber
Ini adalah solusi yang baik untuk komputer multi-pengguna di mana administrator perlu melakukan pekerjaan dan mencegah semua pengguna lain dari shutdown untuk sementara waktu.
Alexis Wilke
1
Bekerja dari konsol, tetapi bahkan dengan molly-guard di tempatnya (dan diatur ke 'selalu bertanya'), shutdown berlangsung tanpa bertanya saat memulai dari GNOME (3.4).
Jan
Ya, ini tidak berfungsi lagi ... Sejak pukul 13.10, mungkin 13.04.
Alexis Wilke
3

PERINGATAN! Perintah yang tercantum di sini berbahaya untuk digunakan. Jangan gunakan ini kecuali dengan risiko Anda sendiri!

chmod -x /usr/sbin/pm-suspend
chmod -x /sbin/reboot
chmod -x /sbin/shutdown
LanceBaynes
sumber
4
Bisakah Anda membuktikan jawaban Anda? Saya pasti tidak berpikir dia ingin menghilangkan kemungkinan me-reboot dan mematikannya.
viyyer
Bagaimana cara mengaktifkan kembali hibernasi dengan cara ini?
Gabriel Fair
gunakan "chmod + x" tidak "chmod -x"
LanceBaynes
5
Peringatan! Jangan lakukan ini Perintah ini disinkronkan ke /bin/systemctldan akan menghapus bit yang dapat dieksekusi dari itu. Ini adalah executable kritis yang juga mengontrol service SERVICE_NAME [stop|start|restart]. Sistem Anda mungkin tidak bisa boot lagi (jika Anda dapat mematikannya sama sekali).
Daniel F
Saya menjalankan perintah ini di VPS ubuntu. Shutdown VPS dari tuan rumah, shutdown gagal. Itu membunuh daemon SSH. Angkatan berhenti dan mulai, bisa SSH baik-baik saja. Setelah restart /bin/systemctldiatur hanya untuk baca-tulis-rw-r--r-- 1 root root
kryo
0

Membangun jawaban OP, Anda bisa melakukannya

for file in $(/sbin/shutdown /sbin/reboot /usr/sbin/pm-suspend); do
    mv $file $file.bak && touch $file
done

Ini mengganti nama symlink dan menggantinya dengan file kosong. Ini akan mencegah shutdown baris perintah, saya tidak tahu apakah perintah GUI memanggilnya atau melakukan hal mereka sendiri sehingga Anda mungkin harus melakukan jawaban yang diterima juga.

gaya kecepatan
sumber