「pam_succeed_if.so」が「service」ユーザーを識別できるようにするにはどうすればよいですか?

「pam_succeed_if.so」が「service」ユーザーを識別できるようにするにはどうすればよいですか?

私はユーザー名を一致させるためにserviceこのモジュールを使用しているLinuxシステムを持っています。pam_succeed_if.soたとえば、

auth      required      pam_succeed_if.so user = service

ただし、これはユーザー名と一致しませんservice。これは許可されているフィールドであるためですpam_succeed_if.so。マニュアルページで(強調表示用に編集):

利用可能なフィールドは、user、uid、gid、shell、home、ruser、rhost、tty、および提供する

フィールド名と一致する値をエスケープする方法は?

追加のトラブルシューティング:

debugオプションがオンになり、pam_succeed_if.soユーザー名が次のserviceように変換されますlogin

login: pam_succeed_if(login:auth): 'user' resolves to 'login'

これはログインに使用されるPAM設定です/etc/pam.d/login

答え1

pam_succeed_if.so値が存在する場合は、渡された値をuser値に変換します。fieldたとえば、ユーザーを使用すると、次のようになりますshell

login: pam_succeed_if(login:auth): 'user' resolves to '/bin/bash'

私はこれが明らかに人気のない決定を下すのをどのように防ぐことができるかわかりません。しかし、ほとんどすべての人に適用される解決策があります。

実際の値ではなく解析された値を確認してください。

はい

servicePAM構成でユーザーを一致させるには、次のようにしますlogin

auth      required      pam_succeed_if.so user = login

servicePAM構成でユーザーを一致させるには、次のようにしますsshd

auth      required      pam_succeed_if.so user = sshd

shellユーザーを一致させるように構成されたシェルは次のとおりです/bin/bash

auth      required      pam_succeed_if.so user = /bin/bash

関連情報