1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Linux上で動作するプログラムの認証を柔軟に管理する仕組みである、PAMについて学んだ時に分かりにくかった箇所を中心に整理した記事となります

個人的にPAMの仕組みの理解が難しかったため、忘れた頃に見返せるように記事にさせていただきました

誰かの助けになれば幸いです

記事の対象者

  • PAMの設定をしたことがない
  • PAMを設定するイメージを掴みたい
  • 他の記事やAIの出力を確認したけど、理解にあともう一押し必要だと感じた

PAMの基本概念

  • PAMはユーザやプログラムやサービスに対しての認証を一元管理する仕組みです
  • プログラム毎(例: ssh, su, sudo)に認証のメカニズムをPAMの設定ファイル(/etc/pam.d/)として、設定が可能です
  • 特定のユーザーやグループに対して異なる認証ルールを適用することも可能です
  • 設定方法として、authselectでプロファイルを作成し、簡略的にPAMやNSS(ネットワークセキュリティーサービス)を変更することが一般的ですが、設定方法は別の記事で投稿しようと思います

PAMの全体像

まずはPAMの全体像です
PAM全体像.png

PAMの基本

PAMはプログラム毎に設定ファイルを作成、変更を行い設定します
最初にPAMの設定ファイルの場所を確認します

PAMの設定ファイル

  • PAMの設定ファイルは/etc/pam.dディレクトリにあります
  • ファイル名は殆どがプログラム名と同じです
  • 例えば、/etc/pam.d/susuコマンドの認証設定ファイルです
  • otherファイルは例外で、設定ファイルを持たないプログラムに対して適用されます
  • PAMの設定ファイルには、PAMモジュールの呼び出し順序と制御フラグを記載します(書式については、後ほど解説します)
  • ディストリビューションによっては、/etc/pam.confもありますが、こちらプログラム毎の管理が難しくなるため、こちらで編集することは非推奨です

次に、PAMのモジュールについて確認します

PAMのモジュール

  • PAMのモジュール自体は/usr/lib64/securityディレクトリにあります
  • PAMの設定では、モジュールに引数(オプション)を渡して詳細な動作を制御することが可能です

次にログについて確認します

ログ

  • ログは/var/log/secureに保存されます
/var/log/secure
Dec 13 09:59:36 ip-10-0-138-50 sudo[1558]: ssm-user : TTY=pts/0 ; PWD=/usr/bin ; USER=root ; COMMAND=/bin/su - ec2-user
Dec 13 09:59:36 ip-10-0-138-50 systemd[1561]: pam_unix(systemd-user:session): session opened for user root(uid=0) by root(uid=0)
Dec 13 09:59:36 ip-10-0-138-50 sudo[1558]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1001)
Dec 13 09:59:36 ip-10-0-138-50 su[1575]: pam_unix(su-l:session): session opened for user ec2-user(uid=1000) by (uid=0)

PAM設定方法

PAMの設定ファイルの書式について確認します

PAMの書式

  • PAMの設定ファイルは上から順に実行されます
  • コントロールの設定により、処理を途中で終了することが出来るなど、柔軟な制御ができます
  • PAMの設定ファイルの各行は、以下の4つの要素で構成されます
構成要素
モジュールタイプ コントロール モジュールのパス [引数]

<記述例>
auth    required    pam_env.so
auth    required    pam_faillock.so
auth    sufficient  pam_unix.so
auth    required    pam_deny.so    # 前行のpam_unix.soが成功した場合、実行しない

モジュールタイプ

モジュールタイプによって、PAMモジュールが異なる動作をします
PAMのモジュールタイプは以下の4つ(auth, account, password, session)のいずれかとなります

auth

  • ユーザ認証を行います
  • パスワードを利用した認証などで、ユーザを認証します
auth    required      pam_env.so                 # ユーザログイン時の環境変数を設定します
auth    required      pam_faillock.so preauth    # 認証前:ユーザがロック中かを確認します
auth    sufficient    pam_unix.so                # パスワード(/etc/shadow)を使用してユーザを認証します
auth    [default=die] pam_faillock.so authfail   # 認証失敗時:失敗回数を記録します
auth    required      pam_faillock.so authsucc   # 認証成功時:失敗カウントをリセットします
auth    required      pam_deny.so                # フェイルセーフ:ここまで到達した場合は必ず拒否します

account

  • accountでは、authのフェーズで認証したユーザの有効性を確認します
  • パスワード有効期限切れやプログラムへのアクセスが許可されているか等を評価できます
account          sufficient      pam_succeed_if.so uid = 0 use_uid quiet # root(uid:0)の場合、次の処理は実行せず、成功。root以外は次の行へ進む
account          required        pam_unix.so      # ユーザが有効状態を確認します(パスワードの有効期限、アカウントロック)
account          required        pam_faillock.so  # ロックされたアカウントでないか、確認します

password

  • passwordは、passwordの検証、変更、保存などを行うフェーズです
  • 少々分かりにくいですが、新規のパスワード保存や変更のタイミングで実行されるモジュールタイプです
  • /etc/pam.d/suにもpassword記載がありますが、実際には実行されません(慣習的に置いてる可能性があります)
password    requisite     pam_pwquality.so local_users_only # ローカルユーザのパスワードがpwquality.confの要件(パスワードの複雑性)に満たすか確認する
password    sufficient    pam_unix.so sha512 shadow nullok use_authtok # 前行で要件に満たした、パスワードを保存する。

session

  • ユーザ認証の前後に実行する処理を定義します
  • ユーザがログインしたことをログに記録したり、サービスを設定したりできます
  • 先頭のマイナス"-"はモジュールが無くても、エラーとならない処理を表しています
session    required     pam_unix.so # ログインしたことを記録します
session    optional     pam_motd.so # ログイン後バナーを表示する
-session    optional    pam_systemd.so # systemdモジュールが呼び出せる場合、呼び出しを行う

コントロール

コントロールでは、認証処理の制御を定義します
表のNo.はモジュールの実行順序を表しています

required

  • モジュールの実行が成功しても、失敗しても同じモジュールタイプの中では最後まで処理を行います
  • 例えば、以下の表のNo.2では、パスワード認証に失敗しても、No.3のモジュールを実行します
    PAM _required.png

requisite

  • モジュール実行に失敗した場合、処理を終了します
  • 認証に失敗した段階で次の行を実行させたくない場合に設定します
  • 例えば、以下の表のNo.2でパスワード認証が失敗した場合、処理が終了します
    PAM _requisite.png

sufficient

  • モジュールの実行が成功した場合、前の行までrequiredが全て成功であれば、以降の行は実行されず認証(auth)に成功します
  • 実行に失敗した場合、次の行に進みます
  • 例えば、以下の表のNo.2でパスワード認証が失敗した場合、処理が終了します
    PAM _sufficient.png
  • また、No.2のパスワード認証が失敗しても、No.3以降の処理を実行します
    PAM _sufficient2.png

optional

  • モジュールの失敗に関わらず、結果に影響しません
  • 通常、ログの保存やデバッグ用に使われることが多い印象です
  • 例えば、No.2の処理が失敗した場合でもauthフェーズは成功となります
    PAM _optional.png

include

  • 他のPAM設定ファイルを読み込んで実行します
  • 呼び出し元と同じモジュールタイプのみ実行します
  • 通常、system-auth(システム全体の認証設定)、password-auth(パスワード認証設定)は認証の共通設定のため、呼ばれることが多いです
  • 例えば、以下の表ではNo.2でsample2を呼び出しており、No.3で認証を行います
    PAM _session.png
  • include元の設定ファイル(No.4)で認証が失敗した場合、同じフェーズであるNo.5は実行されますが、sessionフェーズは実行しません
    PAM _include2.png

substack

  • includeと同じ、PAM設定ファイルを読み込みます
  • includeと違う点として、呼び出し先(スタック)で処理が完結します
    • 例えば、includeでは呼び出し先にsufficientがあり、成功すれば呼び出し元でも即座にフェーズが完了します
    • しかし、substackの場合は呼び出し先のファイル内でsufficientが成功してもPAM設定ファイルでのみ sufficientの効果を発揮します
    • 呼び出し元には結果(成功/失敗)のみが返され、呼び出し元の処理は継続します
  • No.3の処理でsufficientが成功しておりますが、呼び出し元のsample1は処理を継続します
    PAM _substack.png

モジュールパス

モジュールパスには実行するPAMモジュールを指定します
多くのモジュールは引数(オプション)を指定することで動作をカスタマイズできます
ここでは、よく使われる主要なモジュールについて説明します

注意
PAMモジュールの説明は大部分を:robot:に頼って書いています
設定される際は、公式ドキュメント等ダブルチェックでお願いします:pray:


pam_echo.so

指定したメッセージを表示するモジュールです(デバッグ・テスト用)

モジュール別動作
モジュールタイプ 動作 説明
全て メッセージ表示 指定したメッセージを表示
引数
引数(オプション) 説明 使用例
file=/path 表示するファイルのパス auth optional pam_echo.so file=/etc/banner
(メッセージ) 直接指定するメッセージ(引数として記述) auth optional pam_echo.so test

pam_unix.so

通常のパスワード認証で利用するモジュールです

モジュール別動作
モジュールタイプ 動作 説明
auth パスワード認証 /etc/shadowのハッシュと入力パスワードを比較
account アカウント有効性チェック アカウント/パスワードの有効期限、ロック状態を確認
password パスワード変更 新しいパスワードをハッシュ化して/etc/shadowに保存
session ログイン/ログアウト記録 /var/log/wtmp、/var/run/utmpにログイン履歴を記録
引数
引数(オプション) 説明 使用例
nullok 空のパスワードを許可 auth sufficient pam_unix.so nullok
try_first_pass 前のモジュールで入力したパスワードを先に試す auth sufficient pam_unix.so try_first_pass
use_first_pass 前のモジュールで入力したパスワードのみ使用(再入力不可) auth sufficient pam_unix.so use_first_pass
sha512 SHA-512ハッシュアルゴリズムを使用(推奨) password sufficient pam_unix.so sha512
md5 MD5ハッシュアルゴリズムを使用(非推奨) password sufficient pam_unix.so md5
shadow /etc/shadowを使用 password sufficient pam_unix.so sha512 shadow
remember=N 過去N回のパスワードを記憶(再利用禁止) password sufficient pam_unix.so remember=5
use_authtok 前のモジュールで入力したパスワードを使用(二重入力回避) password sufficient pam_unix.so use_authtok
rounds=N ハッシュの反復回数(セキュリティ強化) password sufficient pam_unix.so rounds=65536

pam_faillock.so

ログイン失敗回数を制限し、アカウントをロックアウトするモジュールです

モジュール別動作
モジュールタイプ 動作 説明
auth ログイン失敗回数の記録・チェック preauth: ロック状態確認 / authfail: 失敗を記録 / authsucc: カウントリセット
account ロック状態の最終確認 ログイン失敗回数によるロックアウト状態をチェック
引数
引数(オプション) 説明 使用例
preauth 認証前のチェック(このオプションを付けて最初に呼び出す) auth required pam_faillock.so preauth
authfail 認証失敗時の処理(失敗を記録) auth [default=die] pam_faillock.so authfail
authsucc 認証成功時の処理(カウントリセット) auth required pam_faillock.so authsucc
deny=N N回失敗でロックアウト auth required pam_faillock.so deny=5
unlock_time=N N秒後に自動ロック解除(0=手動解除のみ) auth required pam_faillock.so unlock_time=900
fail_interval=N N秒以内の失敗をカウント auth required pam_faillock.so fail_interval=900
even_deny_root rootもロックアウト対象にする auth required pam_faillock.so even_deny_root
root_unlock_time=N rootの自動ロック解除時間(秒) auth required pam_faillock.so root_unlock_time=600
silent ロック状態をユーザーに通知しない auth required pam_faillock.so silent
audit 監査ログに記録 auth required pam_faillock.so audit
dir=/path ロック情報の保存ディレクトリ(デフォルト: /var/run/faillock) auth required pam_faillock.so dir=/var/log/faillock

pam_pwquality.so

パスワードの品質(複雑性)をチェックするモジュールです

モジュール別動作
モジュールタイプ 動作 説明
password パスワード品質チェック /etc/security/pwquality.confに基づいて複雑性要件をチェック(文字数、文字種、辞書等)
引数
引数(オプション) 説明 使用例
retry=N パスワード入力の再試行回数 password requisite pam_pwquality.so retry=3
minlen=N 最小パスワード長 password requisite pam_pwquality.so minlen=14
dcredit=N 数字の要件(N>0: ボーナス、N<0: 必須数) password requisite pam_pwquality.so dcredit=-1
ucredit=N 大文字の要件 password requisite pam_pwquality.so ucredit=-1
lcredit=N 小文字の要件 password requisite pam_pwquality.so lcredit=-1
ocredit=N 記号の要件 password requisite pam_pwquality.so ocredit=-1
minclass=N 最低N種類の文字種を使用 password requisite pam_pwquality.so minclass=4
maxrepeat=N 同じ文字の最大連続回数 password requisite pam_pwquality.so maxrepeat=3
maxsequence=N 連続文字列の最大長(abc, 123など) password requisite pam_pwquality.so maxsequence=3
maxclassrepeat=N 同じ文字種の最大連続回数 password requisite pam_pwquality.so maxclassrepeat=4
gecoscheck GECOSフィールド(名前等)との一致を禁止 password requisite pam_pwquality.so gecoscheck
dictcheck 辞書チェックを有効化 password requisite pam_pwquality.so dictcheck=1
usercheck ユーザー名との一致を禁止 password requisite pam_pwquality.so usercheck=1
enforce_for_root rootにも品質チェックを適用 password requisite pam_pwquality.so enforce_for_root
local_users_only ローカルユーザーのみチェック(LDAP/ADユーザーは除外) password requisite pam_pwquality.so local_users_only

pam_pwhistory.so

パスワード履歴を管理し、過去のパスワードの再利用を防ぐモジュールです

モジュール別動作
モジュールタイプ 動作 説明
password パスワード履歴チェック /etc/security/opasswdに記録された過去のパスワードとの重複をチェック
引数
引数(オプション) 説明 使用例
remember=N 過去N回のパスワードを記憶 password required pam_pwhistory.so remember=5
use_authtok 前のモジュールで入力したパスワードを使用 password required pam_pwhistory.so use_authtok
retry=N パスワード入力の再試行回数 password required pam_pwhistory.so retry=3
enforce_for_root rootにも履歴チェックを適用 password required pam_pwhistory.so enforce_for_root
file=/path 履歴ファイルのパス(デフォルト: /etc/security/opasswd) password required pam_pwhistory.so file=/var/log/opasswd

pam_limits.so

ユーザーのリソース制限を適用するモジュールです

モジュール別動作
モジュールタイプ 動作 説明
session リソース制限適用 /etc/security/limits.confに基づいてプロセス数、ファイル数、メモリ等のリソース制限を適用
引数
引数(オプション) 説明 使用例
conf=/path 設定ファイルのパス(デフォルト: /etc/security/limits.conf) session required pam_limits.so conf=/etc/security/limits.d/custom.conf
utmp_early utmpエントリを早期に作成 session required pam_limits.so utmp_early
noaudit 監査ログに記録しない session required pam_limits.so noaudit

pam_rootok.so

実行ユーザーがrootかどうかをチェックするモジュールです

モジュール別動作
モジュールタイプ 動作 説明
auth root特権チェック 実行ユーザーがroot(UID=0)なら即座に認証成功(パスワード不要)
引数
引数(オプション) 説明 使用例
debug デバッグ情報を記録 auth sufficient pam_rootok.so debug

pam_wheel.so

wheelグループのメンバーシップをチェックするモジュールです

モジュール別動作
モジュールタイプ 動作 説明
auth wheelグループチェック wheelグループのメンバーかチェック(root権限取得の制限に使用)
引数
引数(オプション) 説明 使用例
use_uid 実UID(real UID)を使用 auth required pam_wheel.so use_uid
trust wheelグループメンバーは無条件で認証成功 auth sufficient pam_wheel.so trust use_uid
deny wheelグループメンバーを拒否(逆の動作) auth required pam_wheel.so deny
group=name チェックするグループ名(デフォルト: wheel) auth required pam_wheel.so group=admin

pam_securetty.so

rootが安全な端末からログインしているかをチェックするモジュールです

モジュール別動作
モジュールタイプ 動作 説明
auth 安全な端末チェック rootが安全な端末からログインしているかチェック(/etc/securetty参照)
引数
引数(オプション) 説明 使用例
debug デバッグ情報を記録 auth required pam_securetty.so debug

pam_succeed_if.so

条件に基づいて成功・失敗を判定するモジュールです

モジュール別動作
モジュールタイプ 動作 説明
auth 条件付き成功 指定条件(UID、サービス名等)が真なら成功
account 条件付き成功 指定条件(UID、グループ、サービス名等)が真なら成功
session 条件付き成功 指定条件(UID、サービス名等)が真なら成功
引数
引数(オプション) 説明 使用例
uid N UIDの比較(<, >, =, <=, >=, !=) account sufficient pam_succeed_if.so uid < 1000
gid N GIDの比較 account sufficient pam_succeed_if.so gid = 0
user = name ユーザー名の一致 account sufficient pam_succeed_if.so user = root
user != name ユーザー名の不一致 account sufficient pam_succeed_if.so user != guest
user ingroup name グループメンバーシップ account sufficient pam_succeed_if.so user ingroup wheel
service = name サービス名の一致 session [success=1 default=ignore] pam_succeed_if.so service in crond
service != name サービス名の不一致 session sufficient pam_succeed_if.so service != sshd
quiet エラーメッセージを表示しない account sufficient pam_succeed_if.so uid = 0 quiet
use_uid 実UID(real UID)を使用(デフォルトは実効UID) account sufficient pam_succeed_if.so uid = 0 use_uid

pam_nologin.so

システムログインを制限するモジュールです

モジュール別動作
モジュールタイプ 動作 説明
account システムログイン制限 /etc/nologinまたは/run/nologinが存在するとroot以外のログインを拒否
引数
引数(オプション) 説明 使用例
file=/path nologinファイルのパス account required pam_nologin.so file=/etc/nologin
successok /etc/nologinが存在しない場合も成功 account required pam_nologin.so successok

pam_loginuid.so

監査システム用のログインUIDを設定するモジュールです

モジュール別動作
モジュールタイプ 動作 説明
session 監査UID設定 /proc/self/loginuidに監査システム用のログインUIDを設定(sudo後も元のユーザーを追跡可能)
引数
引数(オプション) 説明 使用例
require_auditd auditdが動作していない場合は失敗 session required pam_loginuid.so require_auditd

pam_lastlog.so

最終ログイン時刻を表示するモジュールです

モジュール別動作
モジュールタイプ 動作 説明
session 最終ログイン表示 /var/log/lastlogから最終ログイン時刻を読み込んで表示
引数
引数(オプション) 説明 使用例
silent 最終ログイン情報を表示しない session optional pam_lastlog.so silent
never lastlogファイルを更新しない session optional pam_lastlog.so never
showfailed 失敗したログイン試行を表示 session optional pam_lastlog.so showfailed
nowtmp wtmpファイルを更新しない session optional pam_lastlog.so nowtmp
noupdate lastlogファイルを更新しない(読み取りのみ) session optional pam_lastlog.so noupdate

pam_env.so

環境変数を設定するモジュールです

モジュール別動作
モジュールタイプ 動作 説明
auth 環境変数設定 /etc/security/pam_env.confから環境変数を読み込んで設定
session 環境変数設定 同上(sessionで使われることが多い)
引数
引数(オプション) 説明 使用例
conffile=/path 設定ファイルのパス(デフォルト: /etc/security/pam_env.conf) auth required pam_env.so conffile=/etc/security/pam_env.d/custom.conf
envfile=/path 環境変数ファイルのパス auth required pam_env.so envfile=/etc/environment
readenv=0/1 /etc/environmentを読み込むか(1=読み込む) auth required pam_env.so readenv=1
user_envfile=file ユーザーごとの環境変数ファイル auth required pam_env.so user_envfile=.pam_environment
user_readenv=0/1 ユーザー環境変数ファイルを読み込むか auth required pam_env.so user_readenv=0

pam_deny.so

常に失敗を返すモジュールです(フェイルセーフ用)

モジュール別動作
モジュールタイプ 動作 説明
auth 必ず拒否 常に失敗を返す(フェイルセーフ)
account 必ず拒否 常に失敗を返す(フェイルセーフ)
password 必ず拒否 常に失敗を返す(フェイルセーフ)
session 必ず拒否 常に失敗を返す(フェイルセーフ)
引数
引数(オプション) 説明 使用例
(なし) オプションなし auth required pam_deny.so

pam_permit.so

常に成功を返すモジュールです(テスト用、本番非推奨)

モジュール別動作
モジュールタイプ 動作 説明
全て 必ず許可 常に成功を返す(テスト用、本番非推奨)
引数
引数(オプション) 説明 使用例
(なし) オプションなし auth required pam_permit.so

詳細はmanコマンドで確認できます

$man pam_echo

PAM_echo.png

実践

CIS BenchMarksを基に、以下の設定を行ってみたいと思います
5.2.7 Ensure access to the su command is restricted (Automated)

こちらはsuコマンドを特定のグループのユーザに制限する設定です

初期設定では、相手ユーザのパスワードが分かれば、どのユーザでも切り替えることが出来てしまいます

また、Auditのコマンドを実行すると制限の設定はありませんでした (CIS BenchMarkの結果はNG設定)

Audit
[ec2-user@ip-10-0-138-50 ~]$ grep -Pi '^\h*auth\h+(?:required|requisite)\h+pam_wheel\.so\h+(?:[^#\n\r]+\h+)?((?!\2)(use_uid\b|group=\H+\b))\h+(?:[^#\n\r]+\h+)?((?!\1)(use_uid\b|group=\H+\b))(\h+.*)?$' /etc/pam.d/su
[ec2-user@ip-10-0-138-50 ~]$ 

検証環境

  • AWS
  • RHEL9.6

注意
PAMの設定によって、ログインできなくなる可能性があります
検証中は別のセッションでrootログインを維持しておくことを推奨します

設定

実際に設定していきます

最初に検証用のユーザとグループを作成しておきます

# ユーザとパスワードを設定します
userA: p@sswordA
userB: passwordB

[ec2-user@ip-10-0-138-50 ~]$ sudo useradd -s /bin/bash -m userA
passwd userA

[ec2-user@ip-10-0-138-50 ~]$ sudo useradd -s /bin/bash -m userB
passwd userB

# グループを作成します
[ec2-user@ip-10-0-138-50 ~]$ sudo groupadd sugroup

次にuserAからuserBに切り替えが出来てしまうことを確認します

[userA@ip-10-0-138-50 ~]$ su - userB
Password:
[userB@ip-10-0-138-50 ~]$    # userBに切り替えが出来てしまった

次にsuコマンドが実行できるユーザを制限したいと思います
/etc/pam.d/suを以下のように変更します

/etc/pam.d/su
<変更前>
10 :#auth           required        pam_wheel.so use_uid

<変更後>
10 :auth            required        pam_wheel.so use_uid group=sugroup 

設定ファイルの変更後にサービスの再起動などは不要です

次にuserAuserBに切り替えできないことを確認します

[userA@ip-10-0-138-50 ~]$ su - userB
Password:
su: Permission denied
[userA@ip-10-0-138-50 ~]$

/etc/pam.d/suで変更した設定が反映できていることを確認しました!

次はsugroupuserAを追加して、userBに切り替えられるかを確認します

# userAをsugroupに追加
[ec2-user@ip-10-0-138-50 ~]$ getent group sugroup
sugroup:x:1004:
[ec2-user@ip-10-0-138-50 ~]$ sudo usermod -aG sugroup userA
[ec2-user@ip-10-0-138-50 ~]$ getent group sugroup
sugroup:x:1004:userA

# userAがuserBにスイッチできることを確認
[userA@ip-10-0-138-50 ~]$ su - userB
Password:
Last login: Sat Dec 13 07:54:50 UTC 2025 on pts/0
Last failed login: Sat Dec 13 08:05:36 UTC 2025 on pts/0
There was 1 failed login attempt since the last successful login.
[userB@ip-10-0-138-50 ~]$

# userBからuserAにスイッチできないことを確認
[userB@ip-10-0-138-50 ~]$ su - userA
Password:
su: Permission denied
[userB@ip-10-0-138-50 ~]$

最後にAuditのコマンドを再実行し、表示を確認します

[ec2-user@ip-10-0-138-50 ~]$ grep -Pi '^\h*auth\h+(?:required|requisite)\h+pam_wheel\.so\h+(?:[^#\n\r]+\h+)?((?!\2)(use_uid\b|group=\H+\b))\h+(?:[^#\n\r]+\h+)?((?!\1)(use_uid\b|group=\H+\b))(\h+.*)?$' /etc/pam.d/su
auth            required        pam_wheel.so use_uid group=sugroup
[ec2-user@ip-10-0-138-50 ~]$

こちらも問題なさそうです!

まとめ

  • OSのセキュリティ周りの設計をした際にPAMの設定の理解が浅かったため、今回整理させていただきました
  • モジュールタイプとコントロールの動作を理解が個人的に難しかったため、誰かの助けになれば幸いです
  • 次はauthselectの設定方法について記事を書こうと思います

参考 :pray:

仲間を募集しています!

ARIではエンジニア・ITコンサルタント・PM職全方位で仲間を募集しております。
カジュアル面談、随時受付中です!
ご興味ある方はこちらをご覧ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?