「対話型認証が必要です」というエラーが表示されるのはなぜですか?

「対話型認証が必要です」というエラーが表示されるのはなぜですか?

systemctlコマンドを実行するたびに、なぜこのエラーが表示されるのか理解できません。を使用して実行するsudo必要があり、よく実行されていることを知っていますが、なぜこれが起こるのか疑問に思います。以前はこれは起こらず、ファイルを設定する/etc/ssh/sshd_config以外に特別なことはしませんでした。

systemctlそれ以前はなくコマンドを実行すると、sudoユーザーパスワードを要求するテキスト応答が表示されました。

昔はこんな感じでした。

しかし、今この要件はもはや現れません!なぜそんなことですか?

user@machine:~$ systemctl restart sshd
Failed to restart sshd.service: Interactive authentication required.
See system logs and 'systemctl status sshd.service' for details.

systemctl status sshdコマンドを実行すると、次のエラーが発生しますCouldn't open /etc/securetty: No such file or directory。これは何についてですか?ところで、私のコンピュータにUbuntu 20.04 LTSがあります。

user@machine:~$ systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-05-21 19:47:32 UTC; 2h 51min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 14021 (sshd)
      Tasks: 5 (limit: 38329)
     Memory: 1.7G
     CGroup: /system.slice/ssh.service
             ├─14021 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
             ├─20182 ssh-server new -c 256 -s -l LANG=en_US.UTF-8
             ├─20183 -bash
             ├─46248 systemctl status sshd
             └─46249 pager

May 21 20:58:15 machine sshd[19925]: Disconnected from user user 217.138.209.001 port 2222
May 21 21:13:40 machine sudo[20203]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:13:49 machine sudo[20203]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:13:49 machine sudo[20203]: pam_unix(sudo:auth): authentication failure; logname=user uid=1000 euid=0 tty=/dev/pts/1 ruser=user rhost=  use>
May 21 21:13:51 machine sudo[20203]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:13:55 machine sudo[20203]: pam_unix(sudo:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:38:02 machine su[34300]: pam_unix(su:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:38:05 machine su[34300]: pam_unix(su:auth): Couldn't open /etc/securetty: No such file or directory
May 21 21:38:05 machine su[34300]: (to root) robin on pts/1
May 21 21:38:05 machine su[34300]: pam_unix(su:session): session opened for user by user(uid=1000)

ベストアンサー1

を使用すると、sudo systemctlsystemdジョブをとしてスケジュールしますrootrootシステムジョブのスケジュールは常に許可されるため、常に機能します。

ただし、systemctlsudoなしで実行すると、systemd現在のユーザーとしてジョブをスケジュールできます。これができるかどうか systemd尋ねてください。適切なポリシー構成を確認し、次の手順を実行します。polkitpolkit

  1. 承認(パスワードは不要)
  2. ユーザー認証が必要です(人が要求していて、この人が端末の前に座っていることを確認してください)。
  3. 他の人として認証する必要があります...おそらくroot:(ユーザーはタスクを実行できないため、管理者パスワードの入力を求められます)。

どちらも検証スクリプトをブロックするpolkitために最善を尽くしますsudo。そのため、--password選択の余地もなく受け入れるsudoこともsudoできませんecho 'password' | sudo lspolkit似ていますが、より複雑で理解しにくいです。スクリプト認証に対するこのような嫌悪感は、特権操作がユーザーまたは他の特権プロセスによって明示的にコマンドされる必要があるという事実に由来します。私たちは通常、権限のある操作を指示する権限のないプロセス/スクリプトを望んでいません。

polkit認証しようとすると通過しますpolkit-agent。画面に認証ウィンドウが表示される場合、これは通常polkit-agentデスクトップ環境で提供されます。ただし、適切なセッションに接続するには、プロンプトが正しいセッションに表示されるように、ユーザーpolkit-agentに関するいくつかの情報を知る必要があります。$DISPLAY$XAUTHORITY

あなたの場合はすでにsshコンピュータにあるため、画面は表示されません。この場合、テキストプロキシに「フォールバック」されますが、プロキシがrootではなくユーザーとして認証する問題があるようです。または、認証中ですが、ジョブスケジュールを設定する権限がないことを認識する問題があるようですsystemd。このsecurettyメッセージは、実際にユーザーを認証できるクリーンな環境がないことを示します(たとえば、他のプロセスが標準入力を傍受するか、ユーザーがスクリプトではなく本当の人であるかどうかを判断できません)。

理由が何であれ、根本的な原因はsshシステムへのアクセス権を取得しましたが、システムジョブをスケジュールする権限がないことです。

2つのオプションがあります。

  1. 使用sudo systemctl。これは最も簡単な解決策ですが、何らかの理由でこれが許可されていない場合(たとえば、作業スクリプトを作成していて追加したくないsystemd場合)、必ず言及してください。:NOPASSWD/etc/sudoers

  2. ユーザーで作業できるようにルールを実行できるpolkitルールを作成します。systemdこれを行う方法を説明する良い答えがあります。ここ

おすすめ記事