Başka bir kullanıcının sistem birimi birimlerini yönetme


10

Bir kullanıcı veya belki de kök, başka bir kullanıcının kullanıcı düzeyi sistem hizmetlerini denetleyebilir mi?

Denedim sudo -u <some user> systemctl --user restart <some service>, ancak yaklaşık dbus yakınır: Failed to get D-Bus connection: Connection refused.

Yanıtlar:


5

Uzaktan ssh üzerinden gentoo kutuma giriş yaptığımda da aynı problemi yaşadım. Benim durumumda bunun nedeni, XDG_RUNTIME_DIRve DBUS_SESSION_BUS_ADDRESSortam değişkenlerinin eksik olmasıdır. Aşağıdaki komutları çalıştırın ve tekrar deneyin:

export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"

Bu yardımcı olursa, bu komutları .bashrc'nize koyabilirsiniz. Sanırım .bashrc'den daha zarif bir çözüm olmalı ama bu sizin dağıtımınıza bağlıdır.

İşte bu çözümü bulduğum yer.

Düzenle:

root olarak giriş yaptım, başarıyla systemctl --userbaşka bir kullanıcı suolarak aşağıdaki gibi kullanarak başardı :

su -c 'XDG_RUNTIME_DIR="/run/user/$UID" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status' username

veya kullanarak sudo(not, ilgili kullanıcıların UID'sini (1000) '/ run / user /' yoluna açıkça eklemem gerekti, ancak bunu bir bash betiğinden çalıştırıyorsanız, bunun yerine $ SUDO_UID kullanabilirsiniz):

sudo -u username XDG_RUNTIME_DIR="/run/user/1000" DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus" systemctl --user status

1
Ben de öyle /etc/profile.d/dbus.sh. Sanırım sudobu beyaz listeye ihtiyacı var, çünkü çevreyi varsayılan olarak temizliyor. Ancak, geçerli kullanıcının çalışma zamanı dizinini aktarıp aktarmayacağından emin değilim.
mkaito
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.