跳到主要内容
方的代码随记
返回

vsftpd 搭建 FTP(指定用户访问指定目录)

更新于:

安装与启动

# 安装 vsftpd
yum install -y vsftpd

# 设置开机自启动
systemctl enable vsftpd.service

# 启停
service vsftpd start
service vsftpd restart
service vsftpd stop

创建用户并锁定目录

# useradd -d 目录 -s /sbin/nologin 用户
useradd -d /home/ftp/ -s /sbin/nologin ftp

# 设置密码
passwd ftp

修改配置文件

编辑 /etc/vsftpd/vsftpd.conf,去掉以下三项的注释:

chroot_local_user=YES
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list

目录权限

chown -R ftp:ftp /home/ftp/
chmod 755 -R /home/ftp/

重启并测试

service vsftpd restart
ftp 127.0.0.1

常见问题

提示「文件和主目录已经存在」——找到信箱文件并删除:

find / -name "*ftp"
rm -rf /var/spool/mail/ftp

提示「用户已存在」:

userdel ftp

登录报 500 OOPS: cannot change directory——检查目标目录及其各级父目录的权限。

登录报 530 Login incorrect——检查 /etc/shells 是否包含 /sbin/nologin:

vim /etc/shells
/sbin/nologin

chroot 参数组合对照表

chroot_local_user=YESchroot_local_user=NO
chroot_list_enable=YES1. 所有用户都被限制在其主目录下
2. chroot_list_file 中的用户作为「例外」,不受限制
1. 所有用户都不被限制在主目录
2. chroot_list_file 中的用户作为「例外」,受到限制
chroot_list_enable=NO1. 所有用户都被限制在其主目录下
2. 不使用例外列表,没有任何例外
1. 所有用户都不被限制在主目录
2. 不使用例外列表,没有任何例外

分享这篇文章:

上一篇
CentOS 7 源码编译安装 Git
下一篇
Pure-FTPd 安装与虚拟用户配置