Shadow-4.0.3 のインストール

推定構築時間:           0.4 SBU
推定必要ディスクスペース  11 MB

Shadow の内容

Shadow パッケージはシステムパスワードのセキュリティを強化するために作られました。

インストールされるプログラム: chage, chfn, chpasswd, chsh, dpasswd, expiry, faillog, gpasswd, groupadd, groupdel, groupmod, groups, grpck, grpconv, grpunconv, lastlog, login, logoutd, mkpasswd, newgrp, newusers, passwd, pwck, pwconv, pwunconv, sg (link to newgrp), useradd, userdel, usermod, vigr (vipw へのリンク) 及び vipw

Shadow インストール依存性

Shadow は以下のパッケージに依存します: Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Sed.

Shadow のインストール

login, gettyinit プログラム(と、その他いくつか)は、誰がシステムにログインしたか、また、ログインしているかを記録するたくさんのログファイルを保存しています。 しかし、これらのプログラムが存在しないときにはログファイルが作られないので、これを記録をしたいなら自分でファイルを作成しなければいけません。 Shadow パッケージはこれらのファイルを適切な場所で見つけなければいけないので、今それらを適切な許可属性で作成します。

touch /var/run/utmp /var/log/{btmp,lastlog,wtmp}
chmod 644 /var/run/utmp /var/log/{btmp,lastlog,wtmp}

/var/run/utmp ファイルは現在ログインしているユーザーをリストし、/var/log/wtmp ファイルは誰がいつログインしたかをリストします。 /var/log/lastlog ファイルはそれぞれのユーザーが最後にいつログインしたかを教え、/var/log/btmp は失敗したログインをリストします。

Shadow は passwd バイナリへのパスをバイナリ自身の中に組み込みますが、これを間違った方法で行ないます。 passwd バイナリが Shadow のインストールの前に存在しないと、パッケージはバイナリが /bin/passwd に置かれることになるという不正確な仮定をし、しかし /usr/bin/passwd へインストールします。 これは /bin/passwd が見つからないというエラーを引き起こします。 このバグに対処し、正しく組み込むためにダミーの passwd ファイルを作ります。

touch /usr/bin/passwd

現在の Shadow スイートは newgrp コマンドが失敗する原因となる問題を持っています。以下のパッチ( Shadow の CVS コードの中にも現れます)でこの問題を修正します。

patch -Np1 -i ../shadow-4.0.3-newgrp-fix.patch

それではコンパイルのために Shadow を準備します。

./configure --prefix=/usr --libdir=/usr/lib --enable-shared

パッケージをコンパイルします。

make

それからインストールします。

make install

Shadow はシステムに対する認証環境の設定のために二つのファイルを使います。これら二つの設定ファイルをインストールしましょう。

cp etc/{limits,login.access} /etc

パスワード体系で、デフォルトの "crypt" 体系よりも理論的に安全な MD5 パスワードを有効にして、8 文字よりも長いパスワードが使えるように変更します。 また、ユーザーのメールボックスとして古い場所の /var/spool/mail を現在の /var/mail に変更する必要があります。 目的の場所にコピーすると同時に、適切な設定ファイルを変更することでこれを行います。

sed -e 's%/var/spool/mail%/var/mail%' \
    -e 's%#MD5_CRYPT_ENAB.no%MD5_CRYPT_ENAB yes%' \
    etc/login.defs.linux > /etc/login.defs

vipw の man page によれば、vigr プログラムもまた存在しなければいけません。インストールプロシージャはこのプログラムを作らないので、手動でシンボリックリンクを作ります。

ln -s vipw /usr/sbin/vigr

/bin/vipw シンボリックリンは余計で、かつ存在しないファイルを指定しているので、削除しましょう。

rm /bin/vipw

それでは sg プログラムをその正しい場所へ移動します。

mv /bin/sg /usr/bin

そして Shadow の動的ライブラリをより適切な場所へ移動します。

mv /usr/lib/lib{shadow,misc}.so.0* /lib

いくつかのパッケージは今移動されたライブラリが /usr/lib の中にあると思うので、以下のシンボリックリンクを作ります。

ln -sf ../../lib/libshadow.so.0 /usr/lib/libshadow.so
ln -sf ../../lib/libmisc.so.0 /usr/lib/libmisc.so

Coreutils がすでに groups プログラムを /usr/bin へインストールしています。望むなら、Shadow によってインストールされたものを削除できます。

rm /bin/groups

シャドウパスワードを設定する

このパッケージはユーザーのパスワードを変更し、ユーザーやグループを追加、削除するようなユーティリティです。'パスワードのシャドウ化' が何を意味するのかを説明するつもりはありません。 詳細な説明は解凍した Shadow ソースツリーの中にある doc/HOWTO ファイルの中にあります。 Shadow サポートを使うことを決めたら、憶えておくべきことが一つあります。 パスワードを確かめる必要のあるプログラム(たとえば xdm, ftp デーモン, pop3 デーモン)は、シャドウ化されたパスワードでうまく動くように、'シャドウ準拠' である必要があります。

シャドウ化されたパスワードを有効にするために、以下のコマンドを実行します。

/usr/sbin/pwconv

そしてシャドウ化されたグループパスワードを有効にするため、以下のコマンドを実行します。

/usr/sbin/grpconv

通常の環境では、まだどんなパスワードも作っていません。 しかし、シャドウ化を有効にするためにこの項に戻って来ているなら、現在のあらゆる passwd コマンドによるユーザーパスワードと、 あらゆる gpasswd コマンドによるグループパスワードをリセットしたほうがよういでしょう。