目前Linux大部分部署的FTP服务器都是vsftpd,至于为什么,暂时没什么必要深究。
1.安装vsftpd
# yum check-update //检查可更新的程序,也可以不更新直接安装,以防万一
# yum -y install vsftpd
2.配置参数
# vi /etc/vsftpd/vsftpd.conf
修改为如下参数
anonymous_enable=NO ### 禁用匿名登录 local_enable=YES ### 允许本地用户登录 write_enable=YES ### 允许对文件系统做改动的 FTP 命令 local_umask=022### 本地用户创建文件所用的 umask 值 dirmessage_enable=YES ### 当用户首次进入一个新目录时显示一个消息 xferlog_enable=YES ### 用于记录上传、下载细节的日志文件 connect_from_port_20=YES ### 使用端口 20 (ftp-data)用于 PORT 风格的连接 xferlog_std_format=YES ### 使用标准的日志格式 listen=NO ### 不要让 vsftpd 运行在独立模式 listen_ipv6=YES ### vsftpd 将监听 IPv6 而不是 IPv4 pam_service_name=vsftpd ### vsftpd 使用的 PAM 服务名 userlist_enable=YES ### vsftpd 支持载入用户列表 tcp_wrappers=YES ### 使用 tcp wrappers
3.重启ftp
# systemctl restart vsftpd.service
# systemctl enable vsftpd.service
4.修改防火墙配置
有些文档说使用如下,但会报错无效 Error:INVALID_ZONE:public--permanent
# firewall-cmd --zone=public--permanent --add-port=21/tcp # firewall-cmd --zone=public--permanent --add-service=ftp
还是用如下方式比较好:
# firewall-cmd --permanent --add-service=ftp
# firewall-cmd --reload
# setsebool -P ftp_home_dir on //设置该SELinux 布尔值来允许 FTP 能读取用户家目录下的文件
接下来添加下面的选项来限制 FTP 用户到它们自己的家目录。
chroot_local_user=YES //配置文件中好像已存在 allow_writeable_chroot=YES
chroot_local_user=YES
意味着用户可以设置 chroot jail,默认是登录后的家目录。
同样默认的是,出于安全原因,vsftpd 不会允许 chroot jail 目录可写,然而,我们可以添加 allow_writeable_chroot=YES
来覆盖这个设置。
5.为ftp创建一个用户test1(指定目录为/home/www,不允许远程登录shell)
# useradd -d /home/www -m test1 -s /sbin/nologin
需要设置
vi /etc/vsftpd/vsftpd.conf
local_root=/home/www ### 定义用户的本地根目录
6.为ftp用户设置一个密码
# passwd test1 //密码设置有要求,不能包含用户名,不能低于8位,例:ftp123456