【背景】
Linux提供vsftp的FTP服务有三种账号:匿名账号、实体账号、虚拟账号。
匿名账号:顾名思义就是不要验证即可登录FTP服务
实体账号:Linux操作系统中的账号
虚拟账号:Linux操作系统中不存在的账号
在企业中不仅需要实体账号能登录、虚拟账号也能登录(类似windows下的Serv-u中新增的账号,非系统账号)
【实验环境】
一台Red Hat EL 6.4 x86_64Linux服务器,前提yum源已经配置,iptables防火墙已经清空,selinux已经关闭;一台Windows 7客户端。
【实验题目】
1、安装vsftp服务
2、配置vsftp,允许虚拟账号可以登录FTP服务
3、配置vsftp,虚拟、实体账号共同验证登录FTP服务
【实验内容1】
1)安装vsftp
yum install -y vsftp |
2)查看是否安装
【实验内容2】
1)修改/etc/vsftpd/vsftpd.conf
anonymous_enable=NO(当然你也可以设成YES,同时允许匿名用户登陆) local_enable=YES(必须置YES,因为虚拟用户是映射到virtual这个本地用户来访问的) guest_enable=YES(启用虚拟用户) guest_username=virtual(第5步中创建,将虚拟用户映射为本地virtual用户) pam_service_name=vsftpd.vu(第2步中创建,指定PAM配置文件,文件已经在/etc/pam.d/存在,注释原来的pam_service_name行) user_config_dir=/etc/vsftpd/user_conf(第7,8步中创建,指定不同虚拟用户配置文件的存放路径) |
2)在/etc/pam.d/中新增vsftpd.vu文档
authrequired pam_userdb.so db=/etc/vsftpd/vsftpd_login accountrequired pam_userdb.so db=/etc/vsftpd/vsftpd_login |
3)在/tmp新建logins.txt文档
user1(账号) 1(密码)(注意:必须是一行账号一行密码) |
4)建立访问者数据文件
db_load-T -t hash -f /tmp/logins.txt /etc/vsftpd/vsftpd_login.db |
5)建立本地虚拟用户
useradd-d /home/ftp -s /sbin/nologin virtual |
6)在/home/ftp/创建目录并改变其属性和它的拥有者
chownvirtual /home/ftp chmod700 /home/ftp |
7)创建ftp用户配制文件目录:/etc/vsftpd/user_conf
mkdir /etc/vsftpd/user_conf |
8)在/etc/vsftpd/user_conf目录中创建以用户名命名的配置文件user1
local_root=/home/ftp anon_world_readable_only=NO write_enable=YES(写权限) anon_mkdir_write_enable=YES(新建目录权限) anon_upload_enable=YES(上传权限) anon_other_write_enable=YES(删除/重命名的权限) |
9)启动vsftpd服务
service vsftpdrestart |
10)验证是否成功
【实验内容3】
在“实验内容2”中,修改了pam身份验证方式,那就会导致原来可以验证实体账号的身份失效。疑问:那有没有方法可以让实体、虚拟账号共存呢?是不是简单将虚拟账号的pam验证方式直接加入到原来vsftp的pam验证方式中呢?以下实验将讲解。
1)修改/etc/vsftpd/vsfptd.conf
pam_service_name=vsftpd(将实验2注释这一行启用,pam_service_name=vsftpd.vu) |
2)修改/etc/pam.d/vsftpd
#%PAM-1.0 session optional pam_keyinit.so force revoke auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login(新增了这行,注意auth验证改成了sufficient) auth required pam_listfile.so item=user sense=denyfile=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login(同样这里也改成了sufficient) account include password-auth session required pam_loginuid.so session include password-auth |
3)新增test1用户并更改密码
useradd test1 passwd test1 |
4)验证一下实体账号和虚拟账号是否都可以同时登陆