1.安装vsftpd
安装依赖包:
yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl
新建vsftpd系统用户:
useradd vsftpd -s /sbin/nologin
安装vsftpd
yum -y install vsftpd
2.配置vsftpd
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
2.1 修改vsftpd.conf配置文件
主要是下面的一些配置:
#
- local_enable=YES
write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_std_format=YES listen=YES tcp_wrappers=YES hide_ids=YES#
anonymous_enable=NO #设定不允许匿名访问
anon_upload_enable=NO #禁止匿名用户上传
anon_mkdir_write_enable=NO #禁止匿名用户建立目录
dirmessage_enable=YES #设定开启目录标语功能
xferlog_enable=YES #设定开启日志记录功能
connect_from_port_20=YES #设定端口20进行数据连接
chown_uploads=NO #设定禁止上传文件更改宿主
xferlog_file=/var/log/vsftpd.log #设定Vsftpd的服务日志保存路径
ftpd_banner="Welcome to FTP Server!" #设定Vsftpd的登陆标语。 chroot_local_user=YES #限制用户在自己的家目录之内 chroot_list_enable=YES #启用不被chroot的使用者账号 chroot_list_file=/etc/vsftpd/chroot_list #不被chroot的使用者账号的列表文件 user_config_dir=/etc/vsftpd/vsftpd_user_conf #针对不同的用户做不同的配置,这个目录下都是以用户名作为文件名 # 限制某些用户的访问 userlist_file=/etc/vsftpd/user_list userlist_deny=YES userlist_enable=YES #认证配置 pam_service_name=vsftpd pam_service_name=/etc/pam.d/vsftpd
新建chroot_list文件:
touch /etc/vsftpd/chroot_list
文件里面是可以chroot的用户,最好设置为空,这样所有用户都不能chroot了,更加安全。
建立用户配置目录:
mkdir /etc/vsftpd/vsftpd_user_conf
2.2 用户个性化配置
编辑每个用户的个性化配置,主要是用户的主目录
#vim /etc/vsftpd/vsftpd_user_conf/apple
local_root=/home/apple/ftp
在配置之前最好把这个文件夹建立好。
mkdir /home/apple/ftp
我们新建三个用户:apple,windows,google进行测试。
2.3 pam认证文件
本地用户验证需要用到pam文件,内容使用默认配置即可,这个文件在安装vsftpd时自动生成。
路径在/etc/pam.d/vsftpd。我们可以看一下内容:
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
3.登录测试
启动vsftpd服务
service vsftpd start
登录测试
可以看到,配置已经生效。apple可以正常登陆,但是不能切换到它的上级目录,保证安全性。
4.脚本自动化
4.1 自动化安装
#!/bin/bash
#date:2017-05-25
#version:0.0.1
echo \>\>\> 1. `date "+%Y-%m-%d-%H:%M:%S"` We will start vsftpd install
yum -y install pam pam-devel db4 de4-devel db4-uitls db4-tcl vsftpd
echo -e \>\>\> 2. `date "+%Y-%m-%d-%H:%M:%S"` "the vsftpd is already installed.
>>> we will start configure the vsftpd.conf"
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
sed -i '/^[^#]/s/^/#/g' vsftpd.conf
#开始配置vsftpd.conf文件
echo "
#
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_std_format=YES
listen=YES
tcp_wrappers=YES
hide_ids=YES
#
##the conf is for vsftpd
anonymous_enable=NO
#设定不允许匿名访问
anon_upload_enable=NO
#禁止匿名用户上传
anon_mkdir_write_enable=NO
#禁止匿名用户建立目录
dirmessage_enable=YES
#设定开启目录标语功能
xferlog_enable=YES
#设定开启日志记录功能
connect_from_port_20=YES
#设定端口20进行数据连接
chown_uploads=NO
#设定禁止上传文件更改宿主
xferlog_file=/var/log/vsftpd.log
#设定Vsftpd的服务日志保存路径
chroot_local_user=YES
#限制用户在自己的家目录之内
chroot_list_enable=YES
#启用不被chroot的使用者账号
chroot_list_file=/etc/vsftpd/chroot_list
#不被chroot的使用者账号的列表文件
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#针对不同的用户做不同的配置,这个目录下都是以用户名作为文件名
# 限制某些用户的访问
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES
userlist_enable=YES
#认证配置
pam_service_name=vsftpd
pam_service_name=/etc/pam.d/vsftpd" >> /etc/vsftpd/vsftpd.conf
touch /etc/vsftpd/chroot_list
mkdir /etc/vsftpd/vsftpd_user_conf
echo "local_root=/home/username/ftp" > /etc/vsftpd/vsftpd_user_conf/default
#
echo -e 3. `date "+%Y-%m-%d-%H:%M:%S"` "The configure of vsftpd is over.\n"
4.2 新增用户
新增用户之后,如果直接用用户名密码登录,进去的是用户的家目录。这个时候可以设置用户的ftp主目录为/home/$username/ftp,脚本如下:
#!/bin/bash
#date:2017-05-25
#version:0.0.1
if read -t 5 -p "Please enter you name:" username
then
if id $username && [ -d /home/$username ] #判断用户和用户家目录是否存在
then
mkdir -p /home/$username/ftp
cp /etc/vsftpd/vsftpd_user_conf/default /etc/vsftpd/vsftpd_user_conf/$username
sed -i s/username/$username/g /etc/vsftpd/vsftpd_user_conf/$username
echo "The config is over."
else
echo "The $username is not exists or the $username home is not exists."
fi
else
echo -e "\nthe 5s is pass, you are to slow! "
fi