元の pam.d/login ファイルから始めます。
auth include system-local-login
account include system-local-login
password include system-local-login
session optional pam_lastlog.so
session include system-local-login
オプションとして追加のモジュールサービスが必要です(例:pam_kwallet5.soを使用)。
auth include system-local-login
auth optional MODULE
account include system-local-login
password include system-local-login
session optional pam_lastlog.so
session include system-local-login
session optional MODULE PARAMs
これにより所望の目的が達成される。
ただし、このオプションを root 以外のユーザーに限定したいと思います。
(たとえば、rootはkdeを起動しないため、ログイン時にkwalletd5デーモンを起動することは意味がありません。)
私はpam_listfile.soモジュールを介して道を見つけようとしましたが、無駄になりました。
編集1: pam_exec.so を介して擬似条件エントリが生成されたかどうかを知りたい。ここで説明する方法許容可能な解決策になることができます。
編集2:muruのより良い解決策を見つける前に、pam_succeed_if.soを使用して次の方法を見つけました.
auth include system-local-login
auth [default=1 success=ignore] pam_succeed_if.so uid > 0
auth optional MODULE
account include system-local-login
password include system-local-login
session optional pam_lastlog.so
session include system-local-login
session [default=1 success=ignore] pam_succeed_if.so uid > 0
session optional MODULE PARAMs
muruの解決策は、与えられた数の次の規則を無視するのと同じ原則に基づいていますが、より専門化されたモジュール、pam_rootok.soを使用するので、より良いです。
ベストアンサー1
success=1
との組み合わせpam_rootok.so
動作する必要があります:
auth [success=1,default=ignore] pam_rootok.so
auth optional MODULE
~からman 5 pam.conf
:
For the more complicated syntax valid control values have the
following form:
[value1=action1 value2=action2 ...]
Where valueN corresponds to the return code from the function
invoked in the module for which the line is defined.
... The actionN can take one of the following forms:
...
N (an unsigned integer)
equivalent to ok with the side effect of jumping over the
next N modules in the stack. Note that N equal to 0 is not
allowed (and it would be identical to ok in such case).
したがって、成功した場合(ユーザーがルートの場合)、success=1
PAMをスキップする必要があります。MODULE
pam_rootok.so