パッケージを入手した後の最初の作業はこれを展開することです。パッケージ
は tar (Tape ARchive) でまとめた後に gzip で圧縮してあるので、まずパッ
ケージを /usr/src
に移動させてから次のように入力して下さい:
tar -xzvf shadow-current.tar.gz
この操作でパッケージは /usr/src/shadow-YYMMDD
というディレク
トリに展開されます。
まず最初に行なうことはMakefile
とconfig.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.h
とMakefile
をそれぞれ変更する必要があります。
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
に対して
行われています。
Shadow Suite が置き換えてしまうプログラムをあらかじめ確認して おき、バックアップを取っておくのは良い考えです。Slackware 3.0 パッケー ジでは以下のファイルが該当します:
β版パッケージには Makefile 中にsave というターゲットがありま すが、コメントアウトされています。 パッケージが異なればプログラムの置き場所も異なるからです。
/etc/passwd
ファイルのバックアップも取っておいたほうが良いでしょ
う。passwd
コマンドと同じディレクトリに置いて上書きしてしまわ
ないように、何か別の名前にしましょう。
インストール作業のほとんどはrootとして行う必要があります。
パッケージの実行ファイルをコンパイルするために make を実行して下さい:
make all
rcsid defined but not used
というウォーニングが出るかもしれま
せんが、無視して構いません。
これは作者がバージョン管理ツールを使っているために起こるものです。