安装vsftpd
yum install -y vsftpd //安装
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI //安装vsftpd虚拟用户配置依赖包
rpm -e vsftpd //卸载
systemctl start vsftpd //启动服务(特别注意:配置完毕后在启动服务)
systemctl restart vsftpd //重启
systemctl status vsftpd //查看状态
systemctl enable vsftpd //设置开机自动启动
service vsftpd reload //重新加载配置文件
配置vsftpd.conf
- 编辑vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
no_anon_password=YES
anon_world_readable_only=YES
ftp_username=ftpuser
anon_root=/data
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=ftpuser
xferlog_file=/var/log/xferlog
vsftpd_log_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
#子进程以 nopriv_user 指定的用户身份执行处理匿名登录的用户,而对登录的用户就以用户自己的身份执行。
#nopriv_user=ftpuser
#async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=欢迎登陆到中企聚易开发者测试中心.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES
#使用ipv4进行监听
listen=YES
#listen_ipv6=YES
allow_writeable_chroot=YES
userlist_enable=YES
userlist_deny=NO
local_root=/data/
tcp_wrappers=YES
use_localtime=YES
one_process_model=NO
max_clients=20
max_per_ip=2
pasv_enable=YES
#如果使用了防火墙或云服务器,需要在防火墙或安全配置中增加此端口
pasv_min_port=30000
pasv_max_port=30999
pasv_promiscuous=YES
listen_port=21
#虚拟账号配置
guest_enable=YES
#账号的权限与匿名账号一致
virtual_use_local_privs=NO
pam_service_name=vsftpd
guest_username=ftpuser
#虚拟账号配置文件存储目录
user_config_dir=/etc/vsftpd/vuser/
创建用户
useradd ftpuser -s /sbin/nologin //添加用户,并且这个用户没有登陆系统的权限
passwd ftpuser //修改密码
chown -R ftpuser:ftpuser /data //设置上传文件夹目录所有者
chmod -R 755 /data //指定权限
chmod a-w /data //去掉写权限
更改PAM验证
vi /etc/pam.d/vsftpd
替换以下内容
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login_user
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/login_user
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
配置虚拟账号
vi /etc/vsftpd/login_user //创建虚拟用户配置文件,内容为:一行账号名称 一行密码
vi /etc/vsftpd/ftpusers //删除root
vi /etc/vsftpd/chroot_list //新建空文件保存
vi /etc/vsftpd/user_list //把增加的账号增加到此文件的末尾,这里需要增加root、ftpuser两账号;
db_load -T -t hash -f /etc/vsftpd/login_user /etc/vsftpd/login_user.db //增加或修改账号或密码 后需要重新加载
mkdir /etc/vsftpd/vuser/ //创建虚拟账号配置文件存储目录
vi /etc/vsftpd/vuser/account //编辑虚拟账号配置文件
#配置内容,vsftpd主配置文件中已规定虚拟用户权限与匿名用户一致,因此以下针对匿名用户的权限配置即为虚拟用户的权限
#指定ftp主目录
local_root=/data/www/root
anon_umask=077
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#可以通过mount --bind 方法加载接到ftp主目录,此方式可以直接指定一个项目下多个站点(后台、PC、H5、微信等)统一集中管理上传
mount --bind /data/rss/sys8001/webapps/ROOT /data/rss/root/sys
mount --bind /data/rss/www8002/webapps/ROOT /data/rss/root/www
#编辑/etc/fstab文件加入以下映射关系,启动系统时自动加载
/data/rss/sys8001/webapps/ROOT /data/rss/root/sys auto bind 0 0
常见问题
1、上传提示不能创建目录或上传失败
检查目录所有者是不是:ftpuser,如果不是,请设置