Saat kami menginstal/menghapus/memperbarui paket atau membuat perubahan apa pun yang memerlukan hak administratif, kami akan dimintai sandi pengguna admin yang memiliki sudo
hak istimewa – ini terjadi melalui GUI dan terminal.
Namun, jika kami mencoba mematikan dan memulai ulang melalui terminal, ia mengeluh bahwa kami harus root
:
$ reboot
reboot: Need to be root
$ shutdown now
shutdown: Need to be root
Namun kami tidak pernah dimintai sandi saat melakukan tindakan ini melalui roda gigi di kanan atas.
Mengapa ada perbedaan ini?
Jawaban Terbaik
Shutdown pada roda gigi memeriksa apakah Anda diizinkan untuk mematikan mesin. Ini dilakukan melalui PolicyKit. Dalam kasus shutdown pernyataan ini dalam file /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
dicentang:
<action id="org.freedesktop.consolekit.system.stop">
<description>Stop the system</description>
<message>System policy prevents stopping the system</message>
<defaults>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
</action>
PolicyKit memicu dbus-send
memerintah. Dalam kasus shutdown akan menjadi:
dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Ada daemon yang berjalan di latar belakang dengan Root-Privileges yang menjalankan perintah shutdown untuk Anda.
Bila Anda ingin dapat mematikan mesin “cara lama” melalui baris perintah (shutdown, reboot, halt, ...
), maka Anda perlu menambahkan suid-Bit ke perintah tersebut. Namun perlu diketahui, semua orang di sistem Anda, yang memiliki akses ke shell, dapat mematikan mesin Anda.