किसी अन्य उपयोगकर्ता की सिस्टमड इकाइयों का प्रबंधन करना


10

क्या कोई उपयोगकर्ता, या शायद रूट कर सकता है, किसी अन्य उपयोगकर्ता के उपयोगकर्ता स्तर के सिस्टम सेवाओं को नियंत्रित कर सकता है?

मैंने कोशिश की है sudo -u <some user> systemctl --user restart <some service>, लेकिन यह डब के बारे में शिकायत करता है Failed to get D-Bus connection: Connection refused:।

जवाबों:


5

जब मैं दूरस्थ रूप से ssh के माध्यम से अपने gentoo बॉक्स में लॉग इन करता था तो मुझे यही समस्या थी। मेरे मामले में ऐसा इसलिए था क्योंकि पर्यावरण XDG_RUNTIME_DIRऔर DBUS_SESSION_BUS_ADDRESSपर्यावरण चर गायब थे। निम्नलिखित कमांड चलाएँ और पुनः प्रयास करें:

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

यदि यह मदद करता है, तो आप उन आदेशों को अपने .bashrc में डाल सकते हैं। मुझे लगता है कि .bashrc की तुलना में अधिक सुरुचिपूर्ण समाधान होना चाहिए, लेकिन यह आपके डिस्ट्रो पर निर्भर करता है।

यहाँ है जहाँ मैं उस समाधान पाया।

संपादित करें:

रूट के रूप में लॉग इन किया, मैं systemctl --userएक अन्य उपयोगकर्ता के suरूप में निम्नानुसार सफलतापूर्वक चलाने में कामयाब रहा :

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

या प्रयोग sudo(ध्यान दें, मुझे संबंधित उपयोगकर्ताओं को यूआईडी (1000) को पथ '/ रन / उपयोगकर्ता /' में जोड़ना था, लेकिन यदि आप इसे bash स्क्रिप्ट से चला रहे हैं, तो आप इसके बजाय $ SUDO_UID का उपयोग कर सकते हैं):

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

1
मैं बिल्कुल में है /etc/profile.d/dbus.sh। मुझे लगता है कि sudoउन लोगों को श्वेतसूची की आवश्यकता है, क्योंकि यह डिफ़ॉल्ट रूप से पर्यावरण को साफ करता है। मुझे यकीन नहीं है कि यह सिर्फ वर्तमान उपयोगकर्ता के रनटाइम डायर को स्थानांतरित कर देगा।
मिकितो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.