虚拟用户的特点是只能访问服务器为其提供的FTP服务,不能访问系统的其它资源,所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其他资源,可以使用虚拟用户来提高系统的安全性。
在vsftpd中,谁这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证。使用这种方式更加安全,并且配置更加灵活。
安装vsftpd,Berkeley Database(db4)
yum install vsftpd db4-utils db4 -y
创建虚拟用户数据库
vim /home/virtual_users.txt
senthil
centos
执行下面命令创建数据库
db_load -T -t hash -f /home/virtual_users.txt /etc/vsftpd/virtual_users.db
创建PAM文件
vim /etc/pam.d/vsftpd_virtual
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/virtual_users
account required pam_userdb.so db=/etc/vsftpd/virtual_users
session required pam_loginuid.so
vsftpd配置文件
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO
pam_service_name=vsftpd_virtual
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
#启用虚拟用户
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/ftp/virtual/$USER
hide_ids=YES
allow_writeable_chroot=YES
#避免客户端500错误
为虚拟用户创建家目录
mkdir -p /ftp/virtual/senthil
chown -R ftp:ftp /ftp/virtual/senthil/
启动服务
systemctl start vsftpd
测试
C:\Users\Administrator>ftp 192.168.2.72
连接到 192.168.2.72。
220 (vsFTPd 3.0.2)
用户(192.168.2.72:(none)): senthil
331 Please specify the password.
密码:
230 Login successful.
ftp> dir
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 ftp ftp 670293 Feb 04 03:09 abc
-rw-r--r-- 1 ftp ftp 670293 Feb 04 03:08 services
226 Directory send OK.
ftp: 收到 127 字节,用时 0.00秒 127.00千字节/秒。
ftp> get services
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for services (670293 bytes).
226 Transfer complete.
ftp: 收到 670293 字节,用时 0.02秒 35278.58千字节/秒。
ftp>
参考资料:https://www.unixmen.com/install-vsftp-with-virtual-users-on-centos-rhel-scientific-linux-6-4/