SFTPでユーザの行動範囲を制限したい時の設定メモ。

ユーザの追加

#useradd sftpuser
#passwd sftpuser
#usermod -d / sftpuser

ディレクトリの設定

#chmod 755 /home/sftpuser/
#chown root:root /home/sftpuser/

#mkdir /home/sftpuser/data/
#chmod 755 /home/sftpuser/data/
#chown sftpuser:sftpuser /home/sftpuser/data/

ユーザのホームディレクトリの権限をrootに変更(chrootのため)。実際にユーザにデータを配置できるようにするためのディレクトリを作成し、そちらはそのユーザ権限にする。

SSHDの設定変更

/etc/ssh/sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp

Subsystemをsft-serverからinternal-sftpへ変更。それに伴い、対象ユーザの制限ディレクトリをChrootDirectoryで指定する。ここで指定した所がトップディレクトリになる。

SSHDの再起動

#service sshd restart 

これで完了。

動作確認

$sftp sftpuser@example.com
# 接続できる

$ssh sftpuser@example.com
# 接続できない