实现虚拟用户zhangsan、lisi从客户端通过ftp登录到远程主机,并设置zhangsan、lisi不同的操作权限;
二、实验步骤:- 第1步 :
-创建用于FTP认证的用户数据库文件:
[root@linuxprobe ~]# cd /etc/vsftpd [root@linuxprobe vsftpd]# cat > vuser.list zhangsan redhat lisi redhat
用db_load工具将数据用HASH算法加密,生成新的用户数据库文件:
[root@linuxprobe vsftpd]# db_load -T -t hash -f vuser.list vuser.db [root@linuxprobe vsftpd]# file vuser.db vuser.db: Berkeley DB (Hash, version 9, native byte-order)
- 第2步:
创建虚拟用户登录后所访问的默认位置,创建虚拟用户登录后所映射的本地用户:
[root@linuxprobe vsftpd]# useradd -d /var/ftproot -s /sbin/nologin vftpuser [root@linuxprobe vsftpd]# ll -d /var/ftproot drwx------. 3 vftpuser vftpuser 78 Oct 28 19:31 /var/ftproot [root@linuxprobe vsftpd]# chmod 755 -Rf /var/ftproot [root@linuxprobe vsftpd]# ll -d /var/ftproot drwxr-xr-x. 3 vftpuser vftpuser 78 Oct 28 19:31 /var/ftproot
- 第3步:
建立用于支持虚拟用户的PAM文件:
[root@linuxprobe vsftpd]# cat > /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
- 第4步:
修改vsftp服务的主配文件,通过pam_serice_name来设置刚才编写的vsftpd.vu:
guest_enable=YES #开启虚拟用户模式 guest_username=vftpuser #设置虚拟用户映射的本地用户 pam_service_name=vsftpd.vu #设置虚拟用户验证pam allow_writeable_chroot=YES #允许对FTP根目录执行写入操作
- 第5步
对虚拟用户设置不同的权限,zhangsan有创建、修改、删除、查看权限,lisi只允许查看权限:
[root@linuxprobe vsftpd]# mkdir /etc/vsftpd/vusers_dir [root@linuxprobe vsftpd]# touch /etc/vsftpd/vusers_dir/lisi [root@linuxprobe vsftpd]# cat > /etc/vsftpd/vusers_dir/zhangsan local_root=/var/ftproot anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES write_enable=YES
然后修改vsftpd主配文件,用user_config_dir来指定用户不同权限的配置文件的路径:
user_config_dir=/etc/vsftpd/vusers_dir
- 第6步
检查SELinux的域允许策略,然后在客户端通过FTP来验证实验结果。
[root@linuxprobe vsftpd]# 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
[root@servera ~]# ftp 192.168.137.10 Connected to 192.168.137.10 (192.168.137.10). 220 (vsFTPd 3.0.2) Name (192.168.137.10:root): lisi 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> mkdir lisi 550 Permission denied. ftp> exit 221 Goodbye. [root@servera ~]# ftp 192.168.137.10 Connected to 192.168.137.10 (192.168.137.10). 220 (vsFTPd 3.0.2) Name (192.168.137.10:root): zhangsan 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> mkdir zhangsan 257 "/zhangsan" created ftp> rename zhangsan zs 350 Ready for RNTO. 250 Rename successful. ftp> rmdir zs 250 Remove directory operation successful. ftp> exit 221 Goodbye.



