vsftpd安装,配置虚拟用户

本文详述了如何在服务器上安装和配置VSFTPD,包括检查与安装VSFTPD,关闭SELinux,创建虚拟用户,生成用户数据文件,配置PAM认证,设置vsftpd.conf文件,以及处理配置过程中遇到的问题,如读写权限和SELinux影响等。

准备工作

检查是否有安装vsftpd

# 执行命令无输出,表示没有安装
rpm -qa | grep vsftp

如果已经安装,则不需要再重复安装,到此结束。

检查是否有db_load

# 执行命令有输出,表示已安装
db_load

在这里插入图片描述
如果没有安装,则执行命令进行安装

yum -y install db4

关闭SElinux

# 临时关闭
setenforce 0
# 永久关闭
vi /etc/sysconfig/selinux
# SELINUX=enforcing 改为 SELINUX=disabled

在这里插入图片描述

下载vsftpd( 这 是 我 使 用 的 版 本 v s f t p d − 3.0.2 − 25. e l 7. x 86 _ 64. r p m \color{red}{这是我使用的版本 vsftpd-3.0.2-25.el7.x86\_64.rpm} 使vsftpd3.0.225.el7.x86_64.rpm)并上传到服务器

安装vsftpd

# 注意需要将安装包名称替换成自己下载的包名称
rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm

在这里插入图片描述
如 果 安 装 报 错 \color{red}{如果安装报错}
error: Failed dependencies:
xxxxxx is need by ${vsftpd包名}
则执行如下命令,进行安装时不再分析包之间的依赖关系(自己试过不分析包的方式安装,暂未发现问题)

rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm --nodeps --force

配置vsftpd

新建一个宿主用户,用于vsftpd虚拟用户登录关联映射

# 添加名为ftpuser的宿主用户
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
# 给宿主用户设置密码
passwd ftpuser
mkdir /home/vsftpd
chown -R ftpuser.root /home/vsftpd

生成虚拟用户数据文件

  • 进入vsftpd配置文件目录
    cd /etc/vsftpd/
    
  • vi vuser_passwd添加虚拟用户数据, 奇 数 行 为 用 户 名 , 偶 数 行 为 用 户 名 密 码 \color{red}{奇数行为用户名,偶数行为用户名密码}
    readwriteUser
    123
    readUser
    123
    
    在这里插入图片描述
  • 使用db_load生成用户数据文件
    db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
    

配置虚拟用户验证文件

  • 备份文件/etc/pam.d/vsftpd, 注 意 : 文 件 名 可 能 不 叫 这 个 , 需 要 进 入 到 / e t c / p a m . d 目 录 进 行 查 看 具 体 文 件 名 \color{red}{注意:文件名可能不叫这个,需要进入到/etc/pam.d目录进行查看具体文件名} /etc/pam.d,因为在网上看到有叫vsftpd.vu的
    cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
    
  • vi /etc/pam.d/vsftpd清空vsftpd的内容,加如下内容
    #%PAM-1.0
    auth        required    pam_userdb.so   db=/etc/vsftpd/vuser_passwd
    account     required    pam_userdb.so   db=/etc/vsftpd/vuser_passwd
    
    说明:/etc/vsftpd/vuser_passwd路径是刚才生成的用户数据文件去掉**.db**后缀后的路径

配置vsftpd

  • 备份文件/etc/vsftpd/vsftpd.conf
    cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
    
  • 清空/etc/vsftpd/vsftpd.conf的内容
    echo '' > vsftpd.conf
    
  • 添加如下内容
    local_enable=YES
    # 这里的写包括了执行命令,所以不能直接设置为NO
    write_enable=YES
    anon_umask=022
    # 不允许匿名登录
    anonymous_enable=NO
    # ** 启用宿主用户 **
    guest_enable=YES
    # ** 宿主用户名 **
    guest_username=ftpuser
    # ** 刚才配置的虚拟用户验证文件的名字 **
    pam_service_name=vsftpd
    # 将用户限制在其主目录下
    chroot_local_user=NO
    # 当用户被限制在其主目录下时,允许执行写操作
    allow_writeable_chroot=YES
    chroot_list_enable=NO
    # ftp根目录
    local_root=/data/ftp/
    # 日志文件保存路径
    xferlog_file=/etc/vsftpd/logs/xferlog
    # 用户单独配置文件存放目录,该目录下用户的文件名就是对应用户名
    user_config_dir=/etc/vsftpd/vuser_conf
    
  • 如果需要对用户进行特殊的配置,可在 vsftpd.conf中的user_config_dir对应的目录, 新建一个和虚拟用户名相同的文件,进行单独处理。
    由于我的虚拟用户有readwriteUser和readUser
    分别进行配置
readwriteUser
  • 进入虚拟用户配置文件存放目录
    cd /etc/vsftpd/vuser_conf
    
  • 新建readwriteUser文件
    vi readwriteUser
    
  • 加入如下内容
    local_root=/data/ftp/
    anon_world_readable_only=NO
    chroot_local_user=YES
    write_enable=YES
    local_umask=022
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES
    
readUser
  • 新建readUser文件
    vi readUser
    
  • 加入如下内容
    # 设置readUser的根目录
    local_root=/data/ftp/aa
    anon_world_readable_only=NO
    local_umask=022
    # 不允许上传
    anon_upload_enable=NO
    # 不允许新建文件夹
    anon_mkdir_write_enable=NO
    # 不允许其他的写操作
    anon_other_write_enable=NO
    

启动

# 为什么执行restart而不是start,因为restart的时候,没有启动会自己启动,启动了会停掉服务重新启动
systemctl restart vsftpd.service

测试

  • 添加测试数据

    cd /data/ftp
    echo "this is index" > index.txt
    mkdir aa
    echo aa > aa/aa.txt
    mkdir aa/bb
    echo bb > aa/bb/bb.txt
    chown -R ftpuser /data/ftp
    
  • 使用readwriteUser登录并上传文件
    在这里插入图片描述

  • 使用readUser登录并测试上传文件
    在这里插入图片描述

问题总结

1、pam_service_name设置存在问题,因为/etc/pam.d/下面对应的文件可能不是vsftpd.vu,而是vsftpd

2、500 OOPS: vsftpd: refusing to run with writable root inside chroot (),因为vsftpd的检查机制,使得被限制用户主目录的用户,不能拥有写权限。 需 要 加 上 a l l o w _ w r i t e a b l e _ c h r o o t = Y E S \color{red}{需要加上allow\_writeable\_chroot=YES} allow_writeable_chroot=YES

3、虚拟用户登录后,出现空白页。因为SELinux开启的原因,所以需要关闭SELinux

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值