CentOS 5.7 x86_64 版でchroot

あるサーバをファイルサーバとして使いたいという要望があって、いろいろ考えたんですが、chrootで一部解放することにしました。さくっと設定して終わりかと思ったのですが、なかなかどうして、一部引っかかったところがありましたので、備忘として記述しておきます。

環境がCentOS 5.7 x86_64でありまして、標準のopensshだと、chrootできないとのことなので、rpmbuildしてインストールしてあげました。まあ、インストール方法は、いろいろなところで紹介されていますので、詳しくは省きます。で、まずはじめの引っかかりポイントですが、2012年2月時点の最新版のopenssh-5.9p1-1だと、このbuildに失敗します。

cp: cannot stat `WARNING*': そのようなファイルやディレクトリはありません
エラー: /var/tmp/rpm-tmp.15281 の不正な終了ステータス (%doc)
ファイルの処理中: openssh-clients-5.9p1-1
Provides: config(openssh-clients) = 5.9p1-1

Obsoletes: ssh-server
ファイルの処理中: openssh-debuginfo-5.9p1-1
伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/openssh-5.9p1-buildroot


RPM ビルドエラー:
/var/tmp/rpm-tmp.15281 の不正な終了ステータス (%doc)

なんてこったい。えっと、WARNINGが無くなっとりますがな。
contrib/redhat/openssh.specの

%doc CREDITS ChangeLog INSTALL LICENCE OVERVIEW README* PROTOCOL* TODO WARNING*

%doc CREDITS ChangeLog INSTALL LICENCE OVERVIEW README* PROTOCOL* TODO

に変更してあげます。

再びbuild。まあ、あとは、CPUさん頑張ってで、rpmが出来上がるまで待ちます。出来上がって、

rpm -Uvh /usr/src/redhat/RPMS/x86_64/openssh-5.9p1-1.x86_64.rpm
rpm -Uvh /usr/src/redhat/RPMS/x86_64/openssh-clients-5.9p1-1.x86_64.rpm
rpm -Uvh /usr/src/redhat/RPMS/x86_64/openssh-server-5.9p1-1.x86_64.rpm

みたいな感じで、インストールすれば、OK.
で、お決まりの chroot-adduser スクリプトを貼付けて、userの作成っと。

cp: cannot create regular file `lib/': ディレクトリです
cp: cannot create regular file `lib/': ディレクトリです
cp: cannot create regular file `lib/': ディレクトリです
cp: cannot create regular file `./lib/': ディレクトリです
cp: cannot create regular file `lib/': ディレクトリです
cp: cannot create regular file `lib/': ディレクトリです
cp: cannot create regular file `lib/': ディレクトリです
cp: cannot create regular file `lib/': ディレクトリです
cp: cannot create regular file `lib/': ディレクトリです

またエラーがでてますよ><
あー、libじゃなく、lib64だよね。ということで、

cp /lib64/libnss_compat.so.2 lib64/
cp /lib64/libnsl.so.1 lib64/
cp /lib64/libnss_files.so.2 lib64/
cp /lib64/ld-linux.so.2 ./lib64/
cp /lib64/libc.so.6 lib64/
cp /lib64/libm.so.6 lib64/
cp /lib64/libpthread.so.0 lib64/
cp /lib64/librt.so.1 lib64/
cp /lib64/libthread_db.so.1 lib64/

と修正。再度実行...

cp: cannot stat `/lib64/ld-linux.so.2': そのようなファイルやディレクトリはありません

なんてこったい。なんでないの?

cp /lib64/ld-linux.so.2 ./lib64/

じゃなくって、

cp /lib64/ld-linux-x86-64.so.2 lib64/

ですがな。ということで、最終的には、

cp /lib64/libnss_compat.so.2 lib64/
cp /lib64/libnsl.so.1 lib64/
cp /lib64/libnss_files.so.2 lib64/
cp /lib64/ld-linux-x86-64.so.2 lib64/
cp /lib64/libc.so.6 lib64/
cp /lib64/libm.so.6 lib64/
cp /lib64/libpthread.so.0 lib64/
cp /lib64/librt.so.1 lib64/
cp /lib64/libthread_db.so.1 lib64/

後は、鍵なりを設定して、使用してもらえばokですね。;)