推定構築時間: 0.4 SBU 推定必要ディスクスペース 11 MB |
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 は以下のパッケージに依存します: Bash, Binutils, Bison, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Sed.
login, getty と init プログラム(と、その他いくつか)は、誰がシステムにログインしたか、また、ログインしているかを記録するたくさんのログファイルを保存しています。 しかし、これらのプログラムが存在しないときにはログファイルが作られないので、これを記録をしたいなら自分でファイルを作成しなければいけません。 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 |
Note: 上述のすべての文字をタイプする時、十分に注意してください。すべてを手で入力するよりも、恐らくカットアンドペースする方が安全でしょう。
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 コマンドによるグループパスワードをリセットしたほうがよういでしょう。