在 Debian 上搭建 FTP 服务器(常见为 vsftpd)时,“换根”通常指的是 chroot(改变根目录),也就是让 FTP 用户登录后只能看到并访问自己的目录,无法跳到系统其他位置。
下面以 vsftpd 为例说明。
sudo apt update
sudo apt install vsftpd
编辑配置文件:
sudo nano /etc/vsftpd.conf
确保有以下内容:
chroot_local_user=YES
allow_writeable_chroot=YES
说明:
chroot_local_user=YES:把所有本地用户限制在家目录allow_writeable_chroot=YES:允许家目录可写(否则登录失败)重启服务:
sudo systemctl restart vsftpd
此时用户登录后根目录就是:
/home/用户名
sudo useradd -m ftpuser
sudo passwd ftpuser
sudo usermod -d /srv/ftp/ftpuser ftpuser
sudo chown ftpuser:ftpuser /srv/ftp/ftpuser
sudo chmod 755 /srv/ftp/ftpuser
在 /etc/vsftpd.conf 中:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
创建列表文件:
sudo nano /etc/vsftpd.chroot_list
写入需要被 chroot 的用户:
ftpuser
重启:
sudo systemctl restart vsftpd
如果你是用 虚拟用户(virtual users):
guest_username 指定系统用户user_config_dir 给每个虚拟用户单独设置 local_root示例:
guest_enable=YES
guest_username=ftpvirtual
user_config_dir=/etc/vsftpd/user_conf
每个用户文件:
/etc/vsftpd/user_conf/user1
内容:
local_root=/srv/ftp/user1
通常是家目录可写导致:
allow_writeable_chroot=YES
检查目录权限和:
write_enable=YES
如果你用的是 proftpd / pure-ftpd 或想做 SFTP 换根(chroot),可以告诉我,我可以给你对应方案。