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

posted @ 2019-02-15 15:58  Awakenedy  阅读(562)  评论(0)    收藏  举报