支持虚拟用户的vsftp 

1 安装 vsftp 

 yum install vsftpd* 

2 安装 pam 

 yum install pam* 

3 安装 db4 支持文件数据库 

 yum install db4* 

------------------------------------ 

创建用户 

1 创建vsftpd服务的宿主用户 

# useradd vsftpd -s /sbin/nologin 可参阅linux useradd 命令 

2 创建vsftpd虚拟宿主用户 

# useradd myftp -s /sbin/nologin 

由于虚拟用户并不是系统用户,也就是ftp 用户在系统中并不存在的。他们的权限是集中寄托在某一个系统用户中的。所谓vsftpd的虚拟宿主用户就是一个支持所有虚拟用户的宿主用户。 

由于他支持所有的虚拟用户,所以他本身的权限会影响所有的虚拟用户。因此处于安全考虑需要调整 vsftpd 配置文件。 

3 调整 vsftpd 配置文件 

 1 编辑前现备份 

 # cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak 

 2 编辑 vsftpd.conf 

 # vi /etc/vsftpd/vsftpd.conf 


#anonymous_enable=YES 

anonymous_enable=NO 

设置不允许匿名用户登录 

local_enable=YES 

设置本地用户可以访问 

#chown_uploads=YES 

chown_uploads=NO 


#chown_username=whoever 

chroot_local_user=YES 

设定登录后只可以访问自己的属性目录,不可以访问上一目录 


#nopriv_user=ftpsecure 

nopriv_user=vsftpd 


#async_abor_enable=YES 

async_abor_enable=YES 

支持异步传输功能 


ascii_upload_enable=YES 

ascii_download_enable=YES 


ftpd_banner=Welcome to blah FTP service. 


#chroot_list_enable=YES 

chroot_list_enable=NO 

禁止登出自己的ftp主目录 


#ls_recurse_enable=YES 

ls_recurse_enable=NO 


guest_enable=YES 

设定启用虚拟用户功能 

guest_username=myftp 

指定虚拟用户的宿主用户 

virtual_use_local_privs=YES 

设定虚拟用户的权限符合他们的宿主用户 

user_config_dir=/etc/vsftpd/vconf 

设定个人用户的配置文件 vsftpd.conf 的存放目录 


 3 创建 vsftpd 的日志文件,并更改为宿主为 vsftpd 的服务宿主用户 

 # touch /var/log/vsftpd.log 

 # chown vsftpd.vsftpd /var/log/vsftpd.log 

 4 创建虚拟用户配置文件存放路径 

 # mkdir /etc/vsftpd/vconf/ 


---------------------------------------- 

制作虚拟用户数据库文件 

1 # touch /etc/vsftpd/myftp 

2 # vi /etc/vsftpd/myftp 

 myftpname 

 myftppassword 

 . . . . . . 

 一行用户,一行密码 

3 用户数据文件 

 # db_load -T -t hash -f /etc/vsftpd/myftp /etc/vsftpd/myftp.db 

 注意: 添加用户后,需要再次 db_load 


----------------------------------------- 

设定PAM验证文件,并指定虚拟用户数据库文件进行读取 

1 查看原来的vsftpd的PAM 验证配置文件: 

 # cat /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 system-auth 

account include system-auth 

session include system-auth 

session required pam_loginuid.so 


2 在编辑前现备份好文件 

 # cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak 


3 编辑vsftpd 

 # vi /etc/pam.d/vsftpd 

 注释所有,并添加以下两行 

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

session required /lib/security/pam_userdb.so db=/etc/vsftpd/myftp 


--------------------------------------- 

虚拟用户的配置 

1 创建虚拟用户的主路径 

# mkdir /opt/vsftp/ 

2 创建用户的ftp用户目录 

# mkdir /opt/vsftp/myftpname 

3 创建虚拟用户模板 

# cp /etc/vsftpd/vsftpd.conf.bak /etc/vsftpd/vconf/vsftpd.tmp 

4 编辑虚拟用户 

# vi /etc/vsftpd/vconf/vsftpd.tmp 


local_root=/opt/vsftpd/myftp 

pam_service_name=vsftpd 

chroot_local_user=YES 


myftp 这个就是以后要指定虚拟的具体主要路径 

5 更改虚拟用户的主目录的属性为虚拟宿主用户 

# chowm -R myftp.myftp /opt/vsftp/ 

6 检测权限 

# ll /opt/vsftp/ 


-------------------- 

定制测试用户 

 1 从虚拟用户模板复制 

 # cp /etc/vsftpd/vconf/vsftpd.tmp /etc/vsftpd/vconf/myftpname 

 2 针对用户进行定制 

 # vi /etc/vsftpd/vconf/myftpname 

local_root=/opt/vsftpd/myftpname 

pam_service_name=vsftpd 

chroot_local_user=YES 


--------------------- 

service vsftpd restart