パッケージ構成
インストールされるファイルの一覧および概略説明については ../../../../lfs/view/systemd/chapter08/shadow.html#contents-shadow (日本語訳は http://lfsbookja.osdn.jp/git-sysdja/chapter08/shadow.html#contents-shadow) を参照してください。
Shadow は LFS において既にインストールしています。 これを再インストールする必要があるのは、LFS の構築後に CrackLib または Linux-PAM をインストールした場合です。 CrackLib と Shadow をインストールすれば、強力なパスワード機能を利用できます。 Linux-PAM と Shadow をインストールすれば、login や su において PAM モジュールを利用できます。
LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。
ダウンロード (HTTP): https://github.com/shadow-maint/shadow/releases/download/4.14.2/shadow-4.14.2.tar.xz
ダウンロード MD5 sum: effc1aa17590305647413125b966f1dd
ダウンロードサイズ: 1.7 MB
必要ディスク容量: 38 MB
概算ビルド時間: 0.2 SBU
Linux-PAM-1.5.3 または CrackLib-2.9.11
以下に説明するビルド手順は Linux-PAM がインストールされていることを前提としています。 Shadow を再インストールすることによって Linux-PAM の機能を活用するものです。
Shadow
を再インストールするにあたって、CrackLib
による強力なパスワード機能を導入しようとする場合で、かつ Linux-PAM の機能は利用しないことにする場合は、configure スクリプトのパラメーターとして
--with-libcrack
を指定してください。 そしてさらに以下のコマンドも実行してください。
sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' etc/login.defs
If reinstalling shadow for a version update, be sure to
reaccomplish the Linux-PAM configuration below. The installation
of shadow overwrites many of the files in /etc/pam.d/
.
以下のコマンドを実行して 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 -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD YESCRYPT@' \ -e 's@/var/spool/mail@/var/mail@' \ -e '/PATH=/{s@/sbin:@@;s@/bin:@@}' \ -i etc/login.defs && ./configure --sysconfdir=/etc \ --disable-static \ --without-libbsd \ --with-{b,yes}crypt && make
このパッケージにテストスイートはありません。
root
ユーザーになって以下を実行します。
make exec_prefix=/usr pamddir= install
The man pages were installed in LFS, but if reinstallation is
desired, run (as the root
user):
make -C man install-man
sed -i 's/groups$(EXEEXT) //' src/Makefile.in: このコマンドは groups プログラムをインストールしないようにします。 groups プログラムは LFS 構築時の Coreutils パッケージが提供するものの方が適切であるためです。
find man -name Makefile.in -exec ... {} \;: 1 つめのコマンドは groups の man ページをインストールしないようにします。 LFS 構築時に Coreutils パッケージによってインストールされた man ページを置き換えないようにするものです。 The two other commands prevent installation of manual pages that are already installed by Man-pages in LFS.
sed -e 's@#ENCRYPT_METHOD
DES@ENCRYPT_METHOD YESCRYPT@' -e 's@/var/spool/mail@/var/mail@' -e
'/PATH=/{s@/sbin:@@;s@/bin:@@}' -i etc/login.defs:
Instead of using the default 'DES' method, this command modifies
the installation to use the much more secure 'YESCRYPT' method of
hashing passwords, which also allows passwords longer than eight
characters. The command also changes the obsolete /var/spool/mail
location for user mailboxes that
Shadow uses by default to the
/var/mail
location. It also changes
the default path to be consistent with that set in LFS.
--without-libbsd
: Prevents
looking for the readpassphrase function, which
can be found only in libbsd
, which we
do not have in BLFS. An internal implementation of readpassphrase is used instead.
pamddir=
: Prevents
installation of the shipped PAM configuration files into
/etc/pam.d
. The shipped configuration
does not work with the BLFS PAM configuration and we will create
these configuration files explicitly.
本節のこれ以降の説明は、Shadow を Linux-PAM とともに動作させるために必要な設定情報を示すものです。 Linux-PAM をインストールしていない場合や CrackLib ライブラリを用いてより協力なパスワードを実現しようとする場合は、以降の設定は不要です。
Linux-PAM を用いたシステム設定作業は複雑です。 以下に示す情報は、Linux-PAM とともに Shadow のログイン機能、パスワード機能が有効に作動するための基本的な設定方法を示すものです。 より詳細な設定方法については Linux-PAM-1.5.3 に示されている情報およびリンクを参照してください。 Shadow, Linux-PAM, libpwquality による機能強化に関しては、以下のリンクを参照してください。
最近の 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
Linux-PAM
の手順にて説明しているように、Linux-PAM
を設定する方法には2通りあります。 以下に示すコマンドでは、ディレクトリベースでの設定を行うことを前提とします。
この方法では各プログラムに対する設定ファイルは、各プログラムごとに用意します。 1つの設定ファイル /etc/pam.conf
に設定を行うこともできます。
その場合は以下に示す設定内容を利用し、各行の先頭項目にプログラム名を追加してください。
/etc/pam.d/
ディレクトリに Linux-PAM 設定ファイルを生成します。 (あるいは /etc/pam.conf
ファイルに内容を追記します。) root
ユーザーになって、以下のコマンドを実行してください。
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 system auth settings
auth include system-auth
# check access for the user
account required pam_access.so
# include system 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 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 system session and password settings
session include system-session
password include system-password
# End /etc/pam.d/login
EOF
cat > /etc/pam.d/passwd << "EOF"
# Begin /etc/pam.d/passwd
password include system-password
# End /etc/pam.d/passwd
EOF
cat > /etc/pam.d/su << "EOF"
# Begin /etc/pam.d/su
# always allow root
auth sufficient pam_rootok.so
# Allow users in the wheel group to execute su without a password
# disabled by default
#auth sufficient pam_wheel.so trust use_uid
# include system auth settings
auth include system-auth
# limit su to users in the wheel group
# disabled by default
#auth required pam_wheel.so use_uid
# include system account settings
account include system-account
# Set default environment variables for the service user
session required pam_env.so
# include system session settings
session include system-session
# End /etc/pam.d/su
EOF
cat > /etc/pam.d/chpasswd << "EOF"
# Begin /etc/pam.d/chpasswd
# always allow root
auth sufficient pam_rootok.so
# include system auth and account settings
auth include system-auth
account include system-account
password include system-password
# End /etc/pam.d/chpasswd
EOF
sed -e s/chpasswd/newusers/ /etc/pam.d/chpasswd >/etc/pam.d/newusers
cat > /etc/pam.d/chage << "EOF"
# Begin /etc/pam.d/chage
# always allow root
auth sufficient pam_rootok.so
# include system auth and account settings
auth include system-auth
account include system-account
# End /etc/pam.d/chage
EOF
for PROGRAM in chfn chgpasswd chsh groupadd groupdel \ groupmems groupmod 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 root
, and then run login and login as another
user. 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. Any error is the sign of an
error in the above procedure. 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:
if [ -f /etc/login.access ]; then mv -v /etc/login.access{,.NOUSE}; fi
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:
if [ -f /etc/limits ]; then mv -v /etc/limits{,.NOUSE}; fi
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.
インストールされるファイルの一覧および概略説明については ../../../../lfs/view/systemd/chapter08/shadow.html#contents-shadow (日本語訳は http://lfsbookja.osdn.jp/git-sysdja/chapter08/shadow.html#contents-shadow) を参照してください。