CentOS7安装vsftpd
最近又用到ftp了,摸索了一下终于安装成功,记录下安装过程,本次使用的操作系统为 CentOS7,ftp使用vsftpd。
安装vsftpd
yum install -y vsftpd
配置vsftpd
vsftpd的配置文件路径为:/etc/vsftpd/vsftpd.conf
打开此文件,调整一些配置:
vim /etc/vsftpd/vsftpd.conf
设置不允许匿名访问
anonymous_enable=NO
如下图:
设置允许ascii上传和下载
ascii_upload_enable=YES
ascii_download_enable=YES
如下图:
设置用户只可访问为其基本的主目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
如下图:
设置ftp服务端口和空闲连接超时时间
listen_port=8031
如下图:
设置空闲连接超时时间 (单位:秒)
idle_session_timeout=300
如下图:
启用虚拟用户
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf
设置被动模式随机端口范围
pasv_min_port=50000
pasv_max_port=51000
如下图,我设置的端口范围为:50000 至 51000,此范围可调整
其他一些配置
allow_writeable_chroot=YES
use_localtime=YES
virtual_use_local_privs=YES
accept_timeout=5
connect_timeout=1
如下图:
配置用户
创建vsftpd目录
mkdir /home/vsftpd
配置ftpuser
groupadd ftpuser
useradd -g ftpuser -M -d /home/vsftpd -s /sbin/nologin ftpuser
设置ftpuser的密码
passwd ftpuser
执行上面命令后,会提示输入密码,根据提示输入,并重复确认即可
将vsftpd目录的权限转给ftpuser
chown -R ftpuser:ftpuser /home/vsftpd
创建ftp用户
打开文件:vuser_passwd,此文件位于 /etc/vsftpd 目录内
vim /etc/vsftpd/vuser_passwd
在 vuser_passwd 中添加 ftp 用户账号和密码,文件中,奇数行为账号,偶数行为密码,如下图,创建了一个ftp账号,用户名为 hy,密码为 hy123:
创建ftp用户的目录,并设置访问权限
mkdir -p /home/vsftpd/hy
chmod 755 -R /home/vsftpd
生成虚拟用户数据文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
配置pam认证
查看系统位数
查看系统是64位还是32位,不同位数的系统,后续配置有所差别
getconf LONG_BIT
如下图,我的系统是64位:
先配置原始pam文件,再创建一个新文件,并将下面的命令写入文件
下面的命令根据系统位数选择即可,不需全部写入:
64位系统:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
32位系统:
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account
required pam_userdb.so db=/etc/vsftpd/vuser_passwd
写文件
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vim /etc/pam.d/vsftpd
如下图,
创建虚拟用户,并配置目录
mkdir -p /etc/vsftpd/vuser_conf
vim /etc/vsftpd/vuser_conf/hy
将下方内容写入文件:
local_root=/home/vsftpd/hy
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
创建文件chroot_list,并写入ftp用户名
vim /etc/vsftpd/chroot_list
配置SELINUX和防火墙
设置SELinux对vsftp放行
setsebool -P ftpd_full_access on
配置iptables,写入规则
vim /etc/sysconfig/iptables
在iptables中写入以下规则:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8031 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 50000:51000 -j ACCEPT
其中,8031,是我的ftp对外端口,而50000:51000是上面配置的随机端口范围。
如果是测试环境,也可直接关闭 SELinux (不安全,不推荐此方法)
打开SELinux 配置文件:
vim /etc/selinux/config
修改配置:
SELINUX=disabled
如下图:
配置完成,启动ftp即可,以下是一些命令
#启动
systemctl start vsftpd.service
#重启
systemctl restart vsftpd.service
#停止
systemctl stop vsftpd.service
#查看状态
systemctl status vsftpd.service
#设置开机启动
systemctl enable vsftpd.service