Bagaimana saya bisa mengkonfigurasi dbus untuk memungkinkan ssh-user menangguhkan server?

9

Saya mencoba untuk menangguhkan server saya menggunakan dbus dan UPower. Server menjalankan Ubuntu LucidLynx 64bit.

Sementara semuanya bekerja dengan baik jika saya duduk langsung di mesin, itu tidak akan berfungsi melalui ssh. Jika saya terhubung ke server melalui ssh dan mencoba untuk menangguhkan mesin menggunakan dbus dan upower, itu memberikan kembali

dbus.exceptions.DBusException: org.freedesktop.UPower.GeneralError: tidak diotorisasi

Adakah yang bisa tolong beri tahu saya cara mengkonfigurasi dbus untuk memungkinkan pengguna ssh menangguhkan mesin?

Produnis
sumber
btw: SAYA LAKUKAN grep dan gunakan alamat-sesi-dbus saat ini ...
Produnis
2
Bisakah Anda memberikan beberapa detail tentang metode yang Anda gunakan? Apa baris perintah, alat, dll.
Kees Cook

Jawaban:

12

Ada dua cara dasar ini bisa dilakukan dan solusinya:

Entah Anda perlu memodifikasi /usr/share/polkit-1/actions/org.freedesktop.upower.policy, setel XDG_SESSION_COOKIEvariabel lingkungan ke nilai yang sesuai atau gunakan pm-suspend:

Memodifikasi /usr/share/polkit-1/actions/org.freedesktop.upower.policy

Terapkan tambalan ini:

--- /usr/share/polkit-1/actions/org.freedesktop.upower.policy.orig  2011-11-16 19:06:59.274055248 +0100
+++ /usr/share/polkit-1/actions/org.freedesktop.upower.policy   2011-11-16 19:11:15.178864922 +0100
@@ -21,6 +21,7 @@
     <defaults>
       <allow_inactive>no</allow_inactive>
       <allow_active>yes</allow_active>
+      <allow_any>yes</allow_any>
     </defaults>
   </action>

(Ke <action id="org.freedesktop.upower.suspend">tag / bagian), dan itu akan berfungsi juga ...

atau

XDG_SESSION_COOKIE

Saat Anda menggunakan desktop, Anda akan melihat bahwa $XDG_SESSION_COOKIEada satu nilai, tetapi dalam sesi ssh, ada nilai lain. Simpan XDG_SESSION_COOKIEmis. Dalam file .dot atau sesuatu ketika desktop dimulai dan sumbernya di skrip Anda yang perlu melakukannya lebih dari ssh.

pm-tunda

Atau Anda bisa menyerah melakukannya dengan dbusdan UPowerdan hanya mengeluarkan pm-suspendsebagai root dan menyelesaikannya! :-)

Peter V. Mørch
sumber
1
+1 untuk "keluarkan saja pm-suspend sebagai root dan selesaikan!" - tersedia dari paket pm-utils.
Bjoern Dahlgren
5

File di bawah /usr/share/polkit-1/actionstidak dimaksudkan untuk dimodifikasi.

Buat file dengan nama /etc/polkit-1/localauthority/50-local.d/allow_all_ssh-users_to_upower.pkla

[Allow all ssh-users to upower]
Identity=unix-group:ssh-users
Action=org.freedesktop.upower.policy
ResultInactive=no
ResultActive=yes
AllowAny=yes
pengguna1435828
sumber
Ada salah ketik dalam jawaban - baris terakhir seharusnya mengatakan ResultAny, bukan AllowAny.
Emil Styrke