CentOS6 快速部署FTP(一键部署脚本)

1.系统环境

[root@test ~]# cat /etc/redhat-release
CentOS release 6.7 (Final)
[root@test ~]# iostat -c
Linux 2.6.32-573.3.1.el6.x86_64 (ceshiji)   01/05/2018  _x86_64_    (8 CPU)
[root@test ~ ]# getenforce
Disabled

2.安装vsftp,pam,db4

[root@test ~]# yum install vsftpd pam* db4* -y
#查看ftp版本
vsftpd -version
vsftpd: version 2.2.2

3.开启vsftp自启服务

[root@test ~]]# chkconfig --level 35 vsftpd on
[root@test ~]]# chkconfig --list

4.配置vsftpd服务的宿主

#useradd vsftpdadmin -s /sbin/nologin -d /data/vsftpdadmin -m
说明:这个vsftpdadmin只是用来替换root的,并不需要登录

5.建立ftp虚拟宿主帐

#useradd -s /sbin/nologin -d /data/ftpuser -m ftpuser

6.配置vsftpd.conf
说明:更改配置前最好备份一下然后再改

#vim /etc/vsftpd/vsftpd.conf

7.下面是我的vsftpd.conf配置内容:

#cat /etc/vsftpd/vsftpd.conf |grep -v '^#'
##不允许匿名用户登录ftp
anonymous_enable=NO
##允许本地用户登录
local_enable=YES
##启用任何形式的FTP写入命令
write_enable=YES
##上传后文件的权限掩码
local_umask=022
##开启目录标语,默认是YES
dirmessage_enable=YES
##开启日志,默认是YES
xferlog_enable=YES
##设定数据连接端口20
##这个端口我更改为50100
connect_from_port_20=NO
#设置是否允许被动模式
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=60000
listen_port=50100
##设定vsftpd的服务日志保存路径
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
# vsftpd_log_file所指定的文件,即/var/log/vsftpd.log也将用来 记录服务器的传输情况
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
##会话超时,客户端连接到ftp但未操作,可根据个人情况修改
idle_session_timeout=600
#设定默认的数据连接超时时间
data_connection_timeout=120
##支持异步传输功能,默认是注释掉的
async_abor_enable=YES
##支持ASCII模式的上传功能,默认是注释掉的
ascii_upload_enable=YES
##支持ASCII模式的下载功能,默认是注释掉的
ascii_download_enable=YES
##FTP的登录欢迎语,本身是被注释掉的
ftpd_banner=Welcome to datagrand FTP service.
##禁止本地用户登出自己的FTP主目录
chroot_local_user=YES
##锁定登录用户只能在家目录的位置的文件
chroot_list_file=/etc/vsftpd/chroot_list
##侦听ipv4地址
listen=YES
##########启用vsftpd虚拟用以及虚拟用户账号配置目录############
##设定启用虚拟用户功能
guest_enable=YES
##指定虚拟用户的宿主用户
guest_username=ftpuser
##设定pam服务下vsftpdd的验证配置文件名
pam_service_name=vsftpd
##设定虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES
##设定虚拟用户个人Vsftp的配置文件存放路径
user_config_dir=/etc/vsftpd/vconf
##拒绝登录用户名单
userlist_enable=YES
userlist_deny=NO
##限制主机对VSFTP服务器的访问
tcp_wrappers=YES
############################虚拟用户全局配置###############
##开放虚拟用户创建目录的权限
anon_mkdir_write_enable=YES
##开放虚拟用户的下载权限
anon_world_readable_only=YES
##开放虚拟用户的写权限
write_enable=YES
##开放虚拟用户的上传权限
anon_upload_enable=YES
##开放虚拟用户删除、重命名目录和文件
anon_other_write_enable=YES

8.建立日志文件

#touch /var/log/vsftpd.log    //日志文件  
#chown vsftpdadmin:vsftpdadmin /var/log/vsftpd.log   //属于vsftpdadmin这个宿主 

9.建立虚拟用户文件

#mkdir /etc/vsftpd/vconf/  
#touch /etc/vsftpd/vconf/vir_user 

10.建立虚拟用户
说明:
(1)第一行用户名,第二行是上一行用户名的密码,其他人的以此类推;
(2)用户名,密码后面不要有空格!

#vim /etc/vsftpd/vconf/vir_user 
##用户名
test
##密码
123456

说明:加入需要锁定登录用户只能访问家目录的位置,然后将帐户输入一行一个,保存就可以了。

#vim /etc/vsftpd/chroot_list
##用户名
test
#vim /etc/vsftpd/user_list
##添加虚拟用户
test

创建虚拟用户具体文件和步骤:

#pwd
/etc/vsftpd/vconf
#touch test
#vim test
##添加如下内容:
##虚拟用户的根目录,需要预先建立并赋予相应权限
local_root=/data3/test
local_umask=022
:wq

在相应的目录下(data3)创建文件test:

#mkdir -p /data3/test

更改所属主,组:

#chown -R ftpuser:ftpuser /data3/test

1.生成数据库

#db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db  
设置数据库文件的访问权限:
#chmod 600 /etc/vsftpd/vconf/vir_user.db  
#chmod 600 /etc/vsftpd/vconf/vir_user  

2.修改/etc/pam.d/vsftpd内容

将/etc/pam.d/vsftpd文件里的内容全部注释掉(前面加#)或删掉,在里面添加如下内容:
echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd  
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd  

3.重启ftp服务

#service vsftpd restart
#netstat -lnp|grep vsftpd

4.关于vsftpd的端口号的更改
要求:vsftpd启动后,默认的ftp端口是21,现在我想把ftp端口改成50100 ,修改后能保证用户上传下载不受影响。

#vim /etc/vsftpd/vsftpd.conf
##在该配置文件中添加此行
listen_port=50100
:wq
#vim /etc/services
#ftp             21/tcp
ftp             50100/tcp
#ftp             21/udp          fsp fspd
ftp             50100/udp          fsp fspd
:wq
#service vsftpd restart
#netstat -lnp|grep vsftpd

5.一键部署脚本

#创建12位乱码密码脚本
#cat create_passwd_12.sh
cat /dev/urandom|head -1 |md5sum|head -c 12
#cat create_account.sh
#!/bin/bash
#输入新建用户名
read -p "please input a username:" m
#输入新建用户名的密码
read -p "please input a passwd:" n
#建立虚拟用户
echo $m >> /etc/vsftpd/vconf/vir_user
echo $n >> /etc/vsftpd/vconf/vir_user
#chroot_list添加新建用户名
echo $m >> /etc/vsftpd/chroot_list
#user_list添加新建用户名
echo $m >> /etc/vsftpd/user_list
#创建虚拟用户
cd /etc/vsftpd/vconf
touch $m
cat >> /etc/vsftpd/vconf/$m << EOF
local_root=/data3/$m
local_umask=022
EOF
#创建虚拟用户对应的目录
mkdir -p /data3/$m
chown -R ftpuser:ftpuser /data3/$m
#生成数据库
db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db
#设置数据库文件的访问权限
chmod 600 /etc/vsftpd/vconf/vir_user.db
chmod 600 /etc/vsftpd/vconf/vir_user
#修改/etc/pam.d/vsftpd内容
echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" > /etc/pam.d/vsftpd
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd
#创建成功
echo "Congratulations on creating a new user!"

案例:多个虚拟用户根据不同的权限使用同一个项目目录
需求如下:
公司为了能够方便和合作伙伴沟通最新的产品信息,计划搭建FTP服务器,给合作伙伴提供相关文档的下载。内部管理员对FTP服务器共享目录有上传、下载、删除和修改产品信息的权限。公司的合作伙伴能够使用FTP服务器进行上传和下载,但不可以删除数据。

解决方法
关于 FTP 的相关部署,可以参考文章上面的内容,文章中的一键部署脚本适用于单个账户使用单个目录。为了满足我们的需求,我们需要做一下相关配置的更改,具体如下:
(1)正常执行一键部署脚本,创建一个项目

sh create_account.sh
#按照脚本提示,输入账户名字和密码,如:share,share123,这个账号后期可以删除的~

(2)建立虚拟用户账号和密码

#创建一个管理员用户admin密码admin123,一个只有下载权限的普通账户test密码test1
echo admin >> /etc/vsftpd/vconf/vir_user
echo admin123 >> /etc/vsftpd/vconf/vir_user
echo test >> /etc/vsftpd/vconf/vir_user
echo test1 >> /etc/vsftpd/vconf/vir_user

(3)chroot_list添加新建用户名

echo admin >> /etc/vsftpd/chroot_list
echo test >> /etc/vsftpd/chroot_list

(4)user_list添加新建用户名

echo admin >> /etc/vsftpd/user_list
echo test >> /etc/vsftpd/user_list

(5)创建虚拟用户权限配置文件

cd /etc/vsftpd/vconf
cp share admin
cp share test

管理员账户admin权限配置:

local_root=/data3/share
local_umask=022

普通账户test权限配置:

##开放虚拟用户创建目录的权限
anon_mkdir_write_enable=NO
##开放虚拟用户的下载权限,这个参数的说明:https://bbs.csdn.net/topics/390083069
anon_world_readable_only=NO
##开放虚拟用户的写权限
write_enable=NO
##开放虚拟用户的上传权限
anon_upload_enable=NO
##开放虚拟用户删除、重命名目录和文件
anon_other_write_enable=NO
local_root=/data3/share
local_umask=022

(6)生成数据库

db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db

(7)设置数据库文件的访问权限

chmod 600 /etc/vsftpd/vconf/vir_user.db
chmod 600 /etc/vsftpd/vconf/vir_user

(8)修改/etc/pam.d/vsftpd内容

echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" > /etc/pam.d/vsftpd
echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值