首页
首页
文章目录
  1. 简介
  2. 脚本内容
  3. 结束

Centos7一键部署vsftp

简介

天天做重复劳动力是最烦人的,这篇文章就是为了解放自己的双手,实现一键部署vsftp,手工部署居然还经常出错,烦死了。

脚本内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/bin/bash
#ftp数据存放目录
ftp_data=/opt/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
# 添加ftp用户
useradd -s /sbin/nologin ftp
}
#搭建ftp
install_vsftp(){
echo "开始安装vsftp 并且检查环境"
yum -y install vsftpd libdb-utils
if [ $? -ne 0 ]
then
echo "yum安装失败,网络问题????检查下"
exit 1
fi
#检查防火墙,开放21端口
chcek_friewalld
echo "备份vsftpd.conf"
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak
#写入新配置到到vsftpd.con中
cat >/etc/vsftpd/vsftpd.conf<<DZ
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
DZ

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 <<DZ
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
DZ
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<<DZ
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
DZ
echo "local_root="$ftp_data/$ftp_user>>$ftp_user
mkdir -p $ftp_data/$ftp_user
chmod -R 777 $ftp_data/$ftp_user
}


echo "输入你要操作的内容"
select dzero in install_vsftpd create_user quit
do

case $dzero in
install_vsftpd)
install_vsftp;
;;
create_user)
create_user
;;
quit)
exit 1
;;
esac
done

参考url:https://github.com/letran3691/vsftp/blob/master/vsftp.py

结束

以上
End!

支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫