FTP服务器的搭建及创建虚拟用户进行认证访问
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
1 安装所需软件包:
yum install vsftpd db4-utils
2 建立虚拟用户映射的系统用户
useradd -d /home/test -s /sbin/nologin test
chmod 700 /home/test/
3 配置虚拟用户
3.1 建立虚拟用户口令库文件
cd /etc/vsftpd/
vim vusers.txt (第一行写 用户名,第二行写 密码,保存退出)
-----------------------------------------
test1
passwd1
test2
passwd2
-----------------------------------------
3.2 利用口令库文件生成hash认证文件
db_load -T -t hash -f vusers.txt /etc/vsftpd/vusers.db
chmod 600 /etc/vsftpd/vusers.db
3.3 建立虚拟用户所需的PAM配置文件
vim /etc/pam.d/vusers
---------------------------------------------------------------------
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vusers
--------------------------------------------------------------------
3.4 对不同虚拟用户创建不同的配置文件,权限不同
mkdir /etc/vsftpd/vusers
mkdir /home/test/{test1,test2}
vim /etc/vsftpd/vusers/test1
--------------------------------------------------------------------
#虚拟用户的家目录
local_root=/home/test/test1
#允许本地用户在服务器执行写入(上传)操作
write_enable=YES
#虚拟用户具有与本地用户一样的权限
virtual_use_local_privs=YES
--------------------------------------------------------------------
vim /etc/vsftpd/vusers/test2
--------------------------------------------------------------------
#虚拟用户的家目录
local_root=/home/test/test1
#设置虚拟用户不具有与本地用户一样的权限
virtual_use_local_privs=no
#允许本地用户在服务器执行写入(上传)操作
write_enable=YES
#开放下载权限
anon_world_readable_only=no
#开放上传权限
anon_upload_enable=yes
--------------------------------------------------------------------
4 配置vsftp主配置文件
vim /etc/vsftpd/vsftp.conf
--------------------------------------------------------------------
#禁止匿名用户登录
anonymous_enable=NO
#允许本地用户登录ftp服务器
local_enable=YES
#设置服务器上本地用户创建文件的权限掩码
local_umask=022
#启用日志文件功能
xferlog_enable=YES
#日志文件存放路径
xferlog_file=/var/log/vsftpd.log
#启用标准的日志格式
xferlog_std_format=YES
#主动模式下,启用默认的20端口进行数据传输
connect_from_port_20=YES
#被动模式
#pasv_enable=yes
#pasv_min_port=4500
#pasv_max_port=5000
#限制用户活动在家目录下
chroot_local_user=YES
#vsftpd以独立的服务方式运行
listen=YES
#启用允许用户访问的列表
userlist_enable=YES
#仅允许用户访问列表文件中的用户登录
#NO为白名单,YES为黑名单
userlist_deny=NO
#允许访问的用户列表存储文件
userlist_file=/etc/vsftpd/user_list
#检查/etc/hosts.allow和/etc/hosts.deny文件来控制主机访问
tcp_wrappers=YES
#最多允许的客户端
max_clients=10
#每个ip最多允许的连接数
max_per_ip=100
#虚拟用户使用PAM认证方式,名称需要和/etc/pam.d/下的名称一致
pam_service_name=vusers
#开启虚拟用户访问权限
guest_enable=yes
#设置虚拟用户的映射的系统用户
guest_username=test
#设置虚拟用户的配置文件目录
user_config_dir=/etc/vsftpd/vusers
----------------------------------------------------------------------
5 编辑允许访问的用户列表
vim /etc/vsftpd/user_list
------------------------------------------------------------------------
test1
test2
------------------------------------------------------------------------
6 启动vsftpd服务并加入开机启动
service vsftpd restart
chkconfig vsftpd on
7 附:virtual_use_local_privs参数
当virtual_use_local_privs=YES时,虚拟用户和本地用户有相同的权限;
当virtual_use_local_privs=NO时,虚拟用户和匿名用户有相同的权限,默认是NO。
当virtual_use_local_privs=YES,write_enable=YES时,虚拟用户具有写权限(上传、下载、删除、重命名)。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,
anon_upload_enable=YES时,虚拟用户不能浏览目录,只能上传文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=NO时,虚拟用户只能下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_upload_enable=YES时,虚拟用户只能上传和下载文件,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_mkdir_write_enable=YES时,虚拟用户只能下载文件和创建文件夹,无其他权限。
当virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,
anon_other_write_enable=YES时,虚拟用户只能下载、删除和重命名文件,无其他权限。