centos7安装配置vsftp
#blog
安装 ftp
yum -y install vsftpd
修改防火墙开放 ftp 端口
firewall-cmd --add-service=ftp --permanent # 开放 ftp 端口
systemctl restart firewalld # 重启防火墙
配置 selinux 允许 ftp 访问 home 和外网访问
setsebool -P allow_ftpd_full_access on
setsebool -P tftp_home_dir on
注意有的文档要求修改 ftp_home_dir, 该变量在 centos7 中,变成了 tftp_home_dir。
其他 ftp 相关的变量,可通过 getsebool -a|grep ftp 查看
添加 ftp 用户
useradd -g root -d /home/ftpuser -s /sbin/nologin ftpuser
passwd ftpuser # 设置密码,也就是 ftp 的登录密码
mkdir /home/ftpuser/ftp # 创建一个目录给 ftp 作为主目录用,注意这个目录与后续设置有关
chown -R ftpuser:root /home/ftpuser/ftp # 设置目录权限,因为这个子目录是 root 创建的
这里 /home/ftpuser 为 ftpuser 这个用户的主目录。
/home/ftpuser/ftp 则创建用来做 vsftp 的主目录
修改 /etc/shell
需要注意,这里的用户,使用了 /sbin/nologin 作为登录 shell。正常情况下,该用户无法登录 ssh shell,也无法登录 ftp。
ftp/shell 会根据/etc/shells这个文件来判断一个用户是否是有效用户,会阻止那些shell不在 /etc/shells 里的用户登陆.
需要手动将 /sbin/nologin 添加到 /etc/shells 文件最后。此时用户仍然无法登录ssh shell,但可以登录 ftp。
如果创建用户的时候,不指定 -s,则无需做此设置。
用户的登录 shell 可以到 /etc/passwd 中进行修改。
修改 /etc/vsftpd/vsftpd.conf 配置文件
# 禁用匿名登录
anonymous_enable=NO
# 启动用户列表
userlist_enable=YES
# 决定是否对用户列表的用户拒绝访问ftp
userlist_deny=NO
# 指定userlist文件所在位置
userlist_file=/etc/vsftpd/user_list
chroot_local_user=YES
# 将所有用户限制在主目录(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户都可以逃出主目录,切换到根目录。)
allow_writeable_chroot=YES
# 用户主目录可写,不设此项目则用户无法上传文件
chroot_list_enable=NO
# 忽略 chroot_list,保证所有用户都不能随意切换主目录。
user_sub_token=$USER
# 注意这里的目录与上面创建的目录是匹配的,如果不添加这个配置,则使用用户的主目录作为 ftp 的主目录
local_root=/home/$USER/ftp
注意 vsftpd.conf 文件中,非注释行的配置,最后一定不要带空格,因为空格也会被 vsftp 解读作为配置的值。
将新建用户 ftpuser 添加到 /etc/vsftpd/userlist 中,允许用户访问
如题
启动/停止/重启 ftp 服务
systemctl restart vsftpd # 重启
systemctl start vsftpd # 启动
systemctl stop vsftpd # 停止
systemctl status vsftpd # 查看状态
systemctl enable vsftpd # 设置开机启动