systemd:ログアウト後にキープアライブするユーザー(パスワードなし)固有のサービスを起動します


0

systemdでユーザー固有のサービスを実行しようとしています。私は専門職の管理者ではなく、開発者です。

現在、Ubuntu 16.04でソリューションをテストしていますが、Centos 7にソリューションを展開する予定です。実際に何も変わらないことを願っています。

しかし、今まで私はスクリプトで以下を行うことができました:

  1. コマンドラインで起動したときに私のサービスが効果的に実行されていることを確認してください
  2. ディレクトリを使用してユーザーjohnを作成します/home/john(このホームが必要です)が、パスワードはありません。私はそれがより安全であることを読んだ(そして私が間違いをしないことを願う...)。
  3. /home/john/.config/systemd/userサービスファイルを保存するディレクトリを作成します。
  4. このドキュメントに従って残留を有効にします

だから今、私はジョンとのセッションを開いてテストし、サービスを開始したいのですが、うまくいきません。私はそれを次のようにしようとしています:

sam$ sudo su - john
john$ systemctl --user status my-service.service

そして、この不愉快なものを集めてください:

Failed to connect to bus: No such file or directory

とにかかわらずにstatus/start/stop/list-units、私はそれ以上の状態の場所に置かコマンドは常に同じメッセージではありません。

johnのセッションに接続するコマンドは、次の行で記録されます。

$journalctl -e

Jun 15 18:16:23 sam-dell sudo[5681]:      sam : TTY=pts/2 ; PWD=/home/sam/IdeaProjects ; USER=root ; COMMAND=/bin/su - john
Jun 15 18:15:02 sam-dell su[5491]: Successful su for john by root
Jun 15 18:15:02 sam-dell su[5491]: + /dev/pts/2 root:john
Jun 15 18:15:02 sam-dell su[5491]: pam_unix(su:session): session opened for user john by (uid=0)
Jun 15 18:15:02 sam-dell su[5491]: pam_systemd(su:session): Cannot create session: Already running in a session

... systemctlコマンドを試行しても何も起こりません。

注:ユーザーにパスワードを追加しましたが、ユーザーのgnomeセッションで開いたターミナルからはまだ機能しませんsam。しかし、私のユーザーはパスワードを持っているので、Ubuntuでgnomeを使用して接続できsystemctl --user status/start/stop、john gnomeセッションにログインすることで問題なく実行できました。

誰もがアイデアを持っていますか?私は問題を間違ったやり方で取っているかもしれません。リモートサーバー上で別のユーザーとしてsystemdサービスを実行したいだけです。

助けてくれてありがとう

回答:


0

ネストされたログインセッションsu は作成されないことに注意しください。Samのセッション内で開始されたすべてのプロセスは、まだそのセッションに属します。

コンソール、gdm、ssh、またはmachinectl login .host(そのエイリアスには短いエイリアスがあると思います)を使用してログインする必要があります。これらはすべてクリーンな状態から開始されるためです。(ただし... lingerを単独で有効にしてもsystemdインスタンスが起動しない理由はわかりません。そうすべきです。)

systemctl自体は正しいセッションにある必要はありません(sudo -u itできます)が、systemdインスタンスを見つけるために$ XDG_RUNTIME_DIR環境変数に依存しています。通常はに設定する/run/user/<UID>必要があり、そのディレクトリにはbusソケットまたはソケットが必要systemd/privateです。


サーバー(centos 7)で試しました。ユーザーを作成し、残留を有効にしました。sshセッションを開くことができるように、いくつかの.ssh / idを配置します。
サム

ああ、そうです、CentOSにはこの機能がまったくありません。彼らは外科的にそれを取り除きます。
-grawity

サーバー(centos 7)で試しました。ユーザーを作成し、残留を有効にしました。sshセッションを開くことができるように、いくつかの.ssh / idを配置します。単純なサービスを作成し、/ etc / systemd / systemの下でシンボリックリンクされたときに、rootで正常に実行されることを確認しました。その後、シンボリックリンクを消去し、/home/john/.config/systemd/system/my-service.serviceにサービスを置くが、常に収集systemctl --user start my-service Failed to get D-Bus connection: No such file or directory
SAM

本当に彼らは削除されました??? !!! lingeringまたは--userとはどのような機能ですか?
サム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.