4.2.3虚拟用户模式

1.创建用于虚拟用户模式下进行FTP认证的用户数据库文件

其中奇数行为账户名,偶数行为密码。例如,分别创建dsrwcom和dsrwcn两个用户,密码均为111111
[root@dsrw ~]#  cd /etc/vsftpd
[root@dsrw vsftpd]# vim vuser.list
dsrwcom
111111
dsrwcn
111111

2.使用db_load命令用哈希(hash)算法

将原始的明文信息文件转换成数据库文件,并且改变数据库文件的权限,删除原始的明文信息文件。
[root@dsrw vsftpd]# db_load -T -t hash -f vuser.list vuser.db
[root@dsrw vsftpd]# chmod 600 vuser.db
[root@dsrw vsftpd]# rm -f vuser.list

3.创建vsftpd服务程序用于存储文件的根目录以及用于虚拟用户映射的系统本地用户。

让虚拟用户默认登录到与之有映射关系的这个系统本地用户的家目录中,拟用户创建的文件的属性也都归属于这个系统本地用户,从而避免Linux系统无法处理虚拟用户所创建文件属性权限。
[root@dsrw ~]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@dsrw ~]# ls -ld /var/ftproot
drwx------. 3 virtual virtual 78 12月 20 13:42 /var/ftproot
[root@dsrw ~]# chmod -Rf 755 /var/ftproot/

4.建立用于支持虚拟用户的PAM文件。

auth    required pam_userdb.so db=/etc/vsftpd/vuser
account  required pam_userdb.so db=/etc/vsftpd/vuser  

5.修改vsftpd服务程序的主配置文件

中通过pam_service_name参数将PAM认证文件的名称修改为vsftpd.vu。
  1 anonymous_enable=NO
  2 local_enable=YES
  3 write_enable=YES
  4 guest_enable=YES
  5 guest_username=virtual
  6 allow_writeable_chroot=YES
  7 local_umask=022
  8 dirmessage_enable=YES
  9 xferlog_enable=YES
 10 connect_from_port 20=YES
 11 xferlog_std_format=YES
 12 listen=NO
 13 listen_ipv6=YES
 14 pam_service_name=vsftpd.vu
 15 userlist_enable=YES

6.为虚拟用户设置不同的权限,修改配置文件并重新启动服务。

[root@dsrw ~]# mkdir /etc/vsftpd/vusers_dir
[root@dsrw ~]# cd /etc/vsftpd/vusers_dir
[root@dsrw vusers_dir]# touch dsrwcom
[root@dsrw vusers_dir]# vim dsrwcn
  1 anon_upload_enable=YES
  2 anon_mkdir_write_enable=YES
  3 anon_other_write_enable=YES
[root@dsrw vusers_dir]# vim /etc/vsftpd/vsftpd.conf
  anonymous_enable=NO
local_enable=YES
write_enable=YES
guest_enable=YES
guest_username=virtual
allow_writeable_chroot=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=vsftpd.vu
userlist_enable=YES
user_config_dir=/etc/vsftpd/vusers_dir

[root@dsrw vusers_dir]# systemctl restart vsftpd
[root@dsrw vusers_dir]# systemctl enable vsftpd

7.SELinux域策略设置允许FTP

[root@dsrw ~]# setsebool -P ftpd_full_access=on
[root@dsrw ~]# getsebool -a|grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> off

8.使用dsrwcom和dsrwcn账户登录测试权限

[root@dsrw ~]# ftp 192.168.10.2
Connected to 192.168.10.2 (192.168.10.2).
220 (vsFTPd 3.0.3)
Name (192.168.10.2:root): dsrwcom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir dsrwcom
550 Permission denied.
ftp> exit
221 Goodbye.

[root@dsrw ~]# ftp 192.168.10.2
Connected to 192.168.10.2 (192.168.10.2).
220 (vsFTPd 3.0.3)
Name (192.168.10.2:root): dsrwcn
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir dsrwcn
257 "/dsrwcn" created
ftp> rename dsrwcn dsrwcom
350 Ready for RNTO.
250 Rename successful.
ftp> rmdir dsrwcom
250 Remove directory operation successful.
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称

    请登录后查看评论内容