【背景】

Linux提供vsftpFTP服务有三种账号:匿名账号、实体账号、虚拟账号。

    

匿名账号:顾名思义就是不要验证即可登录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)查看是否安装

wKioL1S0xTLQpFY9AAAgYh_P_AM356.jpg

 

【实验内容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)验证是否成功

wKiom1S0xrfToTc5AADvOA_kqpw798.jpg

【实验内容3

实验内容2”中,修改了pam身份验证方式,那就会导致原来可以验证实体账号的身份失效。疑问:那有没有方法可以让实体、虚拟账号共存呢?是不是简单将虚拟账号的pam验证方式直接加入到原来vsftppam验证方式中呢?以下实验将讲解。

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)验证一下实体账号和虚拟账号是否都可以同时登陆

wKiom1S0x07T-GmzAAHZkXeVK_E709.jpg