Apa cara paling "Ubuntu" untuk mencegah pengguna tertentu mematikan, menangguhkan dll?

21

Pada sistem Unix tradisional, pengguna non-root tidak dapat melakukan ini. Apa yang memberi pengguna kemampuan ini di lingkungan desktop modern dan bagaimana cara menonaktifkannya berdasarkan per pengguna atau per grup?

Saya telah melihat metode yang bagus untuk mencegah siapa pun mematikan / menangguhkan, tetapi idealnya yang saya cari adalah mencegah pengguna tertentu (seperti, dengan menambahkan / menghapus mereka dari grup pengguna tertentu) agar tidak dapat melakukan shutdown , mulai ulang, tunda.

thomasrutter
sumber

Jawaban:

20

Seperti disebutkan dalam pertanyaan lain, Anda dapat mengontrol tindakan ini melalui sistem otoritas lokal PolicyKit.

Jika Anda membuat file /etc/polkit-1/50-local.d/restrict-shutdown.pkladengan konten seperti:

[Disable shutdown/etc for group restricted]
Identity=unix-group:restricted
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 akan mencegah anggota grup restrictedmelakukan tindakan yang cocok. Atau, jika Anda ingin membatasi pengguna individu, ganti unix-group:restricteddengan unix-user:user1;unix-user:user2;.... Setiap pengguna yang tidak cocok dengan kebijakan ini harus berakhir dengan perilaku default.

James Henstridge
sumber
Tidak lagi berfungsi pada 14.04.1.
detly
0

Buat dan edit file ini sebagai root:

/etc/polkit-1/localauthority/50-local.d/power-management.pkla

Salin dan rekatkan yang berikut ini:

[Disable shutdown/restart for users jim jane]
Identity=unix-user:jim;unix-user:jane
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no

[Disable suspend/hibernate for users jim jane]
Identity=unix-user:a;unix-user:vvpinker
Action=org.freedesktop.login1.suspend;org.freedesktop.login1.suspend-multiple-sessions;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=no
ResultInactive=no
ResultActive=no
Sepero
sumber