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

4. プログラムのコンパイル

4.1 アーカイブの展開

パッケージを入手した後の最初の作業はこれを展開することです。パッケージ は tar (Tape ARchive) でまとめた後に gzip で圧縮してあるので、まずパッ ケージを /usr/src に移動させてから次のように入力して下さい:

tar -xzvf shadow-current.tar.gz

この操作でパッケージは /usr/src/shadow-YYMMDD というディレク トリに展開されます。

4.2 config.h による設定

まず最初に行なうことはMakefileconfig.hの2つを上書 きコピーすることです:

cd /usr/src/shadow-YYMMDD
cp Makefile.linux Makefile
cp config.h.linux config.h

まず config.h ファイルを見てください。このファイルには設定オ プションの定義が書かれています。もし、あなたが推奨されている パッケージを用いている場合には、まずグループのshadowサポートをまず無効 にしましょう。

標準ではグループのパスワードは有効になっています。これを無効にするため にはconfig.hを編集し、#define SHADOWGRP#undef SHADOWGRP に変更します。とりあえずはこれを無効にしてお き、あとで本当にグループのパスワードやグループの管理者が必要となった時 に Shadow Suite を再コンパイルするべきでしょう。もし有効なま まにしておくのならば、/etc/gshadow ファイルを作らなければなり ません。

倍長パスワードを有効にすることは前に述べた理由のため、推奨しません。

#undef AUTOSHADOW の設定は絶対に変更してはいけません。

AUTOSHADOW オプションは shadow を理解できないプログラムも機能 するようにするために設計されたものです。これは良いことのように思えます が、きちんと動きません。このオプションを有効にし、root でプログラムを 実行すると、 getpwnam() 関数を呼び出された場合には変更された エントリーを /etc/passwd ファイルに書き戻してしまいます。 (もはやshadow 化されたパスワードなくなってしまう) chfn や chsh がこれに該当するプログラムです。getpwnam()を呼び出す前に 真のUIDと実効UIDをうまく切替えることで回避するという方法は使えません。 chfn や chsh は root 権限で動作するからです。

libc には同じ意味を持つ SHADOW_COMPAT オプションがありますが、 同じ注意が libc を作る際にも当てはまります。使うべきではありません!

もし/etc/passwdファイルにエンコードされたパスワードが現われる ようならば問題です。

もし4.6.27 以前のバージョンのlibcを使っているなら、 config.hMakefileをそれぞれ変更する必要があります。 config.h は以下の部分を:

#define HAVE_BASENAME
このように変更してください:
#undef HAVE_BASENAME
Makefile についても同様です:

SOBJS = smain.o env.o entry.o susetup.o shell.o \
        sub.o mail.o motd.o sulog.o age.o tz.o hushed.o

SSRCS = smain.c env.c entry.c setup.c shell.c \
        pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
        tz.c hushed.c

SOBJS = smain.o env.o entry.o susetup.o shell.o \
        sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o

SSRCS = smain.c env.c entry.c setup.c shell.c \
        pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
        tz.c hushed.c basename.c
libc 4.6.27 以降ではこれらの変更はbasename.cに対して 行われています。

4.3 元のプログラムのバックアップの作成

Shadow Suite が置き換えてしまうプログラムをあらかじめ確認して おき、バックアップを取っておくのは良い考えです。Slackware 3.0 パッケー ジでは以下のファイルが該当します:

β版パッケージには Makefile 中にsave というターゲットがありま すが、コメントアウトされています。 パッケージが異なればプログラムの置き場所も異なるからです。

/etc/passwdファイルのバックアップも取っておいたほうが良いでしょ う。passwdコマンドと同じディレクトリに置いて上書きしてしまわ ないように、何か別の名前にしましょう。

4.4 Make の実行

インストール作業のほとんどはrootとして行う必要があります

パッケージの実行ファイルをコンパイルするために make を実行して下さい:

make all

rcsid defined but not used というウォーニングが出るかもしれま せんが、無視して構いません。 これは作者がバージョン管理ツールを使っているために起こるものです。


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