前言
可参考:https://www.linuxprobe.com/ftp-deployment-authentication.html
因为手动敲代码太慢了,所以我总结了一份脚本,方便快速安装。
准备工作
安装之前的准备工作
yum -y install vsftpd
systemctl start vsftpd
systemctl enable vsftpd
一键安装脚本
#!/bin/bash
#此脚本目前只是为了方便centos7下安装vsftp,其他版本后期集成。
#ftp数据存放目录
# by liwentong 20191219
ftp_data=/home/ftp
chcek_friewalld(){
echo "开始检查防火墙设置"
systemctl status firewalld |grep runing & >/dev/null
if [ $? -ne 0 ]
then
firewall-cmd --add-port=21/tcp --zone=public --permanent
firewall-cmd --add-service=ftp
firewall-cmd --reload
fi
if [ $? -eq 0 ]
then
echo "防火墙开启成功"
fi
useradd -s /sbin/nologin ftp
}
#搭建ftp
install_vsftp(){
echo "开始安装vsftp 并且检查环境"
yum -y install vsftpd libdb-utils
if [ $? -ne 0 ]
then
echo "请检查你的yum源情况,是否出现无法用,可单独在终端执行 yum makecache 测试"
exit 1
fi
#检查防火墙,开放21端口
chcek_friewalld
echo "开始配置ftp"
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
#配置数据写入到配置文件
cat >/etc/vsftpd/vsftpd.conf<<LWT
listen=yes
anonymous_enable=no
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=yes
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/vsftpd_user_conf
pam_service_name=vsftpd.vu
allow_writeable_chroot=YES
local_enable=YES
LWT
read -p "输入ftp用户:" ftp_user
if [ ! -n "$ftp_user" ];then
ftp_user=test
fi
read -p "输入ftp用户密码:" ftp_passwd
if [ ! -n "$ftp_passwd" ];then
ftp_passwd=123456
fi
cd /etc/vsftpd
echo $ftp_user >/etc/vsftpd/user.txt
echo $ftp_passwd >>/etc/vsftpd/user.txt
db_load -T -t hash -f user.txt vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
touch /etc/pam.d/vsftpd.vu
echo "判断此系统是32位操作系统还是64位"
#判断centos系统位64位还是32位
xd=`getconf LONG_BIT`
if [ $xd -eq '64' ];then
echo "此系统为64位"
echo "auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login" > /etc/pam.d/vsftpd.vu
echo "account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login" >> /etc/pam.d/vsftpd.vu
else
echo "auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login" > /etc/pam.d/vsftpd.vu
echo "account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login" >> /etc/pam.d/vsftpd.vu
fi
#限制用户切换工作目录
touch /etc/vsftpd/chroot_list
echo $ftp_user >>/etc/vsftpd/chroot_list
#配置虚拟用户的配置文件
mkdir -p /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf
#写入用户权限配置
cat >$ftp_user <<LWT
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
LWT
echo "local_root="$ftp_data/$ftp_user>>$ftp_user
mkdir -p $ftp_data
chown -R ftp:root $ftp_data
chmod o+rw $ftp_data
mkdir -p $ftp_data/$ftp_user
chmod -R 777 $ftp_data/$ftp_user
systemctl restart vsftpd.service
}
#创建虚拟用户
create_user(){
ftp_passwd=123456
read -p "输入你要创建的用户名:" ftp_user
if [ ! -n "$ftp_user" ];then
echo "你没有输入用户名,退出"
exit 1
else
read -p "输入密码:" ftp_pass
if [ ! -n "$ftp_pass" ];then
echo "密码没有输入,默认123456"
else
ftp_passwd=$ftp_pass
fi
fi
cd /etc/vsftpd
echo $ftp_user >>/etc/vsftpd/user.txt
echo $ftp_passwd >>/etc/vsftpd/user.txt
db_load -T -t hash -f user.txt /etc/vsftpd/vsftpd_login.db
chmod 600 /etc/vsftpd/vsftpd_login.db
echo $ftp_user >>/etc/vsftpd/chroot_list
cd /etc/vsftpd/vsftpd_user_conf
cat >$ftp_user<<LWT
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
LWT
echo "local_root="$ftp_data/$ftp_user>>$ftp_user
mkdir -p $ftp_data/$ftp_user
chmod -R 777 $ftp_data/$ftp_user
}
echo "输入你要操作的内容"
select var in install_vsftpd create_user quit
do
case $var in
install_vsftpd)
install_vsftp;
;;
create_user)
create_user
;;
quit)
exit 1
;;
esac
done
标签:ftp,vsftpd,db,一键,echo,centos7,etc,user
From: https://www.cnblogs.com/guowenrui/p/17926426.html