pkg://Shadow-Password-HOWTO.tar.gz:28565/Shadow-Password-HOWTO-4.html
downloads
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>Linux Shadow Password HOWTO: プログラムのコンパイル</TITLE>
<LINK HREF="Shadow-Password-HOWTO-5.html" REL=next>
<LINK HREF="Shadow-Password-HOWTO-3.html" REL=previous>
<LINK HREF="Shadow-Password-HOWTO.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="Shadow-Password-HOWTO-5.html">次のページ</A>
<A HREF="Shadow-Password-HOWTO-3.html">前のページ</A>
<A HREF="Shadow-Password-HOWTO.html#toc4">目次へ</A>
<HR>
<H2><A NAME="s4">4. プログラムのコンパイル</A></H2>
<H2><A NAME="ss4.1">4.1 アーカイブの展開</A>
</H2>
<P>パッケージを入手した後の最初の作業はこれを展開することです。パッケージ
は tar (Tape ARchive) でまとめた後に gzip で圧縮してあるので、まずパッ
ケージを <CODE>/usr/src</CODE> に移動させてから次のように入力して下さい:
<BLOCKQUOTE><CODE>
<PRE>
tar -xzvf shadow-current.tar.gz
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>この操作でパッケージは <CODE>/usr/src/shadow-YYMMDD</CODE> というディレク
トリに展開されます。
<P>
<H2><A NAME="ss4.2">4.2 config.h による設定</A>
</H2>
<P>まず最初に行なうことは<CODE>Makefile</CODE>と<CODE>config.h</CODE>の2つを上書
きコピーすることです:
<BLOCKQUOTE><CODE>
<PRE>
cd /usr/src/shadow-YYMMDD
cp Makefile.linux Makefile
cp config.h.linux config.h
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>まず <CODE>config.h</CODE> ファイルを見てください。このファイルには設定オ
プションの定義が書かれています。もし、あなたが<EM>推奨されている</EM>
パッケージを用いている場合には、まずグループのshadowサポートをまず無効
にしましょう。
<P>
<P>標準ではグループのパスワードは有効になっています。これを無効にするため
には<CODE>config.h</CODE>を編集し、<CODE>#define SHADOWGRP</CODE> を
<CODE>#undef SHADOWGRP</CODE> に変更します。とりあえずはこれを無効にしてお
き、あとで本当にグループのパスワードやグループの管理者が必要となった時
に <EM>Shadow Suite</EM> を再コンパイルするべきでしょう。もし有効なま
まにしておくのならば、<CODE>/etc/gshadow</CODE> ファイルを作らなければなり
ません。
<P>
<P>倍長パスワードを有効にすることは前に述べた理由のため、推奨しません。
<P>
<P><CODE>#undef AUTOSHADOW</CODE> の設定は<EM>絶対に</EM>変更してはいけません。
<P>
<P><CODE>AUTOSHADOW</CODE> オプションは shadow を理解できないプログラムも機能
するようにするために設計されたものです。これは良いことのように思えます
が、きちんと動きません。このオプションを有効にし、root でプログラムを
実行すると、 <CODE>getpwnam()</CODE> 関数を呼び出された場合には変更された
エントリーを <CODE>/etc/passwd</CODE> ファイルに書き戻してしまいます。
(<EM>もはやshadow 化されたパスワードなくなってしまう</EM>) chfn や
chsh がこれに該当するプログラムです。<CODE>getpwnam()</CODE>を呼び出す前に
真のUIDと実効UIDをうまく切替えることで回避するという方法は使えません。
chfn や chsh は root 権限で動作するからです。
<P>
<P>libc には同じ意味を持つ <CODE>SHADOW_COMPAT</CODE> オプションがありますが、
同じ注意が libc を作る際にも当てはまります。<EM>使うべきではありません!</EM>
<P>もし<CODE>/etc/passwd</CODE>ファイルにエンコードされたパスワードが現われる
ようならば問題です。
<P>
<P>もし4.6.27 以前のバージョンの<CODE>libc</CODE>を使っているなら、
<CODE>config.h</CODE>と<CODE>Makefile</CODE>をそれぞれ変更する必要があります。
<CODE>config.h</CODE> は以下の部分を:
<BLOCKQUOTE><CODE>
<PRE>
#define HAVE_BASENAME
</PRE>
</CODE></BLOCKQUOTE>
このように変更してください:
<BLOCKQUOTE><CODE>
<PRE>
#undef HAVE_BASENAME
</PRE>
</CODE></BLOCKQUOTE>
<CODE>Makefile</CODE> についても同様です:
<P>
<BLOCKQUOTE><CODE>
<PRE>
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
</PRE>
</CODE></BLOCKQUOTE>
<P>
<BLOCKQUOTE><CODE>
<PRE>
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
</PRE>
</CODE></BLOCKQUOTE>
<CODE>libc 4.6.27</CODE> 以降ではこれらの変更は<CODE>basename.c</CODE>に対して
行われています。
<P>
<H2><A NAME="ss4.3">4.3 元のプログラムのバックアップの作成</A>
</H2>
<P><EM>Shadow Suite</EM> が置き換えてしまうプログラムをあらかじめ確認して
おき、バックアップを取っておくのは良い考えです。Slackware 3.0 パッケー
ジでは以下のファイルが該当します:
<P>
<UL>
<LI>/bin/su</LI>
<LI>/bin/login</LI>
<LI>/usr/bin/passwd</LI>
<LI>/usr/bin/newgrp</LI>
<LI>/usr/bin/chfn</LI>
<LI>/usr/bin/chsh</LI>
<LI>/usr/bin/id</LI>
</UL>
<P>
<P>β版パッケージには Makefile 中に<EM>save</EM> というターゲットがありま
すが、コメントアウトされています。
パッケージが異なればプログラムの置き場所も異なるからです。
<P>
<P><CODE>/etc/passwd</CODE>ファイルのバックアップも取っておいたほうが良いでしょ
う。<CODE>passwd</CODE>コマンドと同じディレクトリに置いて上書きしてしまわ
ないように、何か別の名前にしましょう。
<P>
<H2><A NAME="ss4.4">4.4 Make の実行</A>
</H2>
<P><EM>インストール作業のほとんどはrootとして行う必要があります</EM>。
<P>
<P>パッケージの実行ファイルをコンパイルするために make を実行して下さい:
<BLOCKQUOTE><CODE>
<PRE>
make all
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P><CODE>rcsid defined but not used</CODE> というウォーニングが出るかもしれま
せんが、無視して構いません。
これは作者がバージョン管理ツールを使っているために起こるものです。
<P>
<P>
<HR>
<A HREF="Shadow-Password-HOWTO-5.html">次のページ</A>
<A HREF="Shadow-Password-HOWTO-3.html">前のページ</A>
<A HREF="Shadow-Password-HOWTO.html#toc4">目次へ</A>
</BODY>
</HTML>