Amazon Linux 1のOSを再起動すると特にsshd関連の設定変更をしたわけでもないのに/etc/pam.d/sshdが更新される。

$ uname -r
4.14.285-147.501.amzn1.x86_64

これはsshdの起動スクリプト(/etc/rc3.d/S55sshd)に以下のような処理が書かれているためである。

⦿ 80行目でhandle_pam_broken_kernel()を呼び出し、同関数の中で「すでに/etc/pam.d/sshdが存在していたらsed -i にて/etc/pam.d/sshd自身を更新する」

:
 49 handle_pam_broken_kernel()
 50 {
 51     if [ -f /etc/pam.d/sshd ] ; then
 52         if [[ "$(uname -r)" =~ 3\.10\.34-3[78]\.137\.amzn1 ]] ; then
 53             # problematic kernel, disable pam_loginuid.so
 54             sed -r -i -e 's/^(session.*pam_loginuid.*$)/##sshd_autodisabled##\1/' /etc/pam.d/sshd
 55         else
 56             # should be a valid kernel, undo auto-disablement
 57             sed -r -i -e 's/^##sshd_autodisabled##//' /etc/pam.d/sshd
 58         fi
 59     fi
 60 }
:
 72 start()
 73 {
 74         [ -x $SSHD ] || exit 5
 75         [ -f /etc/ssh/sshd_config ] || exit 6
 76         # Create keys if necessary
 77         /usr/sbin/sshd-keygen
 78 
 79         # workaround a broken kernel build
 80         handle_pam_broken_kernel
 81 
 82         echo -n $"Starting $prog: "
 83         $SSHD $OPTIONS && success || failure
 84         RETVAL=$?
 85         [ $RETVAL -eq 0 ] && touch $lockfile
 86         echo
 87         return $RETVAL
 88 }
:

なおAmazon Linux 2においてはこの挙動は起こらない。

元記事はこちら

Amazon Linux 1のOSを再起動すると/etc/pam.d/sshdが更新される理由

著者:木檜 和明