vsftpd安装与配置
本文以vsftp软件3.0.2版本为例,教大家如何配置虚拟用户、验证权限等。
一、vsftp安装
注意:以Redhat7系列(或者支持systemd环境的linux系统)
1、安装包
vsftpd-3.0.2-29.el7_9.x86_64.rpm
2、查询并安装vsftp
rpm -qa | grep vsftpd
rpm -ivh vsftpd-3.0.2-29.el7_9.x86_64.rpm
二、启动vsftp
systemctl enable vsftpd.service
systemctl start vsftpd.service
systemctl status vsftpd.service
vsftpd进程
ps -ef | grep vsftpd
ps -aux | grep vsftpd
三、远端验证ftp
ftp 192.168.142.155
注意:我在搭建过程中遇到如下错误
OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed. 错误翻译为chroot配置没有写入的权限。只需要在在 vsftpd.conf 加入如下配置即可
vi /etc/vsftpd/vsftpd.conf
allow_writeable_chroot=YES
重启vsftpd服务(Redhat7系列)
systemctl restart vsftpd.service
四、后续配置
1、设置防火墙规则
防火墙加入ftp服务
firewall-cmd --zone=public --add-service=ftp --permanent
主动模式,防火墙开启20、21端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --zone=public --add-port=20/tcp --permanent
设置当前ftp存储目录用户权限、chroot_list 文件配置用户登录、设置虚拟用户。
注意:如需在Windows资源管理访问,需要在网络共享中心->Internet属性->高级,开启被动访问ftp(开启兼容模式)
2、设置selinux
设置SELinux为宽容模式或者临时关闭
#临时改成宽容模式
setenforce 0
#查看selinux
# getenforce
Permissive
永久设置selinux,修改配置文件/etc/sysconfig/selinux
#查看,默认配置文件是开启的
cat /etc/sysconfig/selinux
SELINUX=enforcing
#禁用selinux
SELINUX=disable
#宽容模式
SELINUX=Permissive
五、配置示例
1、配置虚拟用户
编辑配置文件加入如下配置:
vi /etc/vsftpd/vsftpd.conf
listen_address=192.168.142.155
anonymous_enable=NO
local_enable=YES
write_enable=YES
allow_writeable_chroot=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd/chroot_list
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd.vu
pam_service_name=vsftpd
userlist_enable=YES
#tcp_wrappers=YES
在 /etc/vsftpd/chroot_list 加入虚拟用户 zzh1 和 zzh2 ,每行对应一个虚拟用户。
echo 'zzh1' >> /etc/vsftpd/chroot_list
echo 'zzh2' >> /etc/vsftpd/chroot_list
2、新增用户并指定虚拟用户对应的目录
建议:linux下赋予范围内满足需求最小权限即可(权限最小够用原则)。
#创建虚拟用户目录
mkdir -p /u01/ftp/{zzh1,zzh2}
#赋予权限,测试直接赋予最高权限了,实际工作中建议在最小权限范围内满足即可。
chmod -R 777 /u01/ftp/zzh1
chmod -R 777 /u01/ftp/zzh2
3、设置用户名以及密码至数据库
注意:使用的 \n 为正常的换行操作,并在虚拟用户list里面存储用户名以及密码。
#用 vusers.list 来区分本机用户与虚拟用户配置
echo -e "zzh1\n123456\nzzh2\n123456" > /etc/vsftpd/vusers.list
#切换到vsftpd配置目录
cd /etc/vsftpd/
#解析 vusers.list 到 vusers.db
db_load -T -t hash -f vusers.list vusers.db
#赋予权限
chmod 600 vusers.*
4、指定认证方式
echo -e "#%PAM-1.0\n\nauth required pam_userdb.so db=/etc/vsftpd/vusers\naccount required pam_userdb.so db=/etc/vsftpd/vusers" > /etc/pam.d/vsftpd.vu
#创建虚拟配置文件目录
mkdir /etc/vsftpd/vconf
#进入虚拟用户配置文件目录
cd vconf/
#新增配置
echo 'local_root=/u01/ftp/zzh1' > zzh1
echo 'local_root=/u01/ftp/zzh2' > zzh2
#查看配置
ls
zzh1 zzh2
#查看zzh1与zzh2的主目录
cat zzh1
local_root=/u01/ftp/zzh1
cat zzh2
local_root=/u01/ftp/zzh2
#新建测试文件
touch /u01/ftp/zzh1/test1
touch /u01/ftp/zzh2/test2
如果没有指定虚拟用户的ftp目录,默认访问目录就是ftp根目录 /u01/ftp/
5、命令登录验证
ftp 192.168.142.155
或者在资源管理验证测试是否能正常新增、删除、修改文件等,到这里vsftp就配置验证完成了。