一、首先需要装的包有:
yum install vsftpd lftp ftp libdb-utils(生成虚拟用户验证数据库文件) -y
systemctl restart vsftpd.service 启动服务
systemctl enable vsftpd 设置开机启动
systemctl status vsftpd 查看服务启动状态与启动状态时间,加载的配置文件等。
二、建立一个虚拟用户的数据库文件
#!/bin/bash
cat > /etc/vsftpd/auth_virtual_ftp_user <<END
user1
123
user2
456
END
需要这个文件来生成数据库文件
db_load -T -t hash -f /etc/vsftpd/auth_virtual_ftp_user /etc/vsftpd/auth_virtual_ftp_user.db
-T :允许non-Berkeley DB应用程序容易文本文件加载到数据库
-t:指定生成数据库文件类型
指定了选项-T,那么一定要追加子选项-t;子选项-t,追加在在-T选项后,用来指定转译载入的数据库类型后面就是要用哪个文件来生成数据库文件了,前面是文本文件,后面是数据库文件,什么名字都可以,但数据库文件必须是以*.db结尾的
三、配置vsftpd文件
首先要备份一份初始文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.$(date +%Y-%m-%d).bak
cat /etc/vsftpd/vsftpd.conf.$(date +%Y-%m-%d).bak | grep -v ^# | tr -s ‘\n’ > /etc/vsftpd/vsftpd.conf
把里面多余的空行用tr -s ‘\n’ 来清理掉,接着再重定向到vsftpd的配置文件中。
cat /etc/vsftpd/vsftpd.conf 按以下要求来修改配置文件
anonymous_enable=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
listen_ipv6=YES
userlist_enable=YES
pam_service_name=vsftpd 这个文件对应的位置是/etc/pam.d/vsftpd
userlist_enable=YES
tcp_wrappers=YES
use_localtime=YES
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/user_conf
创建虚拟用户配置目录
mkdir /etc/vsftpd/user_conf/
四、修改pam 模块
[iyunv@server1 ~]# cat /etc/pam.d/vsftpd | grep -v ^#
auth required pam_userdb.so db=/etc/vsftpd/auth_virtual_ftp_user
account required pam_userdb.so db=/etc/vsftpd/auth_virtual_ftp_user
这里的*.so 文件全部都是默认在/lib64/security/这个目录下
之前我总是认证不成功(登录503错误),我想可能是模块之间有一些影响,所以我把其他的都注释掉,只留下这两个即可。通常使用的情况下,暂无其他问题,若有的话欢迎指出问题,谢谢。
五、创建虚拟用户
touch /etc/vsftpd/user_conf/{user1,user2}
cat /etc/vsftpd/user_conf/user1
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_upload_enable=yes
local_root=/var/ftp/user1
cat /etc/vsftpd/user_conf/user2
anon_world_readable_only=no # 允许匿名用户浏览器整个服务器的文件系统
write_enable=no # 允许在文件系统写入权限
anon_mkdir_write_enable=yes # 允许创建文件夹
anon_other_write_enable=NO # 允许用户改名和删除文件的权限
anon_upload_enable=yes # 允许用户上传文件
local_root=/var/ftp/user2
mkdir /var/ftp/{user1,user2} 创建虚拟用户的根目录
六、创建一个用户要与vsftp.conf中的guest_username=ftpuser 所对应上
useradd -s /sbin/nologin -c “ftpuser” ftpuser
分配权限
chown ftpuser:ftpuser /var/ftp/
cd /var/ftp/
chown -R ftpuser:ftpuser *
[iyunv@server1 ftp]# ll -dh /var/ftp/user1/
drwxr-xr-x. 2 ftpuser ftpuser 6 Oct 31 02:38 /var/ftp/user1/