• rssh完全インストール – SCP/SFTPをchrootしよう!part.4ブロックデバイス

    << | 1 | 2 | 3 | 4 |

    最後にブロックデバイスを作成します。

    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でファイル転送を行わなければならないらしいです。

    << | 1 | 2 | 3 | 4 |


    2 responses to “rssh完全インストール – SCP/SFTPをchrootしよう!part.4ブロックデバイス”


    • cammy

      こんにちは。

      rsshを設定する上で、本サイトを参考にさせて頂きました。
      ありがとうございます。

      現在、rsshで40ユーザ程のsftpサーバを作成しようと考えていますが、ログをsyslogに吐き出す為の/etc/sysconfig/syslogの記述で少々戸惑っております。

      SYSLOGD_OPTIONSで1ユーザづつ-a オプションにつけて追加していますが、20ユーザ目から、Out of descriptors, ignoringとなり、無視されるようになりました。これに対する対処方法ってありますでしょうか?

      もしご存知でしたら、教えてください。


      • dage

        cammy さん、こんにちは。

        http://www.ayutaya.com/home/knaka/linux2004

        この部分。
        #define MAXFUNIX 20
        どうやら固定で上限値を指定しているようです。
        #define MAXFUNIX 40
        として sysklog をリコンパイルするか、 rsyslog など異なるシスログ デーモンを導入するなどしてトライされてみてはいかがでしょうか?

        解決が厳しいようでしたら、またコメントをください。


     Leave a reply




    *