最後にブロックデバイスを作成します。
chroot に /dev/null と /dev/log が必要です。
/dev/null は環境に合わせて mknod コマンドで作成します。
# ls -lL /dev/null crw-rw-rw- 1 root root 1, 3 1月 8 18:26 /dev/null # mknod /usr/local/rsshchrootskel/dev/null c 1 3 # chmod 666 /usr/local/rsshchrootskel/dev/null
テストユーザーの方にも dev/null を反映させておきます。
# cp -Rp /usr/local/rsshchrootskel/dev /home/hoge/
リモートクライアントから転送してみます。
$ scp -P 10022 scptest.txt hoge@jace:. hoge@jace's password: scptest.txt 100% 5 0.0KB/s 00:00
成功です。
最後に syslog の設定です。
■ syslog の設定
syslogは、デーモンとしてシステムに常駐し、起動と共に /dev/log というソケットを用意します。
各プログラムは /dev/log に記録したい情報を送信することで syslog を利用し、ロギングできます。
rssh もsyslogを利用します。しかしながらchrootされた場合は /dev/log にはアクセスできません。
そこで chroot/dev/log にもソケットを用意してやる必要があります。
(CentOS 5.2)
# service syslog stop カーネルロガーを停止中: [ OK ] システムロガーを停止中: [ OK ] # syslogd -a /home/hoge/dev/log
これで /home/hoge/dev/log にsyslogのソケットが用意されるはずです。
しかしこれでは /dev/log が消滅してしまいますし、serviceで起動した際は適用されません。
syslogの設定ファイルを修正し対応します。
# vi /etc/sysconfig/syslog
修正前
・/etc/sysconfig/syslog
SYSLOGD_OPTIONS="-m 0"
↓修正
SYSLOGD_OPTIONS="-m 0 -a /home/hoge/dev/log"
・再起動
# service syslog restart
これで /dev/log を消滅させることなく /home/hoge/dev/log にsyslogのソケットを用意できます。
新たなchroot ユーザーを追加するごとに -a オプションを追加することになります。
最後に
■ etc/passwd ファイルについて
mkchroot.sh によって/etc/passwd ファイルもchrootのスケルトンディレクトリにコピーされていますが、セキュリティの為利用ユーザー以外の情報は削除しておきましょう。
■ WinSCPを利用する場合
WinSCPは内部コマンドを実行しているようですので、使う場合はsftpモードと設定して、SFTPでファイル転送を行わなければならないらしいです。
cammy
7月 27th, 2010 18:05
こんにちは。
rsshを設定する上で、本サイトを参考にさせて頂きました。
ありがとうございます。
現在、rsshで40ユーザ程のsftpサーバを作成しようと考えていますが、ログをsyslogに吐き出す為の/etc/sysconfig/syslogの記述で少々戸惑っております。
SYSLOGD_OPTIONSで1ユーザづつ-a オプションにつけて追加していますが、20ユーザ目から、Out of descriptors, ignoringとなり、無視されるようになりました。これに対する対処方法ってありますでしょうか?
もしご存知でしたら、教えてください。
dage
7月 28th, 2010 12:32
cammy さん、こんにちは。
http://www.ayutaya.com/home/knaka/linux2004
この部分。
#define MAXFUNIX 20
どうやら固定で上限値を指定しているようです。
#define MAXFUNIX 40
として sysklog をリコンパイルするか、 rsyslog など異なるシスログ デーモンを導入するなどしてトライされてみてはいかがでしょうか?
解決が厳しいようでしたら、またコメントをください。