pam:root以外のユーザーのルールを制限する方法

pam:root以外のユーザーのルールを制限する方法

元の 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=1PAMをスキップする必要があります。MODULEpam_rootok.so

おすすめ記事