1 查看系统当前服务状态
service --status-all

2 停用当前ftp服务以免端口占用
Pure-FTPd

3 安装vsftpd
yum install vsftpd

4 默认配置项说明
vim /etc/vsftpd/vsftpd.conf

#关闭匿名用户访问
anonymous_enable=NO
#允许用户写权限
allow_writeable_chroot=YES
#本地用户锁定在自己的主目录中
chroot_local_user=YES
#不使用chroot_list_file指定的用户列表,没有任何“例外”用户
chroot_list_enable=NO
#主动模式端口为20
connect_from_port_20=YES
#日志路径在vsftpd_log_file
dual_log_enable=YES
#启用虚拟用户
guest_enable=YES
#虚拟用户映射为本地用户
guest_username=huchangyi
#ipv4
listen=YES
#ipv6
listen_ipv6=NO
#允许本地用户登录
local_enable=YES
#建立文件夹的权限为777-022=755
local_umask=022
#可插拔验证模块名称
pam_service_name=vsftpd
#主动
port_enable=YES
#被动
pasv_enable=YES
#被动模式传输数据的端口范围
pasv_min_port=10000
#被动模式传输数据的端口范围
pasv_max_port=10000
#屏蔽ftpusers列表中的用户
userlist_enable=YES
#屏蔽user_list列表中的用户
userlist_deny=YES
#user_list列表路径
userlist_file=/etc/vsftpd/user_list
#虚拟用户文件夹路径
user_config_dir=/etc/vsftpd/user_conf
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/etc/vsftpd/ftp.log
vsftpd_log_file=/etc/vsftpd/vsftpd.log
#对登录用户开启写权限
write_enable=YES

5 查看系统用户
cat /etc/passwd

6 虚拟用户权限独立控制
mkdir /etc/vsftpd/user_conf
vim /etc/vsftpd/user_conf/test

write_enable=YES
#虚拟用户和本地用户有相同的权限
#virtual_use_local_privs=YES
#不是只读
anon_world_readable_only=NO
#下载
anon_upload_enable=YES
#下载文件和创建文件夹
anon_mkdir_write_enable=YES
#下载、删除和重命名
anon_other_write_enable=YES
local_root=/home/huchangyi

7 重启
systemctl restart vsftpd

8 新建虚拟账号教程

8.1 建立虚拟用户口令库文件
建立口令文件(名字随便) 奇数是用户 偶数是密码
vim /etc/vsftpd/login.txt

test
t123456

8.2 生成vsftpd的认证文件

使用db_load命令生成认证文件
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

设置认证文件只对用户可写可读
chmod 600 /etc/vsftpd/login.db

8.3 建立虚拟用户所需的pam配置文件
cd /etc/pam.d
vim /etc/pam.d/vsftpd

文件内容如下:
auth required /lib/security/pam_userdb.so (so表示调用的共享模块)
db=/etc/vsftpd/login(.db要去掉) (自动生成认证文件)
account required /lib/security/pam_uesrdb.so
db=/etc/vsftpd/login(.db要去掉) (以认证文件为标准验证帐号)

最终调整为
auth sufficient pam_userdb.so db=/etc/vsftpd/login
account sufficient pam_userdb.so db=/etc/vsftpd/login

sufficient
表示该模块验证成功是用户通过认证的充分条件。只要这个模块验证成功了,就代表没有必要继续去认证这个用户了。
那么相应的行为就是只要被sufficient标记的模块一旦认证成功,就会立即返回给应用,报告成功;
但是需要注意的是sufficient的优先级低于required,那么如果有required失败,刚最终的结果也是失败的;
当sufficient认证失败时,相当于optional。

8.4 建立虚拟用户所要访问的目录并设置相应权限
即:建立所以ftp虚拟用户帐号使用的系统用户帐号的映射文件并设置该帐号
宿主目录的权限
useradd huchangyi -d /home/huchangyi -s /sbin/nologin
注意不能给虚拟用户设密码 他只起映射作用

8.5 设置vsftpd.conf配 置文件
在配置文件中添加虚拟用户的配置内容
vim /etc/vsftpd/vsftpd.conf

guest_enable=YES
guest_username=huchangyi
pam_service_name=vsftpd

9 重启服务
systemctl restart vsftpd

10 报错问题解决
euler系统报错 无法初始化数据库:
gdbmtool /etc/vsftpd/login.pag store test test1234

标签: none

评论已关闭