请选择
进入手机版
|
继续访问电脑版
设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
首页
Linux平台
数据库
Windows、BIOS、电脑硬件、家庭网络
其他
搜索
搜索
书籍
Linux系统
工具软件
Web服务
Keepalived、HAProxy
监控
Docker
NFS、FastDFS
Vsftpd、Samba
DHCP、PXE、NTP
Linux邮件服务
Discuz
其他
书籍
工具软件
Mysql/Mariadb
Oracle
其他
Windows 7/10
Windows Server
BIOS
电脑硬件
家庭网络
企业网络
编程
职场交流
股票
谈天说地
其他
本版
帖子
用户
Linux教程网
»
论坛
›
Linux平台
›
Vsftpd、Samba
›
shell脚本一键搭建vsftpd
返回列表
发新帖
shell脚本一键搭建vsftpd
[复制链接]
661
|
0
|
2020-8-5 01:58:06
|
显示全部楼层
|
阅读模式
#!/bin/bash
######################################
# Time : 2020年06月29日19:44:50 #
# Project : Auto_config_vsftpd #
######################################
FTP_SYS_USR="ftpuser"
FTP_VIR_USR="ftpus1"
FTP_DIR="/etc/vsftpd/"
FTP_FILES="vsftpd.conf"
FTP_DB="vsftpd_login"
FTP_YUM="yum -y install"
FTP_BAK="/data/ftp-backup"
#read -p "请输入您的公网IP地址:" EXTER_IP
print_menu(){
echo -e "\033[36mPlease Select Install Menu follow:\033[0m"
echo ""
echo -e "\033[33m)Check if FTP is currently installed ??? \033[1m"
echo -e "\033[35m1)安装基本验证ftp\033[1m"
echo "2) 添加新的系统ftp用户"
echo "3) 安装虚拟用户ftp"
echo "4) 添加新的ftp虚拟用户"
echo "5) ========"
echo -e "\033[31mUsage: { /bin/sh $0 1|2|3|4|help}\033[0m"
exit
}
Install_ftp_basic(){
#if [ $# -eq 0 ];then
# echo -e "\033[32mUsage:{/bin/bash $0 user1|user2|help}\033[0m"
# echo -e "\033[32m可一次添加多个vsftpd虚拟用户\033[0m"
# exit 0
#fi
if [ ! -d $FTP_DIR ];then
$FTP_YUM vsftpd ftp
rpm -qa | grep vsftpd
else
exit 1
fi
if [ `echo $?` != 0 ];then
exit 10
fi
mkdir -p $FTP_BAK
cp -rp $FTP_DIR $FTP_BAK/
read -p "请输入您的公网IP地址:" EXTER_IP
cat>>${FTP_DIR}/vsftpd.conf <<EOF
local_root=/var/ftp/
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=5000
pasv_max_port=6000
pasv_address=$EXTER_IP
EOF
useradd -d /var/ftp/ ftpus1 && echo "ftpus1@123" | passwd ftpus1 --stdin
chmod 777 /var/ftp/
sed -i 's#anonymous_enable=YES#anonymous_enable=NO#' ${FTP_DIR}/${FTP_FILES}
sed -i "s#listen_ipv6=YES#listen_ipv6=NO#" ${FTP_DIR}/${FTP_FILES}
sed -i "s#listen=NO#listen=YES#" ${FTP_DIR}/${FTP_FILES}
systemctl start vsftpd
echo -e "\033[35m vsftpd被动模式已开启,端口为5000-5010请打开安全组或防火墙运许通行--------- \033[0m"
echo -e "\033[36m vsftpd当前模式为普通用户验证,请使用系统中的用户账户密码登录,默认创建了一个系统用户:ftpus1 密码是:ftpus1@123 ------- \033[0m"
echo `ss -ntlp | grep ftp`
}
BASIC_ADDUSER(){
read -p "请输入要添加的系统ftp新用户" SYSTEM_USRS
useradd -d /home/${SYSTEM_USRS} ${SYSTEM_USRS} && echo "${SYSTEM_USRS}@123" | passwd ${SYSTEM_USRS} --stdin
if [ `echo $?` != 0 ];then
exit 10
else
echo -e "\033[35m vsftpd新用户已添加: ${SYSTEM_USRS} 密码默认设置为:${SYSTEM_USRS}@123 --------- \033[0m"
fi
}
Install_ftp_vir(){
vir_def_ftpuser=ftpus1
if [ ! -d $FTP_DIR ];then
$FTP_YUM vsftpd ftp
rpm -qa | grep vsftpd
fi
$FTP_YUM pam libdb-utils libdb-devel >>/dev/null
if [ `echo $?` != 0 ];then
exit 10
fi
mkdir -p ${FTP_DIR}/vsftpd_user_conf/
touch ${FTP_DIR}/${FTP_SYS_USR}s.txt
for FUSER in $vir_def_ftpuser
do
grep "${FUSR}" ${FTP_DIR}/${FTP_SYS_USR}s.txt
if [ $? -ne 0 ];then
cat>>${FTP_DIR}/${FTP_SYS_USR}s.txt<<EOF
${vir_def_ftpuser}
${vir_def_ftpuser}111
EOF
fi
cat>${FTP_DIR}/vsftpd_user_conf/${vir_def_ftpuser}<<EOF
local_root=/home/${FTP_SYS_USR}/${vir_def_ftpuser}
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
mkdir -p /home/${FTP_SYS_USR}/${vir_def_ftpuser}
done
local_root=/var/ftp/
chroot_local_user=YES
allow_writeable_chroot=YES
db_load -T -t hash -f ${FTP_DIR}/${FTP_SYS_USR}s.txt ${FTP_DIR}/${FTP_DB}.db
chmod 700 ${FTP_DIR}/${FTP_DB}.db
cat>/etc/pam.d/vsftpd<<EOF
auth required pam_userdb.so db=${FTP_DIR}/${FTP_DB}
account required pam_userdb.so db=${FTP_DIR}/${FTP_DB}
EOF
useradd -s /sbin/nologin ${FTP_SYS_USR} >>/dev/null 2>&1
grep "guest_enable" ${FTP_DIR}/vsftpd.conf >>/dev/null 2>&1
if [ $? -ne 0 ];then
read -p "请输入您的公网IP地址:" EXTER_IP
cat>>${FTP_DIR}/vsftpd.conf <<EOF
guest_enable=YES
guest_username=${FTP_SYS_USR}
chroot_local_user=YES
local_root=/var/ftp/
chroot_local_user=YES
allow_writeable_chroot=YES
pam_service_name=vsftpd
user_config_dir=${FTP_DIR}/vsftpd_user_conf
virtual_use_local_privs=YES
pasv_enable=YES
pasv_min_port=5000
pasv_max_port=6000
pasv_address=$EXTER_IP
EOF
sed -i 's#anonymous_enable=YES#anonymous_enable=NO#' ${FTP_DIR}/${FTP_FILES}
sed -i "s#listen_ipv6=YES#listen_ipv6=NO#" ${FTP_DIR}/${FTP_FILES}
sed -i "s#listen=NO#listen=YES#" ${FTP_DIR}/${FTP_FILES}
fi
chown -R ${FTP_SYS_USR}:${FTP_SYS_USR} /home/${FTP_SYS_USR}
echo "默认创建了一个用户 用户名:${vir_def_ftpuser} 密码是:${vir_def_ftpuser}111 "
systemctl restart vsftpd
}
VIR_USER_ADD(){
read -p "请输入要添加的ftp新用户" VIRUSER_ADD
grep "${VIRUSER_ADD}" ${FTP_DIR}/${FTP_SYS_USR}s.txt
if [ $? -ne 0 ];then
cat>>${FTP_DIR}/${FTP_SYS_USR}s.txt<<EOF
${VIRUSER_ADD}
${VIRUSER_ADD}111
EOF
fi
db_load -T -t hash -f ${FTP_DIR}/${FTP_SYS_USR}s.txt ${FTP_DIR}/${FTP_DB}.db
cat>${FTP_DIR}/vsftpd_user_conf/${VIRUSER_ADD}<<EOF
local_root=/home/${FTP_SYS_USR}/${VIRUSER_ADD}
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
mkdir -p /home/${FTP_SYS_USR}/${VIRUSER_ADD}
chown -R ${FTP_SYS_USR}:${FTP_SYS_USR} /home/${FTP_SYS_USR}
echo -e "\033[35m vsftpd新用户: ${VIRUSER_ADD} 密码默认设置为:${VIRUSER_ADD}111 --------- \033[0m"
}
#if [ $? -eq 0 ];then
# echo -e "\033[35m ----vsftpd useradd virtual_user '${FTP_VIR_USR}' 密码为: ${FTP_VIR_USR}111 successful!--------- \033[0m"
# echo -e "\033[35m vsftpd被动模式已开启,端口为5000-6000请打开安全组或防火墙运许通行--------- \033[0m"
#else
# echo "is field! "
#fi
case $1 in
1)
Install_ftp_basic $1
;;
2)
BASIC_ADDUSER $1
;;
3)
Install_ftp_vir $1
;;
4)
VIR_USER_ADD $1
;;
*)
print_menu
;;
esac
复制代码
# bash vsftpd-v1.sh 直接运行脚本即可 根据回显 选择自己需要的功能 在脚本名后加 数字即可
###以下为回显内容
Please Select Install Menu follow:
)Check if FTP is currently installed ???
1)安装基本验证ftp
2) 添加新的系统ftp用户
3) 安装虚拟用户ftp
4) 添加新的ftp虚拟用户
5) ========
Usage: { /bin/sh vsftpd-v1.sh 1|2|3|4|help}
注意:
最好在新机器中运行,以免受环境的干扰,必须要可联网的机器
上一篇:
samba权限问题
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
牛先生
2
主题
2
帖子
105
积分
注册会员
注册会员, 积分 105, 距离下一级还需 95 积分
注册会员, 积分 105, 距离下一级还需 95 积分
积分
105
发消息
回复楼主
返回列表
书籍
Linux系统
工具软件
Web服务
Keepalived、HAProxy
监控
Docker
DNS
NFS、FastDFS
Vsftpd、Samba
DHCP、PXE、NTP
Linux邮件服务
Discuz
其他
论坛公告