vsftpd配置虚拟用户实践
工作中需要开放指定的目录给开发上传下载修改的权限,出于安全考虑,需要配置vsftpd虚拟用户。概念:
vsftpd虚拟用户:不是系统用户,即虚拟用户在系统中是不存在的,不能用来登录系统。他们的总体权限其实是集中寄托在一个真实存在的用户(即虚拟宿主用户)身上。
vsftpd的虚拟宿主用户:真实存在的用户,是所有虚拟用户的宿主用户。由于他支撑了FTP的所有虚拟的用户,所以虚拟宿主用户的权限将会影响着这些虚拟的用户。出于安全性考虑,要非常注意对该用户的权限的控制,该用户绝对没有登陆系统的必要,这里也设定为不能登陆系统的用户。
开放的目录:/data1/www
指定访问的用户名:website
密码:website9988
安装vsftpd、pam、db4、db4-utils
pam: 是认证模块
db4/db4-utils:用来生成Berkeley DB 格式的数据库
1
yum -y install vsftpd pam* db4*
添加真实用户(宿主用户)
1
useradd -s /sbin/nologin vsftpd
建立虚拟用户帐号密码文件
奇数行为账号,偶数行为密码
1
2
3
vim /etc/vsftpd/virtual_user.txt //virtual_user.txt自己起的文件名,可以添加多个帐号密码
website
website9988
生成vsftpd虚拟用户数据库文件
1
2
3
cd /etc/vsftpd
db_load -T -t hash -f virtual_user.txt virtual_user.db
chmod 600 virtual_user.db
PAM设置
注释掉原来的所有行,并添加如下三行
1
2
3
4
5
6
7
8
9
10
11
12
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文件
原文件中没有的参数,就要添加
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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是自己起的文件名
1
2
3
4
5
6
7
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
新建文件夹的时候报 550 Permission denied.
页:
[1]