Bagaimana tombol daya mematikan komputer tanpa izin root?

36

Ketika saya mencoba mematikan komputer dari baris perintah atau terminal saya harus memiliki hak akses root:

amy@amy:~$ shutdown now
shutdown: Need to be root

dan

amy@amy:~$ halt
halt: Need to be root

tetapi ketika mematikan menggunakan antarmuka pengguna grafis, yaitu tombol shutdown, atau tombol shutdown perangkat keras, saya tidak diminta kata sandi untuk melakukannya. Apa yang dimatikan untuk antarmuka grafis, dan mengapa itu tidak memerlukan kata sandi atau hak akses root?

Saya menggunakan Ubuntu 11,04 Natty.

amyassin
sumber
1
karena jika penyerang memiliki akses fisik ke komputer Anda, Anda sudah kehilangan. Mencoba untuk mencegah seseorang yang berada dalam jangkauan tangan dari kotak melakukan hampir semua hal adalah yang terbaik adalah taktik penundaan dan sebagian besar menyebabkan lebih banyak ketidaknyamanan bagi pengguna sehari-hari daripada bagi penyerang. Kebanyakan distro Linux akan memberi Anda prompt root jika diucapkan dengan tegas selama bootup untuk alasan ini.
Joseph Rogers

Jawaban:

33

Tombol daya perangkat keras memicu peristiwa ACPI yang acpid(daemon ACPI) perhatikan dan bereaksi; dalam hal ini dengan mematikan sistem, meskipun Anda bisa membuatnya melakukan apa pun yang Anda inginkan. Daemon ACPI berjalan sebagai root, sehingga memiliki izin untuk mematikan sistem. Lingkungan desktop (misalnya gdmuntuk Gnome) biasanya berjalan sebagai root juga, jadi saya curiga mereka bekerja dengan cara yang sama - Anda tidak memiliki izin untuk mematikan sistem, tetapi Anda dapat memberi tahu gdmAnda ingin mematikannya dan dapat melakukannya pada nama anda

Michael Mrozek
sumber
apakah aman ?? "Kau bisa membuatnya melakukan apa pun yang kau mau."
amyassin
7
Untuk acpidmelakukan sesuatu yang berbeda dari yang sudah ada, Anda harus menjadi root, jadi Anda sudah memiliki izin untuk melakukan hal-hal yang tidak aman. Dimungkinkan juga untuk menggunakan sistem MAC seperti SELinux untuk melindungi acpid, membatasi hal-hal yang boleh mereka lakukan, bahkan ketika mereka berjalan sebagai root.
Warren Young
5
@amyassin Baiklah, untuk mengubah apa yang Anda butuhkan, Anda perlu root privilege; pengguna biasa tidak bisa mengatakan apa yang harus dilakukan. Tetapi acpiddapat dikonfigurasi, dapat menjalankan skrip yang berbeda tergantung pada peristiwa perangkat keras yang dilihatnya (misalnya, saya telah acpidmengunci komputer saya ketika saya menekan tombol power)
Michael Mrozek
7
@amyassen Jika seseorang memiliki akses fisik ke mesin Anda, maka sudah terlambat untuk mengkhawatirkan keamanan - jika tombol daya tidak memicu shutdown yang anggun mereka hanya dapat menarik kabel daya dan menyebabkan shutdown tidak berterima .
Shadur
3
Kata 'perangkat lunak berbahaya' harus mendapatkan kepemilikan root dan izin SUID untuk memberitahu init agar melakukan shutdown - dan lagi, pada saat sampai pada titik itu Anda memiliki masalah yang lebih besar untuk dikhawatirkan daripada kemungkinan shutdown.
Shadur
11

Jawaban Michael dengan benar membahas fungsi sistem ketika menggunakan saklar daya perangkat keras, tetapi sebagian besar lingkungan desktop benar-benar digunakan dbusuntuk tujuan ini daripada melakukannya sendiri. Sebagai contoh, GNOME menggunakan dbus's org.freedesktop.Hal.Device.SystemPowerManagement.Shutdownketika tombol shutdown diklik. Ketika ini dikirim, dbusapakah beberapa pengecekan untuk menentukan apakah pengguna yang mengirim pesan berwenang untuk melakukan shutdown, dan jika ya, ia mematikan sistem.

Anda dapat meniru ini dengan menggunakan dbus-send. Misalnya, untuk mematikan sistem Anda menggunakan dbus, gunakan sesuatu seperti ini:

dbus-send --system --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown
Chris Down
sumber