GNU/Linux >> Belajar Linux >  >> Linux

Apa cara yang benar untuk mencegah pengguna non-root mengeluarkan shutdown atau reboot

  • pklocalauthority tidak digunakan lagi
  • Anda memerlukan systemd dengan logind dan polkit.

Tindakan yang tersedia

pkaction
# or /usr/share/polkit-1/actions/

Anda harus melihat /usr/share/polkit-1/actions/org.freedesktop.login1.policy

Tambahkan aturan

Pertama-tama mulailah memantau pesan sistem, agar kami dapat melihat apakah aturan baru kami berfungsi:

journalctl -f

Kemudian buat file /etc/polkit-1/rules.d/60-noreboot_norestart.rules (dalam javascript).

Dalam file ini kami menambahkan logika untuk memeriksa tindakan dan mengizinkan users di power grup atau memerlukan su otorisasi:

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.login1.reboot" ||
        action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
        action.id == "org.freedesktop.login1.power-off" ||
        action.id == "org.freedesktop.login1.power-off-multiple-sessions") {
        if (subject.isInGroup("power")) {
            return polkit.Result.YES;
        } else {
            return polkit.Result.AUTH_ADMIN;
        }
    }
});

Aturan harus dimuat dan harus berfungsi. Referensi di bawah.

  1. https://lists.fedoraproject.org/pipermail/users/2013-September/440457.html
  2. https://wiki.archlinux.org/index.php/Polkit#Authorization_rules
  3. http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html
  4. https://bbs.archlinux.org/viewtopic.php?pid=1335204#p1335204

Pertama, perhatikan bahwa fungsi penonaktifan ConsoleKit menganggap "pengguna tunggal" dan "beberapa pengguna" sebagai dua situasi yang berbeda – mematikan sistem selalu memerlukan autentikasi administrator jika pengguna lain masuk.

Semua tindakan tersebut dikelola oleh PolicyKit. Jika Anda ingin menyesuaikan kebijakan, Anda dapat melakukannya seperti yang dijelaskan dalam polkit(8) – /etc/polkit-1/rules.d/20-disallow-shutdown.rules :

polkit.addRule(function(action, subject) {
    if ((action.id == "org.freedesktop.consolekit.system.stop" ||
         action.id == "org.freedesktop.consolekit.system.restart") &&
        subject.isInGroup("users")) {
            return subject.active ? polkit.Result.AUTH_ADMIN : polkit.Result.NO;
    }
});

PolicyKit 0.105 dan versi sebelumnya mendokumentasikan ini di pklocalauthority(8) – /etc/polkit-1/localauthority/50-local.d/20-disallow-shutdown.pkla :

[Disallow shutdown]
Identity=unix-group:users
Action=org.freedesktop.consolekit.system.stop;org.freedesktop.consolekit.system.restart
ResultAny=no
ResultInactive=no
ResultActive=auth_admin

Action s tercantum dalam file kebijakan ConsoleKit atau dengan menjalankan pkaction .


Linux
  1. Bagaimana Mencegah `ls` Dari Menyortir Output?

  2. Bagaimana Mencegah Pengguna Mengakses Direktori Root?

  3. Apa cara tercepat untuk menambahkan teks ke file dari baris perintah?

  1. Apa cara yang tepat untuk menggunakan inotify?

  2. Izinkan skrip untuk membaca file tetapi mencegah pengguna melihat file secara langsung

  3. Apa cara yang tepat untuk memasukkan tab di sed?

  1. Apa cara termudah untuk SSH menggunakan Python?

  2. Apa cara yang benar untuk membuat aplikasi PyQt saya berhenti saat dimatikan dari konsol (Ctrl-C)?

  3. Apa cara yang benar untuk menginstal jdk di linux