GNU/Linux >> Belajar Linux >  >> Linux

Linux – Bagaimana Gnome Reboot Tanpa Hak Root?

Saya sedang membaca buku pengembangan kernel Linux, di bab 5 “Implementasi Panggilan Sistem” halaman 77 mengatakan

Misalnya, mampu(CAP_SYS_NICE) memeriksa apakah pemanggil memiliki
kemampuan untuk mengubah nilai bagus dari proses lain. Secara default, superuser
memiliki semua kemampuan dan nonroot tidak memilikinya. Untuk
contoh, berikut adalah panggilan sistem reboot(). Perhatikan bagaimana langkah pertamanya
memastikan bahwa proses pemanggilan memiliki CAP_SYS_REBOOT . Jika satu
pernyataan bersyarat itu dihapus, proses apa pun dapat mem-boot ulang
sistem.

Namun, di Debian Sid saya, saya dapat me-reboot mesin saya dengan menggunakan gnome atau dengan menjalankan /sbin/reboot tanpa sudo atau su.
Bagaimana ini mungkin?

Mungkin dengan systemctl?

ls -l /sbin/reboot 
lrwxrwxrwx 1 root root 14 Jun 28 04:23 /sbin/reboot -> /bin/systemctl

EDIT:Grup pengguna saya

[[email protected]:~]$ groups 
damian sudo wireshark bumblebee

EDIT 2:izin systemctl

[[email protected]:~]$ ls -l /bin/systemctl 
-rwxr-xr-x 1 root root 626640 Jun 28 04:23 /bin/systemctl

Jawaban yang Diterima:

Ini dilakukan melalui manajer otorisasi yang disebut polkit :

polkit menyediakan API otorisasi yang dimaksudkan untuk digunakan oleh program
istimewa (“MEKANISME”) yang menawarkan layanan kepada program yang tidak memiliki hak
(“SUBJECT”) seringkali melalui beberapa bentuk mekanisme komunikasi
antar-proses.

Dengan systemd dan polkit pengguna dengan sesi non-jarak jauh dapat mengeluarkan perintah terkait daya. Anda dapat membuat daftar semua polkit tindakan terdaftar dan dapatkan detail tentang tindakan tersebut dengan pkaction (dipanggil tanpa argumen, ia akan mencantumkan semua id tindakan).
Dalam kasus khusus ini, id tindakannya adalah org.freedesktop.login1.reboot jadi jika Anda menjalankan:

pkaction --action-id org.freedesktop.login1.reboot --verbose

outputnya harus seperti:

org.freedesktop.login1.reboot:
  description:       Reboot the system
  message:           Authentication is required for rebooting the system.
  vendor:            The systemd Project
  vendor_url:        http://www.freedesktop.org/wiki/Software/systemd
  icon:              
  implicit any:      auth_admin_keep
  implicit inactive: auth_admin_keep
  implicit active:   yes

Di sini, active: yes berarti pengguna dalam sesi aktif diizinkan untuk
me-reboot sistem (detail tentang otorisasi implisit di polkit halaman). Anda dapat memeriksa apakah sesi Anda aktif dengan:

loginctl show-session $XDG_SESSION_ID --property=Active
Active=yes

Linux
  1. Linux – Bagaimana Cara Membuat Ulang 70-persistent-net.rules Tanpa Reboot?

  2. Cara mematikan atau me-reboot Linux

  3. Cara mendeteksi jika OS Linux menggunakan lingkungan KDE atau Gnome

  1. Cara Mengubah Nama Host di Linux

  2. Cara Mengatur Hak Istimewa Sudo untuk Pengguna di Linux

  3. Bagaimana Linux menggunakan jam waktu nyata?

  1. Cara Memeriksa Uptime Sistem di Linux

  2. Cara Melihat Tanggal dan Waktu Reboot Sistem Linux

  3. Cara mem-boot sistem Linux tanpa server grafis