虚拟用户登录vsftpd服务器的两个实验
VSFTPD学习实验一:多虚拟用户,不同的权限,用户文件夹各自独立,且只能访问自己的文件夹。
需求场景模拟:1、建立两个用户,分别为ftpvip、ftpshare;2、每个用户有独立的网络和文件管理权限,且不能互相访问各自的文件夹;3、ftpvip可以上传、下载、删除、修改和重命名等权限;4、ftpshare仅可下载文件。
实验步骤:
1. 添加虚拟用户口令文件
- [root@localhost home]# vi /etc/vsftpd/vftpuser.txt
- ftpshare
- 123456
- ftpvip
- 123456
2. 生成虚拟用户口令认证文件
- [root@localhost home]# yum -y install db4-utils
- [root@localhost vsftpd]# db_load -T -t hash -f /etc/vsftpd/vftpuser.txt /etc/vsftpd/vftpuser.db
- [root@localhost vsftpd]# chmod 600 vftpuser.db //修改数据库文件的访问权限(防止非法访问)
3. 编辑vsftpd的PAM认证文件 www.xiaoxiongboke.com
[root@localhost vsftpd]# vi /etc/pam.d/vsftpd
将默认配置使用#全部注释
完整配置文件如下:
- #%PAM-1.0
- #session optional pam_keyinit.so force revoke
- #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
- #auth required pam_shells.so
- #auth include password-auth
- #account include password-auth
- #session required pam_loginuid.so
- #session include password-auth
- auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
- account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser #这里的vftpuser必须同vftpuser.db和vftpuser.txt的名称相同,不要后缀.db
4. 建立本地映射用户并设置宿主目录权限
- [root@localhost home]# mkdir -p ./ftpsite/ftpshare //需要重新测试是否需要这条命令,经测试,可不用呢
- [root@localhost home]# useradd -d /home/ftpsite/ftpshare -s /sbin/nologin ftpshare
- [root@localhost home]# useradd -d /home/ftpsite/ftpvip -s /sbin/nologin ftpvip
- [root@localhost home]# chmod -R 500 ./ftpsite/ftpshare
- [root@localhost home]# chmod -R 700 ./ftpsite/ftpvip
- [root@localhost home]# cd ftpsite/
- [root@localhost ftpsite]# ll
- 总用量 8
- dr-x------. 2 root root 4096 3月 17 15:12 ftpshare
- drwx------. 3 ftpvip ftpvip 4096 3月 17 15:16 ftpvip
5. 配置/etc/vsftpd/vsftpd.conf
全部配置文件如下(最好是备份并清空原有的配置信息):
- anonymous_enable=NO #等于NO时,禁止匿名登陆
- local_enable=YES #等于YES时,允许非匿名登录(包括虚拟用户登录)。
- listen=YES #必须有这个选项且等YES时,才能用/etc/init.d/vsftpd start这个命令启动VSFTPD服务。
- chroot_local_user=YES #必须有这个选项且等于YES,否则vsftpd的用户将可以访问Linux系统的根目录;等于YES时,就限制用户在其宿主目录内。
- pam_service_name=vsftpd #vsftpd 将要使用的PAM服务名称,也就是这个命令:vi /etc/pam.d/vsftpd 里面的文件名vsftpd。
- user_config_dir=/etc/vsftpd/vsftpd_user_conf #虚拟用户的配置文件存放在这里,需自己创建这个文件夹。
- max_clients=300 #设置FTP最大接入的客户端数为300个
- max_per_ip=10 #设置每个IP地址最大连接数为10
6、建立各个虚拟用户自身的配置文件
- [root@localhost vsftpd]# mkdir vsftpd_user_conf //创建虚拟用户的配置文件夹目录
- [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的配置文件如下:
- guest_enable=YES
- guest_username=ftpvip
- anon_world_readable_only=NO
- write_enable=YES #允许文件系统可写
- anon_mkdir_write_enable=YES #允许创建文件夹
- anon_upload_enable=YES #开启上传功能
- anon_other_write_enable=YES #允许其他权限比如重命令、删除文件及文件夹
- 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
- [root@localhost ~]# /etc/init.d/vsftpd restart //配置完毕,重启vsftpd服务
在浏览器里面输入:ftp://192.168.2.170 ,进行测试。IP是vsftpd服务器的地址。
VSFTPD学习实验二:创建多个虚拟用户,共享同一文件夹,但享有的权限不同;ftpusr仅可下载,ftpadmin可进行下载、上传、删除,重命名等。
实验步骤:
1. 添加虚拟用户口令文件
- [root@localhost vsftpd]# vi vftpuser.txt
- ftpuser
- 123456
- ftpadmin
- 123456
2、安装db4-utils并生成口令认证文件
- [root@localhost vsftpd]# yum -y install db4-utils
- [root@localhost vsftpd]# db_load -T -t hash -f vftpuser.txt vftpuser.db
- [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内容
- anonymous_enable=NO
- local_enable=YES
- listen=YES
- chroot_local_user=YES
- pam_service_name=vsftpd
- user_config_dir=/etc/vsftpd/vsftpd_user_conf
- max_clients=300
- max_per_ip=10
6、配置各虚拟用户的权限
- [root@localhost vsftpd]# mkdir /etc/vsftpd/vsftpd_user_conf
- [root@localhost vsftpd]# cd vsftpd_user_conf/
- [root@localhost vsftpd]# vi ftpuser //配置虚拟用户ftpuser的权限
- guest_enable=YES
- guest_username=ftpuser
- anon_world_readable_only=NO
- anon_max_rate=50000
- [root@localhost vsftpd]# vi ftpadmin //配置虚拟用户ftpadmin的权限
- guest_enable=YES
- guest_username=ftpuser
- anon_world_readable_only=NO
- write_enable=YES
- anon_mkdir_write_enable=YES
- anon_upload_enable=YES
- anon_other_write_enable=YES
- anon_max_rate=100000
7、关闭防火墙和selinux,启动vsftpd服务,并进行登录测试
- [root@localhost vsftpd]# /etc/init.d/iptables stop
- [root@localhost vsftpd]# setenforce 0 //临时关闭selinux
- [root@localhost vsftpd]# /etc/init.d/vsftpd restart
8、注意事项:在拷贝配置文件之前,请先备份原有路由器配置文件,并清空配置文件里面的内容;配置内容如果copy过去之后,在启动vsftpd的时候报错,请自己手动按照这个内容重新输入一次。