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
# 接続できない