次のページ 前のページ 目次へ

6. アップグレードするかパッチを当てる必要があるプログラム

Shadow Suite にはパスワードにアクセスするプログラムほとんどの 代替品を含んでいますが、ほとんどのシステムでは他にもいくつかのプログラ ムが必要となります。

Debian パッケージでは(そうでない場合でも構いませんが)、 以下の場所からシステムの再構築に必要なプログラムの Debian パッケージの のソースを入手することができます。 ftp://ftp.debian.org/debian/stable/source/

この節の残りはadduser, wu_ftpd, ftpd, pop3d, xlock, xdm and sudoShadow Suite をサポートできるようにするため行うアップグレードについて説 明します。

他のプログラムも shadow サポートできるようにする方法は Cプログラムを Shadow Suite に対応させる方法 の章を参 照して下さい。(実際に shadow ファイルにアクセスするためには root に SUID するか shadow に SGID する必要があります。)

6.1 Slackware adduser program

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

6.2 wu_ftpd サーバ

大部分の 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

6.3 標準の ftpd

標準の ftpd サーバを使っている場合には wu_ftpd サーバにアップ グレードすることを勧めます。先程述べたバグを除けば、より安全だとされて いるからです。

どうしても標準のものを使いたい場合や、NIS をサポートする必要がある場合 には Sunsite から ftpd-shadow-nis.tgz を入手して下さい。

6.4 pop3d (Post Office Protocol 3)

もし、POP3(the third Post Office Protocol) をサポートする必要 がある場合には pop3d を再コンパイルする必要があります。 pop3dinet/tcpd からroot権限で実行されま す。

Sunsite から2つの異なるバージョンのものを入手できます: pop3d-1.00.4.linux.shadow.tar.gzpop3d+shadow+elf.tar.gz です。

どちらの場合も問題なくインストールできるでしょう。

6.5 xlock

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 ができたはずです。

6.6 xdm

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/

xdmroot 権限で動作するのでファイルのパーミッショ ンを変える必要はありません。

6.7 sudo

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

6.8 imapd (E-Mail [pine パッケージ])

imapdpop3d のようなメールサーバです。 imapdpine E-mail パッケージに付属しています。パッ ケージに付属するドキュメントには Linux システムに対する標準設定で shadow をサポートしていると書かれています。しかし、これは正しくない記 述です。さらに、このパッケージでは実行ファイル生成スクリプトと Makefile の組合せが必要で、コンパイル時にlibshadow.aを加える ことが難しいのです。そういうわけで、私はまだ imapd が shadow サポートするようにはできていません。

もし成功した人がいましたら、筆者のところにメールで知らせてください。この 項目に加えたいと思います。

6.9 pppd (PPP プロトコルサーバ)

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 対応が行われています。


次のページ 前のページ 目次へ