今リンリングを申請する方法

今リンリングを申請する方法

~によるとこの回答、ヘッドレスシステムでユーザーの遅延を有効にしました。ただし、loginctl list-sessionsユーザーはまだリストされていません。そのユーザーを使用してSSH経由でログインすると表示され、再接続を解除すると失われます。

システム全体を再起動せずに遅延セッションを作成する方法

私は試しましたが成功しませんでしたsystemctl restart systemd-logind

編集:私の目標は、そのユーザーが制御するタイマーを実行することです。sudo -iu遅延が有効なシェルでこのフォームを試みると、次のエラーが発生します。

$ systemctl --user status servicename
Failed to connect to bus: No such file or directory

sshを介してログインしてloginctlにセッションを表示すると、期待どおりに機能します。しかし、今はSSHシェルでのみ動作し、まだsudoシェルでは動作しないことがわかりました。したがって、実際にはセッションとは関係がないかもしれません。

答え1

ここでは「ユーザー」と「セッション」を混同しています。

を使用すると、loginctl enable-linger myuserユーザーのユーザー管理者はmyuser起動時に(またはまだ起動していない場合はすぐに)開始されますが、実際にはユーザーへのセッションは開始されません(これはユーザーがログインしたときにのみ発生します)。

このコマンドを使用すると、loginctl list-usersその効果を確認できます。また、リンガーを有効にした直後にps -fu myuserユーザーに対してどの User Manager() が実行されているかを確認することもできます。systemd --user

[root@myhost ~]# loginctl list-users
UID USER
  0 root

1 users listed.
[root@myhost ~]# ps -fu myuser
UID        PID  PPID  C STIME TTY          TIME CMD
[root@myhost ~]# loginctl enable-linger myuser
[root@myhost ~]# ps -fu myuser
UID        PID  PPID  C STIME TTY          TIME CMD
myuser   12345     1 20 18:44 ?        00:00:00 /usr/lib/systemd/systemd --user
myuser   12349 12345  0 18:44 ?        00:00:00 (sd-pam)
[root@myhost ~]# loginctl list-users
 UID USER      
   0 root      
1001 myuser

2 users listed.

myuserただし、コンソール、GUI、またはSSHを介してログインしていないため、新しいセッションはありません。

[root@myhost ~]# loginctl list-sessions
SESSION UID USER SEAT TTY  
      1   0 root      tty0

1 sessions listed.

ただし、User Managerはセッションに関係なく開始されるため、ユーザーにユーザーユニット(サービスやタイマーなど)がある場合、そのユニットはユーザーがログインしているのかセッションを作成したかにかかわらず起動時に起動されます。

これがあなたに説明されることを願っています。


修正する:質問編集によると、現在経験している実際の問題は、SSHセッションではなくシェルsystemctl --userでコマンドを実行するようです。sudo -i

XDG_RUNTIME_DIRユーザーに切り替えてエクスポートすると、この問題を解決できます。たとえば、次のようになります。

$ export XDG_RUNTIME_DIR=/run/user/$UID

または:

$ XDG_RUNTIME_DIR=/run/user/$UID systemctl --user status servicename

SSH経由でログインするときにこれを行う必要がないのは、SSHがPAMを使用してユーザーを認証し、PAMモジュールの1つがこれらの環境変数を設定するためです。 PAMを使用すると、sudoPAM(少なくともPAMスタック全体ではない)を通過しないため、これらの項目を正しく設定できません。

関連情報