システムの起動時に開始したいサービスがあります。多くのインスタンスが存在する可能性があるため、テンプレートとしてap @ .service定義を構築しました。sudo su - myuserの後に 'systemctl --user'を使ってユーザシステムを制御できますか?
ルートシステムで定義されていますが、これは正常に動作し、システムのサービスを開始および停止します。サービスインスタンスは、期待どおりにsystemctl enable [email protected]
でインストールされます。ルートも問題なくサービスを開始および停止できます。このサービスは、rootではなく自分のアカウント(myuser)で実行され、ap @ .serviceテンプレートのUser = myuserによって制御されます。
しかし、ユーザー 'myuser'がシステムのセキュリティを損なうことなく、自分のサービスを開始して停止できるようにしたい。
私はユーザシステムを使用して切り替えましたが、有効期限はloginctl enable-linger myuser
です。 〜myuser/.config/systemd/userディレクトリに定義されているサービスを有効にします。このサービスは、システムの設計どおりに開始され、正常に停止します。私が端末に「myuser」としてログインすると、systemctl --user start [email protected]
とsystemctl --user stop [email protected]
はどちらも完璧に動作します。私は別のユーザー(ユーザー2)としてログインし、ターミナルでsudo su - myuser
を行う場合
しかし、その後、systemctl --user
コマンドは現在、エラーメッセージで失敗「D-バス接続の取得に失敗しました:そのようなファイルまたはディレクトリ」。
ユーザーを切り替えるコマンドsudo su - myuser
の後に、systemctl --user
を有効にするにはどうすればよいですか?
あなたのCWDはまだ他のユーザのホームディレクトリですか?呼び出し元のユーザーに現在のディレクトリを表示する権限がない場合、ユーティリティによっては問題があります。 – Dave
こんにちはDave ...ホームディレクトリは、sudoコマンドで - によって強制的に切り替えられました。 CWDが新しいユーザのホームディレクトリに変更されました。 – NeilCasey
ああ。私を無視してください。 – Dave