Pengguna yang beroperasi di konsol workstation grafis telah mencatat bahwa beberapa program dapat dijalankan tanpa memerlukan otentikasi root atau kata sandi seperti reboot. Proses ini melibatkan penggunaan program SUID /usr/sbin/userhelper
yang cerdik diterapkan dalam konteks yang lebih luas daripada yang awalnya dirancang.
Pengguna grafis mengeksekusi program alias perantara /usr/bin/consolehelper
yang mengotorisasi tindakan berdasarkan konfigurasi PAM (Programmable Authentication Modules) tertentu dan kemudian mengirimkan perintah ke program SUID untuk menjalankan program pengguna dengan hak istimewa. Jika pengguna tidak memiliki otorisasi yang sesuai, maka program yang diminta dijalankan di bawah lingkungan Linux pengguna.
Seperti yang saat ini diterapkan, file konfigurasi PAM yang diperlukan untuk reboot berisi pemeriksaan bagi pengguna untuk login di konsol atau sedang berjalan di bawah lingkungan root untuk menghambat permintaan kata sandi.
Ini menggunakan udisk. (FUSE digunakan dalam kasus sistem file jaringan). Antarmuka baris perintah ke udisk tersedia untuk eksperimen Anda. Dalam versi terbaru ini hadir dengan antarmuka baris perintah udisksctl
.
udisksd
berjalan sebagai root, dan menerima permintaan pengguna menggunakan D-Bus.
udisksd
menggunakan PolicyKit PolKit untuk memutuskan permintaan mana yang diizinkan. Beberapa mungkin memerlukan hak istimewa ekstra, mis. memformat drive internal. Ini dapat melibatkan langkah otentikasi tambahan - mirip dengan Windows UAC prompt, atau sudo pada baris perintah. Saya tidak tahu persis bagaimana autentikasi ekstra dikoordinasikan.
Permintaan melalui D-Bus saat ini dibuat menggunakan soket Unix menggunakan SCM_CREDENTIALS, yang mengidentifikasi proses pembuatan permintaan.
Salah satu faktor yang digunakan dalam pengambilan keputusan adalah apakah pengguna masuk secara lokal, atau melalui jaringan (mis. ssh
). Saya yakin informasi ini disediakan oleh systemd-logind
(dalam konspirasi dengan pam-systemd
).