অন্য ব্যবহারকারীর সিস্টেমড ইউনিট পরিচালনা করা


10

একটি ব্যবহারকারীর, বা সম্ভবত মূল, অন্য ব্যবহারকারীর ব্যবহারকারী স্তর সিস্টেমড পরিষেবাদি নিয়ন্ত্রণ করতে পারে?

আমি চেষ্টা করেছি sudo -u <some user> systemctl --user restart <some service>, কিন্তু এটি সম্পর্কে dbus, অভিযোগ: Failed to get D-Bus connection: Connection refused।

উত্তর:


4

আমি যখন ssh এর মাধ্যমে দূরবর্তীভাবে আমার ভেন্টু বাক্সে লগইন করেছি তখন আমারও একই সমস্যা ছিল। আমার ক্ষেত্রে এটি কারণ 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 এ রাখতে পারেন। আমি অনুমান করি .বাশার্কের চেয়ে আরও মার্জিত সমাধান অবশ্যই হবে তবে এটি আপনার ডিস্ট্রোতে নির্ভর করে depends

এখানেই আমি সেই সমাধানটি পেয়েছি।

সম্পাদনা:

রুট হিসাবে লগ ইন, আমি নিম্নলিখিত 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) '/ রান / ইউজার /' পাথে যুক্ত করতে হয়েছিল, তবে আপনি যদি এটি কোনও বাশ স্ক্রিপ্ট থেকে চালাচ্ছেন তবে আপনি instead 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তাদের শ্বেত তালিকাভুক্ত হওয়া দরকার কারণ এটি ডিফল্টরূপে পরিবেশ সাফ করে। আমি নিশ্চিত না যদিও এটি কেবলমাত্র বর্তমান ব্যবহারকারীর রানটাইম দির স্থানান্তর করবে কিনা।
— এমকেইটো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.