Linux shell脚本快速安装配置vsftpd服务以及问题记录


近两天文章
Linux shell脚本自动化源码编译安装nginx ,并调优 nginx配置,nginx日志切割脚本
Linux shell脚本自动化键编译安装 PHP-8.3.3 ,以及安装php扩展redis、imagick、zip等

问题描述

经常遇到安装 vsftp,或给新人开 ftp权限的需求,这里记录下

vsftpd安装脚本

脚本在 rocky linux 9.3运行一点问题没有,如果在 centos6,centos7运行,请将yum -y install libdb-utils替换成yum -y install db4-utils

#!/bin/bash
# 安装 vsftpd 和 libdb-utils
set -x
GFIPREFIX=/usr/local/data
GFIUSER=www
yum -y install vsftpd
yum -y install libdb-utils

# 创建 vsftpd 运行目录
[ ! -d /var/run/www ] && mkdir /var/run/www

# 切换到 vsftpd 配置目录
cd /etc/vsftpd

# 创建用户认证数据库
cat > loguser.txt <<EOF
zhangsan
123456
EOF
db_load -T -t hash -f /etc/vsftpd/loguser.txt /etc/vsftpd/loguser.db

# 配置 PAM 认证
[ -f /etc/pam.d/vsftpd ] && mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.`date +%F`
cat > /etc/pam.d/vsftpd <<EOF
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/loguser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/loguser
EOF

# 备份 vsftpd 配置文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.`date +%F`

# 配置 vsftpd
cat >> /etc/vsftpd/vsftpd.conf <<EOF
allow_writeable_chroot=YES
pam_service_name=vsftpd
userlist_enable=YES
#tcp_wrappers=YES
hide_file=.*
reverse_lookup_enable=NO
chroot_local_user=YES
secure_chroot_dir=/var/run/www
guest_enable=YES
guest_username=www
user_config_dir=/etc/vsftpd/users_config
use_localtime=YES
pasv_enable=YES
pasv_promiscuous=YES
port_promiscuous=YES
pasv_min_port=4530
pasv_max_port=4550
EOF

# 关闭匿名访问和启用日志记录
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/g' /etc/vsftpd/vsftpd.conf
sed -i 's/^#xferlog_enable=YES/^xferlog_enable=YES/g' /etc/vsftpd/vsftpd.conf
sed -i 's/xferlog_file=\/var\/log\/xferlog/xferlog_file=\/var\/log\/www/g' /etc/vsftpd/vsftpd.conf

#关闭 selinux
##临时关闭
setenforce 0
##永久关闭
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
##关闭firewalld
systemctl status firewalld

# 创建用户配置目录
mkdir /etc/vsftpd/users_config
cd /etc/vsftpd/users_config

# 创建用户配置文件并指定用户访问路径
touch zhangsan
cat > zhangsan <<EOF
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=$GFIPREFIX/www
EOF

# 重启 vsftpd 服务
systemctl restart vsftpd

备注:
pasv_min_port 和 pasv_max_port 分别指定了被动模式数据传输的端口范围的最小端口和最大端口。在配置 FTP 服务器时,你可以根据需要设置这两个参数,以确保服务器能够提供足够的端口数量供被动模式数据传输使用,并且避免与其他服务冲突。在被动模式下,客户端与服务器之间的数据传输不是直接的,而是通过服务器上的一个端口来传输数据。而这个端口是在一定的范围内动态选择的。

ftp安装脚本使用

#执行完成安装和模板设置
sh ftp-install.sh

开放 21 端口

开放 FTP 服务器的 21 端口和被动模式数据传输的端口范围4530和 4550,

# 使用 iptables 命令
iptables -I INPUT -p tcp --dport 21 -j ACCEPT

# 或者使用 firewalld 命令

firewall-cmd --zone=public --add-port=21/tcp --permanent 
# 重启防火墙服务
systemctl restart iptables
# 或者
systemctl restart firewalld

如果是云平台,在安全组中放行21,4530,4550端口即可,不用在服务器上执行上述 4条命令

新增用户

编辑 loguser.txt文件,在后面追加新增帐号和密码
在这里插入图片描述
在这里插入图片描述

在这里,想让新用户 lisi 拥有和 zhangsan 相同的访问目录。可以通过复制 zhangsan 用户的配置文件来实现:

cp /etc/vsftpd/users_config/zhangsan /etc/vsftpd/users_config/lisi

另外,也可以直接修改 lisi 用户的配置文件,将 local_root 路径设置为你想要的目录。但是请注意,这个目录的属主属组应该与配置文件中指定的 guest_username 用户一致。

write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/usr/local/data/www #指定了 FTP 服务器的根目录,即用户登录后默认所在的目录

完成以上操作后,需要将明文账号密码加载到 /etc/vsftpd/loguser.db 文件中:

db_load -T -t hash -f /etc/vsftpd/loguser.txt /etc/vsftpd/loguser.db 

最后,重新启动 vsftpd 服务:

systemctl restart vsftpd

常见问题

1、500 OOPS: tcp_wrappers is set to YES but no tcp wrapper support compiled in

解决办法

配置文件vsftpd.conf中注释 tcp_wrappers=YES,重启服务即可

2、 ftp 550 Create directory operation failed 和 ftp 553 Could not create file.

在这里插入图片描述
解决办法,关闭 selinux即可解决


#临时关闭
setenforce 0

#永久关闭
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛溪博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值