实验环境:Red Hat Enterprise Linux release 8.0 (Ootpa) 192.168.160.128
安装所需服务
# yum -y install vsftpd
创建虚拟用户临时文件
创建虚拟用户临时文件 /ftpuser/ftpuser.txt,新建虚拟用户和密码,其中xuni1、xuni2为虚拟用户名,123456 为密码,如果有多个用户,依次格式填写即可:
# mkdir /ftpusers # vi /ftpuser/ftpuser.txt xuni1 123456 xuni2 123456 :wq #
设置用户数据库认证
生成 Vsftpd 虚拟用户数据库认证文件,设置权限 700:
# db_load -T -t hash -f /ftpuser/ftpuser.txt /ftpuser/ftpuser.db # chmod 700 /ftpuser/ftpuser.db
配置 PAM 认证文件,/etc/pam.d/vsftpd 行首加入如下,再将其余行都注释掉
# vi /etc/pam.d/vsftpd auth required pam_userdb.so db=/ftpuser/ftpuser account required pam_userdb.so db=/ftpuser/ftpuser :wq
配置完成效果如下
设置影子用户和服务配置文件
所有 Vsftpd 虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用
# useradd -s /sbin/nologin ftpuser
修改配置文件
# vi /etc/vsftpd/vsftpd.conf 最底部添加,如果参数已经存在,修改即可 pam_service_name=vsftpd user_config_dir=/ftpuser //指定存放账户信息的目录 guest_enable=YES //开启虚拟目录可以登录 guest_username=ftpuser //指定影子用户使用ftpuser用户登录 chroot_local_user=YES //不允许访问上级目录 :wq
建立用户的单独配置文件
# touch /ftpuser/xuni1 # touch /ftpuser/xuni2
编辑xuni1用户的权限,可根据需求自行添加参数,xuni2用户同类
# vi /ftpuser/xuni1 local_root=/xuni1 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES :wq
编辑xuni2用户的权限
# vi /ftpuser/xuni2 local_root=/xuni2 :wq
建立用户的登录目录,在目录内创建文件方便检验成功
# mkdir /xuni1 # mkdir /xuni2 # chmod 755 /xuni1 # chmod 755 /xuni2 # touch /xuni1/1.txt # touch /xuni2/2.txt
重启服务
# systemctl restart vsftpd
测试服务是否成功
提前安装好ftp服务
# yum -y install ftp
登录用户查看
登录成功并看到了所在目录的文件,xuni1用户成功
登录成功并看到了所在目录的文件,xuni2用户成功