Mengapa `reboot` dan` poweroff` bekerja tanpa hak pengguna super di Ubuntu 16.04?

10

Ada banyak pertanyaan tentang mengapa shutdowndan rebootmembutuhkan hak akses root. Ada banyak jawaban bagus yang tersedia juga.

Tetapi ada sesuatu yang saya tidak mengerti : Jika bisa melakukan reboot atau shutdown tanpa hak root di sistem multiuser adalah ide yang sangat buruk ... lalu mengapa ini mungkin di Ubuntu 16.04?

Ketika saya mengetik poweroffatau rebootdi terminal dan menekan Enter, itu memang dimatikan / reboot!

Bagi saya kapan poweroffdan kapan rebootsaja tidak memerlukan hak akses root ... tapi mengapa suspendperlu hak akses root? Ketika saya mengetik suspendterminal dan menekan Enter, itu tidak menunda, melainkan macet ... dan ketika saya menjalankan pm-suspend, itu membutuhkan sudo.

Severus Tux
sumber
Ini juga harus dimungkinkan dalam versi yang lebih lama, jika Anda mengkonfigurasinya melakukannya ( askubuntu.com/a/570969/158442 , perhatikan tindakan untuk sesi mutliple). Systemd melakukan ini secara default. Juga terlihat di Arch Linux.
muru

Jawaban:

3

Bagi saya, keduanya powerofftidak rebootmembutuhkan kata sandi di Ubuntu 16.04.

Namun, agar ini terjadi, saya harus membuat akun pengguna yang disebut "foo", misalnya, dan kemudian ssh ke localhost baik sebagai pengguna itu atau sebagai saya sendiri. Ketika saya melakukan ini, saya perlu mengotentikasi diri saya. Tampaknya mengenali pengguna lain yang masuk.

Misalnya, saya menerima pesan ini:

User foo is logged in on sshd.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.

Agaknya, "cukup" cukup untuk menyadari ketika sebenarnya ada pengguna lain yang masuk.

(Saya setuju dengan Anda bahwa alangkah baiknya untuk selalu mengotentikasi sebagai root. Terkadang, tidak ada pengguna lain yang masuk, tetapi proses penting sedang berjalan di latar belakang melakukan semacam perhitungan.)

Sunting: Baru saja mencoba sendiri. Jika saya masuk sebagai foo, saya perlu mengotentikasi diri sendiri (yang ada di grup sudo). Jika saya reboot karena saya sendiri dengan foo masih masuk, saya harus mengetik systemctl reboot -itanpa kata sandi. Saya kira perbedaannya adalah bahwa sistem tahu saya di grup sudo.

Sunting 2: Seperti dicatat oleh Severus Tux, systemctl suspend -iberperilaku serupa dengan systemctl reboot -idari edit sebelumnya.

sinar
sumber
Ah .. saya belum mencobanya. BTW apakah menunda perintah berfungsi pada mesin Anda? Saya perlu memastikan bahwa ini bug
Severus Tux
Jika saya ssh ke localhost dan menangguhkan, saya tidak berhasil. Saya mendapatkan "-bash: menangguhkan: tidak dapat menangguhkan shell login".
Ray
Jika saya membuka jendela dan mencoba "menangguhkan", jendela terminal macet. :-) Bukan pertanda baik ... Saya pikir itu tidak berhubungan. Bagaimanapun, terima kasih telah bertanya! Saya tidak pernah berpikir untuk mencoba sendiri tetapi pertanyaan Anda membuat saya penasaran. Saya masih dalam kebiasaan me-reboot dengan sudo ... tidak melihat perubahan halus ini.
Ray
Terima kasih. Seperti yang Anda katakan tentang reboot, "systemctl suspend -i" juga berfungsi dengan baik. pertimbangkan untuk menambahkan itu ke jawaban Anda
Severus Tux
Baik! Saya mungkin harus menambahkan semuanya dengan satu pesan, tetapi setiap kali saya mencoba sesuatu, itu menyebabkan reboot, jadi saya harus menyimpan apa yang saya posting ...
Ray