坂元です。

>FreeBSD5.4を使っています。
>SFTPで公開するサーバーを考えているのですが、
>ポーツのopenssh-portable4.0.0.1をメイクをするときに、WITH_OPENSSH_CHROOTを付
>けて、メイクします。
>こうすることで、chrootはできるのですが、このときのchrootディレクトリでは、
>/usr/local/libexec/sftp-server
>がファイルとして見えてしまうのですが、これを見れないようにするか、安全に保護
>する方法はないでしょうか。

別解となりますが、/usr/src/libexec/ftpd/ftpd.cからchrootの処理をパクッて
きて、sftp-serverに移植してみました。比較してもらうと分かりますが、私が
新たに書いたコードは、

uid = getuid();
if ((pw = getpwuid(uid)) == NULL)
        fatal("Cannot get user info");
residue = NULL;

の4行のみです。

1. cd /usr/src
2. patch < sftp-patch
3. /etc/make.confに、SFTP_CHROOT=yes と追加
4. cd /usr/src/secure/libexec/sftp-server
5. make && make install

で、chroot版sftp-serverがインストールされます。Makefile以外のパッチは
openssh-portableにもあたると思います。その場合は、WITH_OPENSSH_CHROOTオ
プションは無効にしたほうが良いでしょう。

メリットとして、chroot後のディレクトリツリー以下にバイナリやライブラリを
準備する必要がない一方、デメリットとして、sftp-serverにSUID rootする必要
があります。手元の環境でちょろっと試してみただけなので、自己責任でお使い
ください。

P.S.
いちおうsend-pr済みです。

-- 
坂元 英紀
 E-mail: [EMAIL PROTECTED]

Attachment: sftp-patch
Description: Binary data

メールによる返信