一、安装支持组件
centos系,centos、AlmaLinux等

yum install epel-release -y
yum install -y libcap tcp_wrappers gcc pam-devel libcap-devel openssl openssl-devel
yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI logrotate
yum -y install db4-utils tcp_wrappers-devel 
yum -y install gcc-c++ pam-devel libcap libXtst-devel libcap-devel

以下安装命令同样适用于debian和ubuntu
二,下载并安装vsftpd-3.0.4,注意需要ssl支持,还需要编辑"builddefs.h"把其中的"#undef VSF_BUILD_SSL" 改为 "#define VSF_BUILD_SSL",新版要支持tls1.3所以还要支持openssl1.1

wget http://source.loshub.com/linux/ftp/vsftpd-3.0.4.tar.gz
tar zxf vsftpd-3.0.4.tar.gz
cd vsftpd-3.0.4
make -j4&&make install
cp RedHat/vsftpd.pam /etc/pam.d/vsftpd

三,创建配置文件夹

mkdir -p /etc/vsftpd

创建/etc/vsftpd/vsftpd.conf文件,录入以下代码

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to FTP service.
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
use_localtime=YES
listen_port=21
chroot_local_user=YES
idle_session_timeout=300
data_connection_timeout=1
guest_enable=YES
guest_username=nobody
user_config_dir=/etc/vsftpd/vconf
virtual_use_local_privs=YES
pasv_min_port=10060
pasv_max_port=10090
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES
pasv_enable=YES

如需启用ssl,在加入以下配置

ssl_ciphers=HIGH
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=NO
force_local_logins_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem

生成证书

openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=loshub" -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

增加可读性

chmod 644 /etc/vsftpd/vsftpd.pem

创建登录用户

touch /etc/vsftpd.user_list
echo 'nobody' >>vsftpd.user_list

四、建立虚拟用户名单文件

touch /etc/vsftpd/virtusers
编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)

web1
123456
web2
123456
web3
123456

保存退出
五、生成虚拟用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
chmod 600 /etc/vsftpd/virtusers.db

#设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效)

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

六、建立虚拟用户个人Vsftp的配置文件

mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
touch web1 web2 web3

这里创建三个虚拟用户配置文件(本例只创建一个)

mkdir -p /home/wwwroot/web1/http/
chown nobody:nobody /home/wwwroot -R

vi web1 #编辑用户web1配置文件,其他的跟这个配置文件类似

local_root=/home/wwwroot/web1/http/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

七,加入系统启动
创建启动文件/usr/lib/systemd/system/vsftpd.service并录入以下代码

[Unit]

Description=Vsftpd ftp daemon
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf

[Install]
WantedBy=multi-user.target

八、最后重启vsftpd服务器及加入系统启动

systemctl restart vsftpd.service
systemctl enable vsftpd.service

备注:
guest_username=nobody #如果ftp目录是指向网站根目录,用来上传网站程序,可以指定虚拟用户的宿主用户为nginx运行账户www,可以避免很多权限设置问题

十、打开系统防火墙

firewall-cmd --add-service=ftp --permanent;
firewall-cmd --reload;

分类: FTP服务器 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录