私は vsftpd を使用していますが、vsftpd.conf で希望する動作が得られないようです。/folder をルート フォルダーに変更してユーザーが 1 つ上のフォルダーに移動できないようにし、すべてのセッションの開始ディレクトリを /folder/$USER にしたい場合はどうすればよいでしょうか?
#vsftpd.conf
user_sub_token=$USER
local_root=/folder
#user_config_dir=/etc/vsftpd/users
passwd_chroot_enable=YES
#hide everything
hide_file={.*}
passwd_chroot_enable=YES を使用すると、local_root=/folder が上書きされ、セッションが /folder/$USER (/etc/passwd で指定されたホーム フォルダー) に chroot されます。 chroot とセッションのホーム フォルダーは、別々のものであるべきではないでしょうか。 なぜこのように一緒に扱われるのでしょうか。 ユーザーがホーム フォルダーにアクセスできるが、1 つ前のフォルダーのみに制限されるようにしたいのです。 そうすれば、FTP セッション内のパスは / ではなく /username になります。
以下は sftpd (sshd_config) で動作する例です。
Match Group mtlsftpprd001_edi-ftp
ChrootDirectory /folder
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -l INFO -d %u
KerberosAuthentication yes