Centos7 安装配置 FTP 服务器(vsftpd)

Background

  • 安装记录,方便以后自己使用。
  • vsftpd是“very secure TTP daemon”的缩写,是一个完全免费的、开放源代码的ftp服务器软件,在Linux发行版中最受推崇的ftp服务器程序,小巧轻快,安全易用,支持虚拟用户,支持带宽限制等功能。

1、安装

#安装
yum install -y vsftpd

#设置开机启动
systemctl enable vsftpd.service

#启动
systemctl start vsftpd.service

#停止
systemctl stop vsftpd.service

#查看状态
systemctl status vsftpd.service

2、修改配置 /etc/vsftpd/vsftpd.conf

# 12 行
anonymous_enable=NO

# 33 行
anon_mkdir_write_enable=YES

# 48行
chown_uploads=YES

# 72行
async_abor_enable=YES

# 83行
ascii_upload_enable=YES

# 84行
ascii_download_enable=YES

# 87行
ftpd_banner=Welcome to blah FTP service.

# 101行
chroot_local_user=YES

# 最末尾添加下列内容
pam_service_name=/etc/pam.d/vsftpd
use_localtime=YES
listen_port=21
idle_session_timeout=300
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd/vconf
data_connection_timeout=1
virtual_use_local_privs=YES
pasv_min_port=40000
pasv_max_port=40010
accept_timeout=5
connect_timeout=1
allow_writeable_chroot=YES
local_enable=YES

3、配置虚拟用户文件 /etc/vsftpd/virtusers

奇数行为用户名,偶数行为密码。不能使用root作为用户名

tee -a /etc/vsftpd/virtusers <<-'EOF'
wlf
12345
EOF

4、生成用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

# 设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
chmod 600 /etc/vsftpd/virtusers.db 

5、修改配置文件 /etc/pam.d/vsftpd

如果系统为32位,下面动态库的目录改为lib

# 修改前先备份 
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

# 先将配置文件中原有的 auth 及 account 的所有配置行均注释掉,再添加下面两行
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 

6、新建系统用户vsftpd,配置用户目录

# 用户登录终端设为/bin/false(即:使之不能登录系统)
useradd vsftpd -d /home/vsftpd -s /bin/false
chown -R vsftpd:vsftpd /home/vsftpd

7、新建虚拟用户 wlf 配置文件

# 创建虚拟用户配置存放目录
mkdir /etc/vsftpd/vconf

#这里建立虚拟用户wlf配置文件
cd /etc/vsftpd/vconf
touch wlf

#编辑wlf用户配置文件,添加内容如下,其他用户类似
local_root=/home/vsftpd/wlf/
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

8、配置用户 wlf 根目录

mkdir -p /home/vsftpd/wlf/
chown -R vsftpd:vsftpd /home/vsftpd

9、重启vsftpd服务器

systemctl restart vsftpd.service

10、使用ftp工具连接测试

在这里插入图片描述
在这里插入图片描述

11、增添用户等自动化脚本

该脚本实现了用户的添加、删除、查看已有用户和查看用户密码等功能。

#!/bin/bash

# 输入参数:操作、用户名和密码
operate=$1
username=$2
password=$3

# 用户配置
user_home_dir=/home/vsftpd/$username/
user_conf_file=/etc/vsftpd/vconf/$username
user_pwd_file=/etc/vsftpd/virtusers

# 提示信息
s1="If query user, please input param 【list】"
s2="\n If query user password, please input param 【secret <username>】"
s3="\n If create user, please input param 【add <username> <password>】"
s4="\n If delete user, please input param 【del <username>】"
msg="$s1$s2$s3$s4"

function custom_print(){
    echo -e "\033[5;34m ***** \033[0m"
    echo -e "\033[32m $@ ! \033[0m"
    echo -e "\033[5;34m ***** \033[0m"
}

# 查看已有用户
function list_user(){
    cat -n $user_pwd_file | awk '{if($1%2==1){print $2}}'
}

# 查看用户密码
function secret_user(){
    n0=`cat -n $user_pwd_file | grep $username | awk '{print $1}'`
	let n1=n0+1
    cat -n $user_pwd_file | awk -v num=$n1 '{if($1==num){print $2}}'
}

# 添加用户
function add_user(){
    # 1、在用户文件中添加用户名和密码
    cat <<EOF >> /etc/vsftpd/virtusers
$username
$password
EOF
    # 2、更新用户数据
    db_load -T -t hash -f $user_pwd_file /etc/vsftpd/virtusers.db
    # 3、建立用户个人配置文件
    cp /etc/vsftpd/vconf/default $user_conf_file
    sed -i "s/default/$username/" $user_conf_file
    # 4、建立用户根目录
    mkdir -p $user_home_dir
    chown -R vsftpd:vsftpd /home/vsftpd
    # 5、重启vsftpd服务器
    systemctl restart vsftpd.service
    msg="User 【$username】 created successfully"
    custom_print $msg
}

# 删除用户
function del_user(){
    rm -rf $user_home_dir
    rm -rf $user_conf_file
    # 获取用户所在配置文件的行号
    n1=$(cat -n $user_pwd_file | grep $username | awk '{print $1}')
    let n2=$n1+1
    # 删除那一行和下面的一行,用户名和密码
    sed -i "${n1},${n2}d" $user_pwd_file
    # 更新用户数据
    db_load -T -t hash -f $user_pwd_file /etc/vsftpd/virtusers.db
    msg="User 【$username】 deleted successfully"
    custom_print $msg
}

# 判断输入参数
if [[ -z $operate || $operate = "help" ]]; then
    custom_print $msg
elif [[ $operate = "add" ]]; then
    if [[ -z $password || -z $username ]]; then
        msg="Please input the username and password"
        custom_print $msg
    else
        add_user
    fi
elif [[ $operate = "del" ]]; then
	if [[ -z $username ]]; then
        msg="Please input the username"
        custom_print $msg
    else
        del_user
    fi
elif [[ $operate = "list" ]]; then
	list_user
elif [[ $operate = "secret" ]]; then
    if [[ -z $username ]]; then
        msg="Please input the username"
        custom_print $msg
    else
        secret_user
    fi
else
    custom_print $msg
fi

在这里插入图片描述

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WaiSaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值