A-A+

虚拟用户登录vsftpd服务器的两个实验

2016年01月04日 站长资讯 暂无评论

VSFTPD学习实验一:多虚拟用户,不同的权限,用户文件夹各自独立,且只能访问自己的文件夹。

需求场景模拟:1、建立两个用户,分别为ftpvip、ftpshare;2、每个用户有独立的网络和文件管理权限,且不能互相访问各自的文件夹;3、ftpvip可以上传、下载、删除、修改和重命名等权限;4、ftpshare仅可下载文件。

实验步骤:

1. 添加虚拟用户口令文件

  1. [root@localhost home]# vi /etc/vsftpd/vftpuser.txt       
  2. ftpshare  
  3.    
  4. 123456  
  5. ftpvip  
  6. 123456  

2. 生成虚拟用户口令认证文件

  1. [root@localhost home]# yum -y install db4-utils  
  2. [root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db  
  3. [root@localhost vsftpd]# chmod 600 vftpuser.db   //修改数据库文件的访问权限(防止非法访问)  

3. 编辑vsftpd的PAM认证文件 www.xiaoxiongboke.com

[root@localhost vsftpd]# vi /etc/pam.d/vsftpd

将默认配置使用#全部注释

完整配置文件如下:

  1. #%PAM-1.0  
  2. #session    optional     pam_keyinit.so    force revoke  
  3. #auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed  
  4. #auth       required    pam_shells.so  
  5. #auth       include     password-auth  
  6. #account    include     password-auth  
  7. #session    required     pam_loginuid.so  
  8. #session    include     password-auth  
  9. auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser  
  10.    
  11. account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser     #这里的vftpuser必须同vftpuser.db和vftpuser.txt的名称相同,不要后缀.db  

4. 建立本地映射用户并设置宿主目录权限

  1. [root@localhost home]# mkdir -p ./ftpsite/ftpshare   //需要重新测试是否需要这条命令,经测试,可不用呢  
  2.    
  3. [root@localhost home]# useradd -d /home/ftpsite/ftpshare -s /sbin/nologin ftpshare  
  4. [root@localhost home]# useradd -d /home/ftpsite/ftpvip -s /sbin/nologin ftpvip  
  5.    
  6. [root@localhost home]# chmod -R 500 ./ftpsite/ftpshare  
  7.    
  8. [root@localhost home]# chmod -R 700 ./ftpsite/ftpvip  
  9. [root@localhost home]# cd ftpsite/  
  10. [root@localhost ftpsite]# ll  
  11. 总用量 8  
  12. dr-x------. 2 root   root   4096  3月 17 15:12 ftpshare  
  13. drwx------. 3 ftpvip ftpvip 4096  3月 17 15:16 ftpvip  

5. 配置/etc/vsftpd/vsftpd.conf

全部配置文件如下(最好是备份并清空原有的配置信息):

  1. anonymous_enable=NO        #等于NO时,禁止匿名登陆  
  2.    
  3. local_enable=YES     #等于YES时,允许非匿名登录(包括虚拟用户登录)。  
  4. listen=YES     #必须有这个选项且等YES时,才能用/etc/init.d/vsftpd start这个命令启动VSFTPD服务。  
  5. chroot_local_user=YES      #必须有这个选项且等于YES,否则vsftpd的用户将可以访问Linux系统的根目录;等于YES时,就限制用户在其宿主目录内。  
  6.    
  7. pam_service_name=vsftpd     #vsftpd 将要使用的PAM服务名称,也就是这个命令:vi /etc/pam.d/vsftpd 里面的文件名vsftpd。  
  8. user_config_dir=/etc/vsftpd/vsftpd_user_conf       #虚拟用户的配置文件存放在这里,需自己创建这个文件夹。  
  9. max_clients=300      #设置FTP最大接入的客户端数为300个  
  10.   
  11. max_per_ip=10        #设置每个IP地址最大连接数为10   

6、建立各个虚拟用户自身的配置文件

  1. [root@localhost vsftpd]# mkdir vsftpd_user_conf    //创建虚拟用户的配置文件夹目录  
  2.    
  3. [root@localhost vsftpd_user_conf]# vi /etc/vsftpd/vsftpd_user_conf/ftpshare     //创建虚拟用户ftpshare的配置文件  

虚拟用户ftpshare的配置文件如下,这个权限仅允许下载文件:

guest_enable=YES #等于YES时,开启虚拟帐号登录

guest_username=ftpshare #设置ftp对应的Linux系统帐号为ftpshare,用useradd命令创建的,在/etc/passwd里可以看到的。

anon_world_readable_only=NO #等于YES时,仅允许匿名具有下载可读档案的权限;等于NO时,所有用户(系统和虚拟用户)都具有下载可读档案的权限。

anon_max_rate=50000 #限定传输速率为50KB/s

[root@localhost vsftpd_user_conf]# vi /etc/vsftpd/vsftpd_user_conf/ftpvip //创建虚拟用户ftpvip的配置文件

虚拟用户ftpvip的配置文件如下:

  1. guest_enable=YES  
  2. guest_username=ftpvip  
  3. anon_world_readable_only=NO  
  4.    
  5. write_enable=YES     #允许文件系统可写  
  6. anon_mkdir_write_enable=YES    #允许创建文件夹  
  7. anon_upload_enable=YES    #开启上传功能  
  8. anon_other_write_enable=YES     #允许其他权限比如重命令、删除文件及文件夹  
  9. anon_max_rate=100000  

7、注意事项:两个虚拟用户的宿主目录的权限,用户与组信息如下。

实验的时候,出现过ftpshare用户能够登陆,就是看不到相应的文件,后来发现是这个文件夹的用户和组都是root

dr-x------. 2 ftpshare ftpshare 4096 3月 17 16:23 ftpshare

drwx------. 7 ftpvip ftpvip 4096 3月 17 17:22 ftpvip

8、进行账号登陆测试

注意:关闭防火墙和selinux

  1. [root@localhost ~]# /etc/init.d/vsftpd restart     //配置完毕,重启vsftpd服务  

在浏览器里面输入:ftp://192.168.2.170 ,进行测试。IP是vsftpd服务器的地址。

VSFTPD学习实验二:创建多个虚拟用户,共享同一文件夹,但享有的权限不同;ftpusr仅可下载,ftpadmin可进行下载、上传、删除,重命名等。

实验步骤:

1. 添加虚拟用户口令文件

  1. [root@localhost vsftpd]# vi vftpuser.txt  
  2. ftpuser  
  3. 123456  
  4. ftpadmin  
  5. 123456  

2、安装db4-utils并生成口令认证文件

  1. [root@localhost vsftpd]# yum -y install db4-utils  
  2. [root@localhost vsftpd]# db_load -T -t hash -f vftpuser.txt vftpuser.db  
  3.    
  4. [root@localhost vsftpd]# chmod 600 vftpuser.db  

3、编辑vsftpd的PAM认证文件

[root@localhost vsftpd]# vi /etc/pam.d/vsftpd

将默认配置使用#全部注释,并添加如下参数:

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser

account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser

4、创建虚拟用户的系统用户及宿主目录,检查宿主目录的用户和用户组

[root@localhost vsftpd]# useradd -d /home/ftpsite -s /sbin/nologin ftpuser

[root@localhost home]# ll

总用量 4

drwx------ 4 ftpuser ftpuser 4096 3月 24 19:32 ftpsite

5、配置/etc/vsftpd/vsftpd.conf内容

  1. anonymous_enable=NO  
  2. local_enable=YES  
  3. listen=YES  
  4. chroot_local_user=YES  
  5. pam_service_name=vsftpd  
  6. user_config_dir=/etc/vsftpd/vsftpd_user_conf  
  7. max_clients=300  
  8. max_per_ip=10  

6、配置各虚拟用户的权限

  1. [root@localhost vsftpd]# mkdir /etc/vsftpd/vsftpd_user_conf  
  2. [root@localhost vsftpd]# cd vsftpd_user_conf/  
  3.    
  4. [root@localhost vsftpd]# vi ftpuser     //配置虚拟用户ftpuser的权限  
  5.    
  6. guest_enable=YES  
  7. guest_username=ftpuser  
  8. anon_world_readable_only=NO  
  9. anon_max_rate=50000  
  10. [root@localhost vsftpd]# vi ftpadmin      //配置虚拟用户ftpadmin的权限  
  11.    
  12. guest_enable=YES  
  13. guest_username=ftpuser  
  14. anon_world_readable_only=NO  
  15. write_enable=YES  
  16. anon_mkdir_write_enable=YES  
  17. anon_upload_enable=YES  
  18. anon_other_write_enable=YES  
  19. anon_max_rate=100000    

7、关闭防火墙和selinux,启动vsftpd服务,并进行登录测试

  1. [root@localhost vsftpd]# /etc/init.d/iptables stop  
  2.    
  3. [root@localhost vsftpd]# setenforce 0          //临时关闭selinux  
  4.    
  5. [root@localhost vsftpd]# /etc/init.d/vsftpd restart  

8、注意事项:在拷贝配置文件之前,请先备份原有路由器配置文件,并清空配置文件里面的内容;配置内容如果copy过去之后,在启动vsftpd的时候报错,请自己手动按照这个内容重新输入一次。

标签:

给我留言