Shadow Suite にはパスワードにアクセスするプログラムほとんどの 代替品を含んでいますが、ほとんどのシステムでは他にもいくつかのプログラ ムが必要となります。
Debian パッケージでは(そうでない場合でも構いませんが)、 以下の場所からシステムの再構築に必要なプログラムの Debian パッケージの のソースを入手することができます。 ftp://ftp.debian.org/debian/stable/source/
この節の残りはadduser
, wu_ftpd
, ftpd
,
pop3d
, xlock
, xdm
and sudo
が
Shadow Suite をサポートできるようにするため行うアップグレードについて説
明します。
他のプログラムも shadow サポートできるようにする方法は Cプログラムを Shadow Suite に対応させる方法 の章を参 照して下さい。(実際に shadow ファイルにアクセスするためには root に SUID するか shadow に SGID する必要があります。)
Slackware パッケージ(おそらく他のパッケージにも)には
/sbin/adduser
という対話的に新しいユーザを追加するプログラム
が含まれています。このプログラムの shadow 対応版は
ftp://sunsite.unc.edu/pub/Linux/ system/Admin/accounts/adduser.shadow-1.4.tar.gz
から入手できます。
筆者は slackware のadduser
の代りにShadow Suiteに含ま
れているプログラム(useradd
, usermod
,
userdel
)を使うことを勧めます。使い方は新たに覚えなければなり
ませんが、それだけの価値はあります。より細かい制御ができますし、
(adduser
では行わない) /etc/passwd
や
/etc/shadow
のロッキングもしてくれるからです。
詳しくは Shadow Suite を使ってみる の章を見てください。
それでも adduser を使いたいならば、以下のような手順でインストールしてください:
tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser
make clean
make adduser
chmod 700 adduser
cp adduser /sbin
大部分の Linux システムでは wu_ftpd
サーバを使っています。も
し、あなたの使っているパッケージに Shadow Suiteがインストール
されていない場合、wu_ftpd
も shadow をサポートするようにはなっ
ていないでしょう。wu_ftpd は inetd/tcpd
からrootのプ
ロセスとして起動されます。もし、あなたが古い wu_ftpd
デーモン
を走らせているなら、バージョンを上げてください。古いバージョンは
rootのアカウントを認めてしまうバグを持っていることで知られて
いるからです。(詳しくは
Linux security ホームページ)
を参照して下さい。 )
幸い、shadow を有効にするためにはソースコードを入手して再コンパイルす るだけです。
ELF システムでない場合には、wu_ftp
サーバは Sunsite に
wu-ftp-2.4-fixed.tar.gz
の名前で置いているものが利用できます。
ファイルを入手したら、このファイルを /usr/src
に置いてから、
以下のような操作を行ってください:
cd /usr/src
tar -xzvf wu-ftpd-2.4-fixed.tar.gz
cd wu-ftpd-2.4-fixed
cp ./src/config/config.lnx.shadow ./src/config/config.lnx
次に ./src/makefiles/Makefile.lnx
ファイルの以下の部分を:
LIBES = -lbsd -support
次のように変更します:
LIBES = -lbsd -support -lshadow
そして、実行ファイル生成スクリプトの実行及びインストールを行います:
cd /usr/src/wu-ftpd-2.4-fixed
/usr/src/wu-ftp-2.4.fixed/build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
これは、Linux 用 shadow の設定ファイルを使ってサーバのコンパイル及びイ ンストールを行います。
筆者の Slackware 2.3 システムでは実行ファイル生成スクリプトを実行する 前に以下の操作を行う必要がありました:
cd /usr/include/netinet
ln -s in_systm.h in_system.h
cd -
ELF システム上ではコンパイルがうまくいかないことが報告されていますが、 次のリリースのβ版を使えばうまくいくようです。 これは、 wu-ftp-2.4.2-beta-10.tar.gz として入手できます。
ファイルを入手したら、これを /usr/src
に置いて、以下の操作を
行ってください:
cd /usr/src
tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz
cd wu-ftpd-beta-9
cd ./src/config
次に config.lnx
ファイルの以下の部分を
#undef SHADOW.PASSWORD
次のように変更します。
#define SHADOW.PASSWORD
それから、
cd ../Makefiles
を行い、カレントディレクトリを変更してから Makefile.lnx
ファイルの
LIBES = -lsupport -lbsd # -lshadow
の部分を次のように変更します。
LIBES = -lsupport -lbsd -lshadow
そして実行ファイル生成とインストールを行います:
cd ..
build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
/etc/inetd.conf
ファイルに wu_ftpd 本体の置き場所が書かれてい
るかどうかを確認するのを忘れないようにしましょう。パッケージによっては
サーバデーモンの置場所が違い、wu_ftpd が別の名前になっているものもある
という報告がありました。
訳注: Slackware 3.1 では shadow パスワード化を行った場合、wu-ftpd のコンパイ ルに失敗する場合があります。 下記のようなエラーが出る場合には src/makefiles/Makefile.lnx の CFLAGS に "-DDIRENT_ILLEGAL_ACCESS" を加えてみてください。 (この情報は高石@広島電機大さんより頂きました。)
gcc -O2 -fomit-frame-pointer -I.. -I../support -I/usr/include/bsd -L../suppors -c glob.c -o glob.o glob.c: In function `matchdir': glob.c:284: dereferencing pointer to incomplete type make: *** [glob.o] Error 1
標準の ftpd サーバを使っている場合には wu_ftpd
サーバにアップ
グレードすることを勧めます。先程述べたバグを除けば、より安全だとされて
いるからです。
どうしても標準のものを使いたい場合や、NIS をサポートする必要がある場合 には Sunsite から ftpd-shadow-nis.tgz を入手して下さい。
もし、POP3(the third Post Office Protocol) をサポートする必要
がある場合には pop3d
を再コンパイルする必要があります。
pop3d
は inet/tcpd
からroot
権限で実行されま
す。
Sunsite から2つの異なるバージョンのものを入手できます: pop3d-1.00.4.linux.shadow.tar.gz と pop3d+shadow+elf.tar.gz です。
どちらの場合も問題なくインストールできるでしょう。
Shadow Suite をインストールし、X Window システム上で
xlock
をアップグレードしないままで実行した場合には、
CNTL-ALT-Fx
で別のコンソールに切替えてログインし
xlock
のプロセスを殺す(あるいは CNTL-ALT-BS
で X サー
バを殺す)以外にどうしようもない状態になってしまいます。幸いなことに、
xlock
をアップグレードするのはとても簡単です。
もし、XFree86 のバージョン 3.x.x を利用している場合には、
xlockmore
(lock 機能に加えてスクリーンセーバ機能を持つ)を使っ
ていると思います。このパッケージは再コンパイルすることで
shadow をサポートできます。古い xlock
を使っている場
合には xlockmore
にアップグレードすることを勧めます。
xlockmore-3.5.tgz
は以下の場所で入手できます:
ftp://sunsite.unc.edu/pub/Linux/X11/xutils/screensavers/xlockmore-3.7.tgz
インストールは基本的には以下のような操作で行います:
xlockmore-3.5.tgz
を入手し、/usr/src
で展開します:
tar -xzvf xlockmore-3.7.tgz
/usr/X11R6/lib/X11/config/linux.cf
を編集し、
#define HasShadowPasswd NO
の行を
#define HasShadowPasswd YES
のように変更します。
そして、実行ファイルを作成します:
cd /usr/src/xlockmore
xmkmf
make depend
make
ファイルを移動し、オーナとパーミッションを設定します:
cp xlock /usr/X11R6/bin/
cp XLock /var/X11R6/lib/app-defaults/
chown root.shadow /usr/X11R6/bin/xlock
chmod 2755 /usr/X11R6/bin/xlock
chown root.shadow /etc/shadow
chmod 640 /etc/shadow
これで、うまく動く xlock ができたはずです。
xdm
は X Window のログイン画面を表示するプログラムです。特定
の run level に移行したときにxdm
が実行されるシステムもあります。
(/etc/inittab
参照)
Shadow Suiteのインストールを行なうと、xdm
も更新しな
ければなりません。しかしxdm
のアップグレードは簡単なので問題あ
りません。
xdm.tar.gz
は以下のURLで入手できます:
ftp://sunsite.unc.edu/pub/Linux/X11/xutils/xdm.tar.gz
xdm.tar.gz
ファイルを入手して、/usr/src
に置いてから
以下のようにして展開します:
tar -xzvf xdm.tar.gz
/usr/X11R6/lib/X11/config/linux.cf
内の
#define HasShadowPasswd NO
の部分を
#define HasShadowPasswd YES
のように変更します。
実行ファイルを作ります:
cd /usr/src/xdm
xmkmf
make depend
make
ファイルをインストールします:
cp xdm /usr/X11R6/bin/
xdm
は root 権限で動作するのでファイルのパーミッショ
ンを変える必要はありません。
sudo
プログラムはシステム管理者が通常root権限を必要とするプロ
グラムをユーザに実行させるために用います。管理者がrootのアカウントへの
アクセスを制限したままで、ユーザにディスクのマウント等の操作を許可する
ときに便利なプログラムです。
sudo
は実行された時にユーザのパスワード認証を行うので、パスワー
ドファイルを読めなければなりません。sudo
は最初からrootに
SUID されて動作するので、/etc/shadow
へのアクセスについては問
題ありません。
Shadow Suit 対応の sudo
は以下のURLで入手できます:
ftp://sunsite.unc.edu/pub/Linux/system/Admin/sudo-1.2-shadow.tgz
警告: sudo
をインストールする際に
/etc/sudoers
ファイルは標準のものと置き換えられてしまいます。
ですから、標準の状態から変更がある場合にはバックアップを取っておく必要
があります。(Makefile を変更して標準のファイルを/etc
にコピー
する部分の処理を削除するという方法もあります。)
このパッケージは既に shadow 対応の設定がなされているので、パッケージを 再コンパイルするだけで利用できます(ソースは /usr/src に展開して下さい):
cd /usr/src
tar -xzvf sudo-1.2-shadow.tgz
cd sudo-1.2-shadow
make all
make install
imapd
は pop3d
のようなメールサーバです。
imapd
は pine E-mail パッケージに付属しています。パッ
ケージに付属するドキュメントには Linux システムに対する標準設定で
shadow をサポートしていると書かれています。しかし、これは正しくない記
述です。さらに、このパッケージでは実行ファイル生成スクリプトと
Makefile の組合せが必要で、コンパイル時にlibshadow.a
を加える
ことがが難しいのです。そういうわけで、私はまだ imapd
が
shadow サポートするようにはできていません。
もし成功した人がいましたら、筆者のところにメールで知らせてください。この 項目に加えたいと思います。
pppd サーバは認証の方式を複数利用できるように設定できます。
Password Authentication Protocol (PAP) と Cryptographic
Handshake Authentication Protocol (CHAP)です。pppd サーバは普通パ
スワード文字列を /etc/ppp/chap-secrets
か
/etc/ppp/pap-secrets
(あるいは両方)から得ます。pppd に標準の
動作をさせている場合には pppd を再インストールする必要はありません。
pppd はloginパラメータを使うようにすることもできます(コマンド
ラインか、設定ファイルで指定するか options
ファイル内で指定)。
もしlogin オプションが指定されると pppd は PAP で
/etc/passwd
ファイルのユーザネームとパスワードを使います。パ
スワードを shadow 化するともちろん、これは動作しなくなります。
pppd-1.2.1d では shadow をサポートするためにはプログラムを変更しなけれ
ばなりません。
次の章での例題は pppd-1.2.1d
(バージョンが古い pppd)に shadow
サポートを加えるというものです。
pppd-2.2.0
では既に shadow 対応が行われています。