Bagaimana saya bisa melakukan shutdown tidak memerlukan kata sandi admin?

49

Jika lebih dari satu orang login di komputer saya, Ubuntu membutuhkan otentikasi pengguna super saat mematikan komputer. Bagaimana saya bisa membuatnya sehingga setiap pengguna dapat mematikan komputer tanpa diminta kata sandi?

Yesaya
sumber
3
+1 Saya menduga memasukkan kata sandi untuk mematikan mengganggu banyak pengguna di PC berbasis rumah.
Richard Holloway
7
Jika Anda mematikan komputer saat orang lain masuk, apa yang terjadi pada jendela mereka yang terbuka? Dokumen terbuka mereka? Saya pikir apapun yang tidak disimpan otomatis hilang begitu saja. Ini layak dipertimbangkan.
Torben Gundtofte-Bruun
"Ubuntu memerlukan autentikasi pengguna super saat mematikan komputer", di Ubuntu 11.10 ia tidak meminta otorisasi pengguna super, ketika mematikan menggunakan menu, itu hanya berfungsi sebagai logout dan membawa ke halaman Login, seperti dalam pertanyaan ini: askubuntu.com/ q / 64073/11995 , saya tertarik bagaimana mengkonfigurasi Ubuntu untuk meminta saya kata sandi pengguna super?
Mikl
1
Untuk 14,04 dan yang lebih baru: lihat askubuntu.com/questions/454039/…
Takkat

Jawaban:

27

Anda tidak perlu solusinya, cukup ubah kebijakan untuk memungkinkan Anda mematikan tanpa mengautentikasi sebagai admin untuk shutdown dan reboot ketika banyak pengguna masuk.

Edit file /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy menggunakan editor teks favorit Anda. Anda akan membutuhkan izin root.

Ubah bagian yang berkaitan dengan penutupan ketika orang lain masuk dari

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

untuk

  <action id="org.freedesktop.consolekit.system.stop-multiple-users">
    <description>Stop the system when multiple users are logged in</description>
    <message>System policy prevents stopping the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

dan bagian yang berkaitan dengan me-reboot ketika orang lain masuk

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>auth_admin_keep</allow_active>
    </defaults>
  </action>

untuk

  <action id="org.freedesktop.consolekit.system.restart-multiple-users">
    <description>Restart the system when multiple users are logged in</description>
    <message>System policy prevents restarting the system when other users are logged in</message>
    <defaults>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>

Dan itu akan memungkinkan Anda mematikan dan me-reboot PC ketika banyak pengguna masuk. Apakah Anda ingin melakukan itu adalah pertanyaan yang berbeda.

Richard Holloway
sumber
1
Berikut ini tautan dengan lebih lanjut tentang policykit: hal.freedesktop.org/docs/PolicyKit/polkit-conf.html
Richard Holloway
4
Tidak akankah perubahan Anda terhapus setiap kali polkit diinstal ulang atau ditingkatkan?
Ryan Thompson
3
@Ryan, menurut wiki.ubuntu.com/SecurityTeam/PolicyKitPermissions/12.04 Anda dapat menulis file .pkla di dalam / etc / polkit-1 / localauthority, tapi saya tidak yakin dengan sintaksnya :) (beberapa info di sini wiki. archlinux.org/index.php/PolicyKit#Authorities )
Joril
1
Jawaban di bawah ini dari Flimm lebih baik, tidak akan ditulis selama pembaruan askubuntu.com/a/251942/7472
Konstigt
1
Bagaimana cara memuat ulang aturan tanpa reboot?
Suncatcher
33

Jawaban Richard Holloway sebenarnya bukan cara otorisasi PolickKit seharusnya diberikan. File yang dipasang di bawah /usr/share/polkit-1/actionstidak dimaksudkan untuk dimodifikasi. Sebagai gantinya, Anda harus memodifikasi otoritas di bawah /etc/polkit-1/localauthority/50-local.d/.

Inilah cara Anda melakukannya untuk pertanyaan ini:

Buat file bernama /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown.pkladan edit menggunakan sudoeditagar terlihat seperti ini:

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.stop-multiple-users
ResultInactive=no
ResultActive=yes

Kemudian buat .pklafile lain di direktori yang sama. Gunakan nama apa pun yang Anda suka berakhir dengan .pkla, misalnya allow_all_users_to_restart.pkla, dan isi dengan konten ini:

[Allow all users to restart]
Identity=unix-user:*
Action=org.freedesktop.consolekit.system.restart-multiple-users
ResultInactive=no
ResultActive=yes

Referensi:

Flimm
sumber
Ini ternyata menjadi solusi untuk masalah yang sangat aneh. Pada 12,04 setelah menginstal PowerBroker (untuk mengautentikasi ke Active Directory), pengguna tidak dapat memulai ulang atau mematikan komputer sama sekali dengan GUI (baik lightdm maupun sesi indikator tidak berfungsi. Itu hanya akan kembali ke layar login.) Setelah menambahkan izin ini ke policykit, semuanya berhasil.
korylprince
man pklocalauthority memiliki info di Ubuntu
Konstigt
4
Perhatikan bahwa nama telah berubah sekarang! Ini berasal dari 14,04: / usr / share / polkit-1 / action $ grep multiple * org.freedesktop.login1.policy: <action id = "org.freedesktop.login1.power-off-multiple-session"> org.freedesktop .login1.policy: <action id = "org.freedesktop.login1.reboot-multiple-sesi"> org.freedesktop.login1.policy: <action id = "org.freedesktop.login1.suspend-multi-sesi"> org .freedesktop.login1.policy: <action id = "org.freedesktop.login1.hibernate-multiple-sesi">
Konstigt
1
Untuk 16,04, sebagai tambahan pada perubahan @ Konstigt, bagi saya file harus ada /var/lib/polkit-1/localauthority/50-local.ddan baris tambahan ResultAny=yesdiperlukan untuk kedua file. Satu-satunya pesan peringatan yang saya dapatkan sekarang adalah Failed to set wall message, ignoring: Interactive authentication required., tetapi mematikan dan memulai kembali berfungsi dengan benar sekarang.
sigalor
Komentar @ sigalor bekerja untuk saya, dengan tambahan yang sysctl poweroff -idiperlukan org.freedesktop.login1.power-off-multiple-sessions, jadi saya membuat file terpisah dengan baris yang sama kecuali denganAction=org.freedesktop.login1.power-off-multiple-sessions
wickedchicken
16

Ada cara yang lebih baik. Jika Anda telah menginstal dbus-send, Anda dapat mematikan melalui dbus tanpa perlu meningkatkan hak akses root .

Saya tidak dapat mengingat halaman di mana dokumentasinya, tetapi seorang pengguna Archlinux menemukan ini.

Mematikan:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

Mulai ulang:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Reboot

Menangguhkan:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Suspend int32:1

Hibernasi:

dbus-send --system --print-reply --dest=org.freedesktop.Hal \
          /org/freedesktop/Hal/devices/computer \
          org.freedesktop.Hal.Device.SystemPowerManagement.Hibernate

Salam.

ibuclaw
sumber
Wow itu ... retas. Luar biasa, namun tetap ...
jathanism
1
Shutdown dan Reboot sepertinya tidak berfungsi lagi di 11.10
Mikl
@Mikl coba instal hal (sudo apt-get install hal)
Epeli
12

HAL tampaknya sekarang sudah usang dan tidak diinstal pada rilis Ubuntu terbaru.

Anda harus menggunakan layanan ConsoleKit dan UPower dbus untuk mengelola status daya

Mematikan:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

Mengulang kembali:

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

Menangguhkan:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

Hibernasi:

dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate

Terima kasih untuk forum Arch Linux .

Ini bekerja untuk saat ini di Precise dan Quantal, tetapi tidak tahu berapa lama sejak fokus Freedesktop tampaknya bergeser dari ConsoleKit ke systemd. Tidak tahu apakah Canonical peduli ...

Epeli
sumber
4

Ini bekerja pada 14,04. Variasi yang diperbarui dari jawaban IMO sebelumnya yang benar oleh Flimm .

sudo mkdir -p /etc/polkit-1/localauthority/50-local.d
sudoedit /etc/polkit-1/localauthority/50-local.d/allow_all_users_to_shutdown_reboot_suspend.pkla 

Rekatkan ini di dalam:

[Allow all users to shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-multiple-sessions
ResultActive=yes

[Allow all users to reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-multiple-sessions
ResultActive=yes

[Allow all users to suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-multiple-sessions
ResultActive=yes

[Allow all users to ignore inhibit of shutdown]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of reboot]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot-ignore-inhibit
ResultActive=yes

[Allow all users to ignore inhibit of suspend]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-ignore-inhibit
ResultActive=yes
Konstigt
sumber
1

Tidak ada cara untuk menghindari prompt untuk kata sandi pengguna super saat me-reboot sementara pengguna lain login pendek membuka jendela terminal dan mengeluarkan rebootperintah sebagai root:

sudo reboot

Meskipun demikian, jika tidak dikonfigurasikan untuk memintas kata sandi yang meminta akun pengguna Anda, sudojuga akan meminta kata sandi Anda.

Jangan khawatir, ini adalah hal-hal BAIK. Mem-boot ulang harus jarang dilakukan dan prompt kata sandi admin sederhana akan menyelamatkan diri Anda secara tidak sengaja!

jathanisme
sumber
Anda juga dapat mengedit visudo dan membuat pengguna Anda tidak meminta kata sandi saat mengetikkan sudo.
Da1T
0

Saya percaya ini hanya masalah ketika melakukannya melalui baris perintah.

Jika demikian, di sini ada tautan yang dapat membantu masalah Anda.

myusuf3
sumber
Tidak, ada jendela sembulan yang menanyakan kata sandi admin jika ada pengguna lain yang masuk saat Anda mematikannya. Menggunakan gui.
Yesaya
-1

Rupanya, Anda dapat mematikan tanpa root dari GUI karena gdm berjalan sebagai root. Gnome memberitahu gdm untuk mematikan, dan gdm melakukannya.

Anda dapat melakukan sesuatu yang mirip dengan skrip. Saya tidak yakin seberapa praktis Anda dengan BASH, tetapi saya percaya orang dapat menulis skrip yang berjalan sebagai root dan, ketika menerima sinyal tertentu, menjalankan perintah shutdown.

Perlu diingat bahwa ini dapat menimbulkan masalah keamanan.

Michael Crenshaw
sumber
Saya pikir masalah yang kemungkinan akan dia temui adalah prompt yang muncul memberitahukan bahwa orang lain masih login, dan memerlukan kata sandi sudo untuk mengaktifkan shut-down / restart.
David Thomas