工作中需要开放指定的目录给开发上传下载修改的权限,出于安全考虑,需要配置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