在 CentOS 上用脚本管理 FTP 服务器,通常取决于你用的是什么 FTP 服务软件。CentOS 上最常见的是 vsftpd(也有用 ProFTPD 的)。下面以 vsftpd + 系统用户/虚拟用户 为例,讲怎么用脚本管理。
# 查看是否安装
rpm -qa | grep vsftpd
安装:
yum install -y vsftpd
systemctl enable vsftpd
systemctl start vsftpd
#!/bin/bash
# add_ftp_user.sh
if [ $# -ne 2 ]; then
echo "用法: $0 用户名 密码"
exit 1
fi
USER=$1
PASS=$2
useradd -m -s /sbin/nologin $USER
echo "$USER:$PASS" | chpasswd
# 设置目录权限
chown -R $USER:$USER /home/$USER
echo "FTP 用户 $USER 创建完成"
使用:
sh add_ftp_user.sh ftpuser 123456
#!/bin/bash
# del_ftp_user.sh
USER=$1
userdel -r $USER
echo "FTP 用户 $USER 已删除"
yum install -y vsftpd pam* db4*
#!/bin/bash
# add_vuser.sh
VUSER=$1
VPASS=$2
VFILE=/etc/vsftpd/vuser_list
echo "$VUSER" >> $VFILE
echo "$VPASS" >> $VFILE
db_load -T -t hash -f $VFILE /etc/vsftpd/vuser.db
echo "虚拟用户 $VUSER 添加成功"
sed -i "/^$1$/,+1d" /etc/vsftpd/vuser_list
db_load -T -t hash -f /etc/vsftpd/vuser_list /etc/vsftpd/vuser.db
#!/bin/bash
# ftp_ctl.sh
case $1 in
start)
systemctl start vsftpd
;;
stop)
systemctl stop vsftpd
;;
restart)
systemctl restart vsftpd
;;
status)
systemctl status vsftpd
;;
*)
echo "用法: $0 {start|stop|restart|status}"
esac
for u in user1 user2 user3; do
sh add_ftp_user.sh $u "Pass123"
done
/etc/vsftpd/vsftpd.conf 要开启:local_enable=YES
write_enable=YES
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
setsebool -P ftpd_full_access on
如果你告诉我:
我可以帮你写一套完整可落地的管理脚本。