工作中需要开放指定的目录给开发上传下载修改的权限,出于安全考虑,需要配置vsftpd虚拟用户。


概念:

vsftpd虚拟用户:不是系统用户,即虚拟用户在系统中是不存在的,不能用来登录系统。他们的总体权限其实是集中寄托在一个真实存在的用户(即虚拟宿主用户)身上。


vsftpd的虚拟宿主用户:真实存在的用户,是所有虚拟用户的宿主用户。由于他支撑了FTP的所有虚拟的用户,所以虚拟宿主用户的权限将会影响着这些虚拟的用户。出于安全性考虑,要非常注意对该用户的权限的控制,该用户绝对没有登陆系统的必要,这里也设定为不能登陆系统的用户。


开放的目录:/data1/www

指定访问的用户名:website

密码:website9988


安装vsftpd、pam、db4、db4-utils

pam: 是认证模块

db4/db4-utils:用来生成Berkeley DB 格式的数据库

yum -y install vsftpd pam* db4*

添加真实用户(宿主用户)

useradd -s /sbin/nologin vsftpd

建立虚拟用户帐号密码文件

奇数行为账号,偶数行为密码

vim /etc/vsftpd/virtual_user.txt   //virtual_user.txt自己起的文件名,可以添加多个帐号密码
website
website9988

生成vsftpd虚拟用户数据库文件

cd /etc/vsftpd
db_load -T -t hash -f virtual_user.txt virtual_user.db
chmod 600 virtual_user.db

PAM设置

注释掉原来的所有行,并添加如下三行

vim /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     pam_userdb.so db=/etc/vsftpd/virtual_user
account    required     pam_userdb.so db=/etc/vsftpd/virtual_user
session    required     pam_loginuid.so

配置vsftpd.conf文件

原文件中没有的参数,就要添加

vim /etc/vsftpd/vsftpd.com
anonymous_enable=NO       #修改此行禁用匿名用户访问,YES改为NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES       #开启日志记录
connect_from_port_20=YES
xferlog_std_format=YES   #日志记录格式
listen=YES
pam_service_name=vsftpd  #设置PAM使用的名称,该名称就是/etc/pam.d/目录下vsfptd文件的文件名
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES         #开启虚拟用户功能,即映射虚拟用户与真实用户
guest_username=vsftpd    #指定真实用户,vsftpd就是上面添加的用户
user_config_dir=/etc/vsftpd/user_conf    #指定虚拟用户配置目录,此目录要自己创建
chroot_local_user=YES    #锁定虚拟用户只能操作指定目录

单独给虚拟用户分配权限

mkdir /etc/vsftpd/user_conf    #创建虚拟用户配置目录


vim /etc/vsftpd/user_conf/website.conf   #website.confj是自己起的文件名

local_root=/data1/www
write_enable=YES
anon_upload_enable=YES        #允许上传
anon_mkdir_write_enable=YES   #允许虚拟用户创建目录
anon_other_write_enable=YES   #允许拥有除了上传和新建目录之外的其他权限,如删除、更名等
anon_world_readable_only=NO   #允许虚拟用户浏览整个服务器的文件系统
virtual_use_local_privs=YES   #虚拟用户和本地用户有相同的权限


重启vsftpd并测试

service vsftpd restart


用用户名密码测试:website/website9988

Linux:  ftp 188.188.0.173

Window: ftp://188.188.0.173