虚拟用户的特点是只能访问服务器为其提供的 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>
参考资料:
来源: http://www.bubuko.com/infodetail-2944653.html