Shadow-4.5

Shadow の概要

Shadow は LFS において既にインストールしています。 これを再インストールする必要があるのは、LFS の構築後に CrackLib または Linux-PAM をインストールした場合です。 CrackLibShadow をインストールすれば、強力なパスワード機能を利用できます。 Linux-PAMShadow をインストールすれば、loginsu において PAM モジュールを利用できます。

本パッケージは LFS-8.1 において正しくビルドでき動作することが確認されています。

パッケージ情報

Shadow の依存パッケージ

必須

Linux-PAM-1.3.0 または CrackLib-2.9.6

ユーザー情報: http://wiki.linuxfromscratch.org/blfs/wiki/shadow

Shadow のインストール

[重要項目]

重要項目

以下に説明するビルド手順は Linux-PAM がインストールされていることを前提としています。 (CrackLib はインストールしているかどうかはどちらでも変わりません。) Shadow を再インストールすることによって Linux-PAM の機能を活用するものです。

Shadow を再インストールするにあたって、CrackLib による強力なパスワード機能を導入しようとする場合で、かつ Linux-PAM の機能は利用しないことにする場合は、configure スクリプトのパラメーターとして --with-libcrack を指定してください。 そしてさらに以下のコマンドも実行してください。

sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs

以下のコマンドを実行して Shadow を再インストールします。

sed -i 's/groups$(EXEEXT) //' src/Makefile.in &&

find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \; &&
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; &&
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \; &&

sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \
       -e 's@/var/spool/mail@/var/mail@' etc/login.defs &&

sed -i 's/1000/999/' etc/useradd                           &&

./configure --sysconfdir=/etc --with-group-name-max-length=32 &&
make

このパッケージにテストスイートはありません。

root ユーザーになって以下を実行します。

make install &&
mv -v /usr/bin/passwd /bin

コマンド説明

sed -i 's/groups$(EXEEXT) //' src/Makefile.in: このコマンドは groups プログラムをインストールしないようにします。 groups プログラムは LFS 構築時の Coreutils パッケージが提供するものの方が適切であるためです。

find man -name Makefile.in -exec ... {} \;: このコマンドは groups の man ページをインストールしないようにします。 LFS 構築時に Coreutils パッケージによってインストールされた man ページを置き換えないようにするものです。

sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' -e 's@/var/spool/mail@/var/mail@' etc/login.defs: デフォルトで採用されている 'DES' メソッドではなく、よりセキュアな 'SHA512' メソッドを使ったハッシュパスワードをインストールするように変更します。 これによりパスワードにて8文字以上の設定が可能となります。 またユーザーのメールボックスの収容ディレクトリとして、古くなった /var/spool/mail ではなく /var/mail を用いるものとします。

sed -i 's/1000/999/' etc/useradd: Make a minor change to make the default useradd consistent with the LFS groups file.

--with-group-name-max-length=32: The maximum user name is 32 characters. Make the maximum group name the same.

mv -v /usr/bin/passwd /bin: passwd プログラムは /usr ファイルシステムがマウントされていない時にも必要となります。 このためこのプログラムをルートパーティションに移動します。

Shadow の設定

Shadowuseradd に対する標準設定は、利用するにあたっては適当なものではないかもしれません。 useradd に対するデフォルト設定の中で、新たなユーザーが追加された時に mailbox ファイルを都度生成するものがあります。 useradd コマンドは、そのファイルに対して mail グループを所有者とし パーミッションを 0660 に設定します。 useradd コマンドによって mailbox ファイルを生成しないようにするには、root ユーザーになって以下のコマンドを実行します。

sed -i 's/yes/no/' /etc/default/useradd

Shadow とともに Linux-PAM を動作させるための設定

[注記]

注記

本節のこれ以降の説明は、ShadowLinux-PAM とともに動作させるために必要な設定情報を示すものです。 Linux-PAM をインストールしていない場合や CrackLib ライブラリを用いてより協力なパスワードを実現しようとする場合は、以降の設定は不要です。

設定ファイル

/etc/pam.d/* を用いるか、別の方法として /etc/pam.conf, /etc/login.defs, /etc/security/*

設定情報

Linux-PAM を用いたシステム設定作業は複雑です。 以下に示す情報は、Linux-PAM とともに Shadow のログイン機能、パスワード機能が有効に作動するための基本的な設定方法を示すものです。 より詳細な設定方法については Linux-PAM-1.3.0 に示されている情報およびリンクを参照してください。 Shadow, Linux-PAM, CrackLib による機能強化に関しては、以下のリンクを参照してください。

/etc/login.defs の設定

最近の login プログラムは数多くの機能を有していますが、Linux-PAM モジュールが取り扱うものも多くあります。 以下の sed コマンドは、/etc/login.defs 内の特定の行をコメント化して login がそういった機能を実行しないようにします。 (元の設定内容を保存しておくために、バックアップとして /etc/login.defs.orig を生成しています。) root ユーザーになって以下のコマンドを実行してください。

install -v -m644 /etc/login.defs /etc/login.defs.orig &&
for FUNCTION in FAIL_DELAY               \
                FAILLOG_ENAB             \
                LASTLOG_ENAB             \
                MAIL_CHECK_ENAB          \
                OBSCURE_CHECKS_ENAB      \
                PORTTIME_CHECKS_ENAB     \
                QUOTAS_ENAB              \
                CONSOLE MOTD_FILE        \
                FTMP_FILE NOLOGINS_FILE  \
                ENV_HZ PASS_MIN_LEN      \
                SU_WHEEL_ONLY            \
                CRACKLIB_DICTPATH        \
                PASS_CHANGE_TRIES        \
                PASS_ALWAYS_WARN         \
                CHFN_AUTH ENCRYPT_METHOD \
                ENVIRON_FILE
do
    sed -i "s/^${FUNCTION}/# &/" /etc/login.defs
done
/etc/pam.d/ ファイル の設定

Linux-PAM の手順にて説明しているように、Linux-PAM を設定する方法には2通りあります。 以下に示すコマンドでは、ディレクトリベースでの設定を行うことを前提とします。 この方法では各プログラムに対する設定ファイルは、各プログラムごとに用意します。 1つの設定ファイル /etc/pam.conf に設定を行うこともできます。 その場合は以下に示す設定内容を利用し、各行の先頭項目にプログラム名を追加してください。

/etc/pam.d/ ディレクトリにある Linux-PAM 設定ファイルを置き換えます。 (あるいは /etc/pam.conf ファイルに内容を追記します。) root ユーザーになって、以下のコマンドを実行してください。

'login'
cat > /etc/pam.d/login << "EOF"
# Begin /etc/pam.d/login

# Set failure delay before next prompt to 3 seconds
auth      optional    pam_faildelay.so  delay=3000000

# Check to make sure that the user is allowed to login
auth      requisite   pam_nologin.so

# Check to make sure that root is allowed to login
# Disabled by default. You will need to create /etc/securetty
# file for this module to function. See man 5 securetty.
#auth      required    pam_securetty.so

# Additional group memberships - disabled by default
#auth      optional    pam_group.so

# include the default auth settings
auth      include     system-auth

# check access for the user
account   required    pam_access.so

# include the default account settings
account   include     system-account

# Set default environment variables for the user
session   required    pam_env.so

# Set resource limits for the user
session   required    pam_limits.so

# Display date of last login - Disabled by default
#session   optional    pam_lastlog.so

# Display the message of the day - Disabled by default
#session   optional    pam_motd.so

# Check user's mail - Disabled by default
#session   optional    pam_mail.so      standard quiet

# include the default session and password settings
session   include     system-session
password  include     system-password

# End /etc/pam.d/login
EOF
'passwd'
cat > /etc/pam.d/passwd << "EOF"
# Begin /etc/pam.d/passwd

password  include     system-password

# End /etc/pam.d/passwd
EOF
'su'
cat > /etc/pam.d/su << "EOF"
# Begin /etc/pam.d/su

# always allow root
auth      sufficient  pam_rootok.so
auth      include     system-auth

# include the default account settings
account   include     system-account

# Set default environment variables for the service user
session   required    pam_env.so

# include system session defaults
session   include     system-session

# End /etc/pam.d/su
EOF
'chage'
cat > /etc/pam.d/chage << "EOF"
# Begin /etc/pam.d/chage

# always allow root
auth      sufficient  pam_rootok.so

# include system defaults for auth account and session
auth      include     system-auth
account   include     system-account
session   include     system-session

# Always permit for authentication updates
password  required    pam_permit.so

# End /etc/pam.d/chage
EOF
その他の一般的なプログラム
for PROGRAM in chfn chgpasswd chpasswd chsh groupadd groupdel \
               groupmems groupmod newusers useradd userdel usermod
do
    install -v -m644 /etc/pam.d/chage /etc/pam.d/${PROGRAM}
    sed -i "s/chage/$PROGRAM/" /etc/pam.d/${PROGRAM}
done
[警告]

警告

At this point, you should do a simple test to see if Shadow is working as expected. Open another terminal and log in as a user, then su to root. If you do not see any errors, then all is well and you should proceed with the rest of the configuration. If you did receive errors, stop now and double check the above configuration files manually. You can also run the test suite from the Linux-PAM package to assist you in determining the problem. If you cannot find and fix the error, you should recompile Shadow adding the --without-libpam switch to the configure command in the above instructions (also move the /etc/login.defs.orig backup file to /etc/login.defs). If you fail to do this and the errors remain, you will be unable to log into your system.

ログインアクセス の設定

Instead of using the /etc/login.access file for controlling access to the system, Linux-PAM uses the pam_access.so module along with the /etc/security/access.conf file. Rename the /etc/login.access file using the following command:

[ -f /etc/login.access ] && mv -v /etc/login.access{,.NOUSE}
Configuring Resource Limits

Instead of using the /etc/limits file for limiting usage of system resources, Linux-PAM uses the pam_limits.so module along with the /etc/security/limits.conf file. Rename the /etc/limits file using the following command:

[ -f /etc/limits ] && mv -v /etc/limits{,.NOUSE}
[注意]

注意

Be sure to test the login capabilities of the system before logging out. Errors in the configuration can cause a permanent lockout requiring a boot from an external source to correct the problem.

パッケージ構成

インストールされるファイルの一覧および概略説明については http://www.linuxfromscratch.org/lfs/view/development/chapter06/shadow.html#contents-shadow (日本語訳は http://lfsbookja.osdn.jp/svn-ja/chapter06/shadow.html#contents-shadow ) を参照してください。

最終更新日: 2017-08-17 13:41:37 +0900