温馨提示×

debian ftpserver如何换根

小樊
41
2026-10-09 17:15:32
栏目: 智能运维

在 Debian 上搭建 FTP 服务器(常见为 vsftpd)时,“换根”通常指的是 chroot(改变根目录),也就是让 FTP 用户登录后只能看到并访问自己的目录,无法跳到系统其他位置。

下面以 vsftpd 为例说明。


一、安装 vsftpd(如未安装)

sudo apt update
sudo apt install vsftpd

二、基本 chroot 配置(最常用)

编辑配置文件:

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/用户名

三、为指定用户单独换根(推荐)

1. 创建用户

sudo useradd -m ftpuser
sudo passwd ftpuser

2. 修改用户家目录(可选)

sudo usermod -d /srv/ftp/ftpuser ftpuser

3. 设置权限

sudo chown ftpuser:ftpuser /srv/ftp/ftpuser
sudo chmod 755 /srv/ftp/ftpuser

四、只允许部分用户 chroot(更灵活)

在 /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

六、常见问题

1. 登录后 500 OOPS

通常是家目录可写导致:

allow_writeable_chroot=YES

2. 无法上传

检查目录权限和:

write_enable=YES

如果你用的是 proftpd / pure-ftpd 或想做 SFTP 换根(chroot),可以告诉我,我可以给你对应方案。

0 踩