案例:为了FTP服务器的安全,不直接使用本地用户登录,使用虚拟用户验证机制,并对不同虚拟用户设置不同的访问权限。同时,为了保证服务器的整体性能,需要对上传/下载流量进行控制。
本地用户:user2
对应虚拟用户:zhang3、li4
虚拟用户的登录根目录:/ftp/public、/var/www/web2
访问权限:可以下载、可以上传和下载
1、安装vsftpd
步骤一
yum install -y vsftpd
2、配置环境
步骤二
//创建虚拟用户对应的本地用户,并设置用户主目录的访问权限
useradd user2 -s /sbin/nologin
mkdir -p /ftp/public
mkdir -p /var/www/web2
echo my test file > /ftp/public/1.txt
echo my test file > /var/www/web2/2.txt
chown user2. /ftp/public
chown user2. /var/www/web2/
chmod -R 755 /ftp/public
chmod -R 755 /var/www/web2
配置文件
步骤三
//创建虚拟用户名单文件vuser.txt
vi /etc/vsftpd/vuser.txt
zhang3 //指定虚拟用户的名称
123 //指定上一行虚拟用户的密码
li4
456
步骤四
//将虚拟用户明文文件vuser.txt转化为数据库文件v_user.db
db_load -T -t hash -f vuser.txt v_user.db
chmod 600 v_user.db
步骤五
//建立用户登录时进行身份验证的PAM认证文件。
vi /etc/pam.d/vuser.vu
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/v_user
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/v_user
步骤六
//添加对虚拟用户的支持
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
grep -v '#' /etc/vsftpd/vsftpd.conf_bak >/etc/vsftpd/vsftpd.conf
vi /etc/vsftpd/vsftpd.conf
#anonymous_enable=YES #注释掉匿名登录
local_enable=YES #使用虚拟用户一定要开启本地用户
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vuser.vu #指定对虚拟用户进行PAM认证的文件名vuser.vu
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES #启动虚拟用户功能,允许虚拟用户登录
guest_username=user2 #指定虚拟用户对应的本地用户
user_config_dir=/etc/vsftpd/vconfig #指定虚拟用户的配置文件的存放位置
virtual_use_local_privs=YES #虚拟用户和本地用户有相同的权限
allow_writeable_chroot=YES #修复对用户家目录因有写权限而使访问出错
步骤七
//为虚拟用户分别建立相关的配置文件
mkdir /etc/vsftpd/vconfig
vi /etc/vsftpd/vconfig/zhang3 #配置文件名要和虚拟用户名同名
local_root=/ftp/public/ #指定登录以后的位置
anon_world_readable_only=YES #允许浏览和下载
write_enable=NO #关闭写入开关
anon_max_rate=500000 #限定传输速率为500KB/s
vi /etc/vsftpd/vconfig/li4
local_root=/var/www/web2/
write_enable=YES #允许写入
anon_upload_enable=YES #允许上传
anon_mkdir_write_enable=YES #允许创建目录
anon_other_write_enable=YES #允许删除和修改
anon_max_rate=1000000 #限定传输速率为1000KB/s
步骤八
systemctl restart vsftpd
测试
虚拟用户zhang3登录到/ftp/public,可以下载、浏览文件,但不能上传
虚拟用户li4登录到/var/www/web2,可以下载、上传、浏览、删除文件