OS : CentOS Linux release 7.2.1511 (Core)

要求:

路径 权限 备注
/home/ftp 公司所有人员包括来宾均可以访问 只读
/tmp 仅允许web, zrd三个人访问 web只允许下载,zrd可以上传 均使用虚拟账户

1、安装:

yum install -y -q vsftpd

2、创建用户

a、系统映射用户

useradd -d /home/ftp -s /sbin/nologin vftpuser

所有虚拟用户有增改权限最终都会映射成vftpuser属主组, 所以vftpuser必须要有目录的权限虚拟用户才能跳转到这个目录进行操作(增删改)

b、虚拟用户

奇数为用户名,偶数行为密码

cat >/tmp/ftpuser.txt<<EOF
web
123456
admin
123456
zrd
123456
EOF

c、虚拟用户文件转换成加密文件

db_load -T -t hash -f /tmp/ftpuser.txt /etc/vsftpd/vftpuser.db

3、修改/etc/vsftpd/vsftpd.conf配置

// # 在最后添加

# 匿名用户根目录位置
anon_root=/home/ftp
virtual_use_local_privs=YES
guest_enable=YES
# 映射到系统的用户
guest_username=vftpuser
chroot_local_user=YES
allow_writeable_chroot=YES
# 虚拟用户配置目录
user_config_dir=/etc/vsftpd/user_conf

4、虚拟用户权限配置

虚拟用户对应的系统用户要有这个目录的权限否则无法操作

mkdir /etc/vsftpd/user_conf/

a、有读写删权限的用户

cat >/etc/vsftpd/user_conf/zrd<<EOF
# 用户登录时默认的家目录(vftpuser映射的系统用户需要拥有这个目录的权限)
local_root=/home/ftp
anon_world_readable_only=NO
# 对应的权限为755
anon_umask=022
# 新建目录权限
anon_mkdir_write_enable=YES
# 上传权限
anon_upload_enable=YES
# 删除/重命名的权限
anon_other_write_enable=YES
EOF

b、只有读下载权限的用户

cat >/etc/vsftpd/user_conf/web<<EOF
local_root=/home/ftp
anon_world_readable_only=NO
write_enable=NO
EOF

5、配置pam文件

vim /etc/pam.d/vsftpd

#%PAM-1.0
session optional pam_keyinit.so force revoke
# 注释掉以下4行
#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
# /etc/vsftpd/vftpuser为生成 /etc/vsftpd/vftpuser.db文件.db不要填写否则报错
# 添加下面两行
auth required pam_userdb.so db=/etc/vsftpd/vftpuser
account required pam_userdb.so db=/etc/vsftpd/vftpuser

6、启动服务