Linux下vsftp基于虚拟用户访问

//系统
# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core)
# uname -r
3.10.0-514.el7.x86_64
//关闭SELinux
# setenforce 0
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
//防火墙设置
# firewall-cmd --get-service    //查看在firewall中的服务名称
# firewall-cmd --zone=public --permanent --add-service=ftp  //打开ftp服务
# firewall-cmd --reload     //重新载入,更新防火墙规则
# systemctl restart firewalld   //重启防火墙
# firewall-cmd --state      //查看firewall的状态
//安装ftp
# yum -y install vsftpd
//查看ftp在SELinux的权限
# getsebool -a | grep ftp
getsebool:  SELinux is disabled
//vsftpd虚拟用户管理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。
//虚拟用户需用到的软件及认证模块
# yum -y install pam* libdb-utils libdb*
//创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,其中ftpuser001、ftpuser002为虚拟用户名,ftp2345为密码,如果有多个用户,依次格式填写即可
# cat /etc/vsftpd/ftpusers.txt 
ftpuser001
ftp2345
ftpuser002
ftp2345
//生成Vsftpd虚拟用户数据库认证文件,设置权限700
# db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
# chmod 700 /etc/vsftpd/vsftpd_login.db
//配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行
# cat /etc/pam.d/vsftpd 
auth       required     pam_userdb.so   db=/etc/vsftpd/vsftpd_login
account    required     pam_userdb.so   db=/etc/vsftpd/vsftpd_login
//所有Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:
# useradd -s /sbin/nologin ftpuser
//完整配置文件如下
# cat /etc/vsftpd/vsftpd.conf |grep -v "#"
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
//参数 config virtual user FTP
pam_service_name=vsftpd    //虚拟用户启用pam认证;
guest_enable=YES    //启用虚拟用户;
guest_username=ftpuser    //映射虚拟用户至系统用户ftpuser;
user_config_dir=/etc/vsftpd/vsftpd_user_conf     //设置虚拟用户配置文件所在的目录;
virtual_use_local_privs=YES    //虚拟用户使用与本地用户相同的权限。
//所有虚拟用户共同基于/home/ftpuser主目录实现文件上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录:
# mkdir -p /etc/vsftpd/vsftpd_user_conf
//分别为虚拟用户ftpuser001/ftpuser002创建配置文件,同时创建私有虚拟目录
# cat /etc/vsftpd/vsftpd_user_conf/ftpuser001 
local_root=/home/ftpuser/ftpuser001
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

# cat /etc/vsftpd/vsftpd_user_conf/ftpuser002
local_root=/home/ftpuser/ftpuser002
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
# mkdir -p /home/ftpuser/{ftpuser001,ftpuser002}
# chown -R ftpuser:ftpuser /home/ftpuser/
//虚拟用户配置文件内容详解:
local_root=/home/ftpuser/ftpuser001    //ftpuser001虚拟用户配置文件路径;
write_enable=YES    //允许登陆用户有写权限;       
anon_world_readable_only=YES    //允许匿名用户下载,然后读取文件;
anon_upload_enable=YES    //允许匿名用户上传文件,只有在write_enable=YES时该参数才生效;
anon_mkdir_write_enable=YES    //允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;
anon_other_write_enable=YES    //允许匿名用户其他权限,例如删除、重命名等。
//重启vsftpd服务以及测试
# systemctl restart vsftpd.service

来源 http://www.linuxidc.com/Linux/2017-06/144886.htm

你可能感兴趣的:(CentOS_7)