Redhat7&Centos7 Vsftpd虚拟用户使用方式

2021年09月15日 阅读数:1
这篇文章主要向大家介绍Redhat7&Centos7 Vsftpd虚拟用户使用方式,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

观看前说明
文档阅读说明,本篇文档主要讲解在工做中如何使用ftp虚拟用户替代系统用户实现文件传输等。
shell

一、Vsftpd的安装

vsftp安装经过yum进行安装,yum具体配置方式就再也不本文档中体现。数据库

# vsftpd是ftp server服务,用于ftp服务
# ftp是ftp client命令,用户可经过此命令登录到对端的ftp server上
yum install -y vsftpd ftp

二、建立虚拟用户映射用户

     使用虚拟用户须要在系统上建立一个系统用户,将全部的虚拟用户映射到此系统用户上(此系统用户须要修改为不可登录用户,安全考虑!)
     因为系统的特殊性,对虚拟用户建立有不一样的要求(各系统自定义)
安全

# useradd Linux系统建立用户命令
# -d 指定用户家目录
# -s 指定用户登录shell,nologin表明用户不可登录
# -g 指定用户归属组(系统要求,不然文件传输时权限会出现问题)
# iotdn_virftp 虚拟用户所映射的系统用户,该用户可不设置密码,如安全要求,可设置一个比较长的密码
useradd -d /cbbsiot_virftp -s /sbin/nologin -g wlwjf iotdn_virftp

三、Vsftpd服务配置

# 切换到vsftpd目录
cd /etc/vsftpd/

# 将默认的vsftpd配置文件备份
mv vsftpd.conf vsftpd.conf.$(date +%Y%m%d)

# 将相关的ftp配置写入配置文件,如须要特殊配置项请自行添加
echo "
#禁止匿名用户登陆
anonymous_enable=NO
#容许本地用户登陆
local_enable=YES
#开放本地用户写权限
write_enable=YES
#记录FTP的传输过程
xferlog_enable=YES
#指定FTP传输日志的路径和名字
xferlog_file=/var/log/vsftpd_xfer.log
#启用虚拟帐户 
guest_enable=YES
#把虚拟帐户映射到系统帐户iotdn_virftp              
guest_username=iotdn_virftp
#使用虚拟用户验证(PAM验证)
pam_service_name=vsftpd
#设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为它的配置文件)
user_config_dir=/etc/vsftpd/iotdn_virftp_config
#启用chroot时,虚拟用户根目录容许写入
allow_writeable_chroot=YES
#被动模式,文件传输端口的最大最小范围
pasv_min_port=30000
pasv_max_port=35000" >> /etc/vsftpd/vsftpd.conf

四、虚拟用户配置

此处建立ftp虚拟用户,虚拟用户建立要求以下:bash

  • [ftp_cbbs ] 用户为告警传输用户,外部经过该用户访问系统内部的/cbbsiot_file_interface_mfs03/data/monitor目录;
  • [ftp_cbbsiot ] 用户为其余业务传输用户,外部经过该用户须要访问系统内部的/cbbsiot_file_interface_mfs03/data/tap3/lte和/cbbsiot_file_interface_mfs03/data/tap3/sms目录

因为为了保护系统内部目录结果,对外部展现目录以下:session

  • [ ftp_cbbs ] 展现目录 :/monitor
  • [ ftp_cbbsiot ] 展现目录:/lte和/sms

建立ftp虚拟用户ui

# /etc/vsftpd/iotdn_virftp文件为虚拟用户帐号和口令文件
# 奇数为ftp虚拟用户,偶数为ftp虚拟用户密码
# 因为系统要求,命令行不能出现明文密码,因此经过密文解密的方式写入iotdn_virftp文件内
echo "ftp_cbbs" >> /etc/vsftpd/iotdn_virftp
pd=$(echo 'eVB2RHBJUSM2TUFlSGEjUAo=' | base64 -d)
echo $pd >> /etc/vsftpd/iotdn_virftp

# db_load命令的做用是将用户信息文件转换为数据库并使用 hash 加密,若是须要保存虚拟账号和密码的文本文件且不让被系统账号直接调用,咱们就须要使用db_load 命令生成db数据库
db_load -T -t hash -f /etc/vsftpd/iotdn_virftp  /etc/vsftpd/iotdn_virftp.db

# 修改iotdn_virftp文件权限,除root外其余用户不可查看等
chmod 600 /etc/vsftpd/iotdn_virftp

修改vsftpd的PAM验证配置加密

# 此处须要修改/etc/pam.d/vsftpd文件
# 将原文件的auth和account行所有注释,新增最后两行
# db=/etc/vsftpd/iotdn_virftp 该文件时vsftp帐号口令文件,须要注意如下
cat /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
auth                 required     pam_userdb.so   db=/etc/vsftpd/iotdn_virftp
account              required     pam_userdb.so   db=/etc/vsftpd/iotdn_virftp

虚拟用户目录配置spa

前面咱们提到不一样用户有不一样的需求,因此咱们分开来讲这两个用户;命令行

  • [ ftp_cbbs ]
# 建立vsftpd虚拟用户配置文件目录,须要和vsftpd的配置保持一致
mkdir /etc/vsftpd/iotdn_virftp_config

# 写入虚拟用户配置
echo "
# 容许写入
write_enable=YES
#容许浏览FTP目录和下载
anon_world_readable_only=NO
#容许用户下载
download_enable=YES
# 容许虚拟用户上传文件
anon_upload_enable=YES
# 容许虚拟用户建立目录
anon_mkdir_write_enable=YES
# 容许虚拟用户执行其余操做(如更名、删除)
anon_other_write_enable=YES
# 上传文件的掩码,如022时,上传目录权限为755,文件权限为644
anon_umask=002
# 指定虚拟用户的虚拟目录(虚拟用户登陆后的主目录,即登陆ftp后访问的根目录)
local_root=/cbbsiot_file_interface_mfs03/data/" >> /etc/vsftpd/iotdn_virftp_config/ftp_cbbs
  • [ ftp_cbbsiot ]
# 因为虚拟用户不支持配置多个目录,此处须要经过挂在目录的形式实现虚拟用户访问多个不一样的目录
# 建立对应的目录(参考上面写的)
mkdir /cbbsiot_virftp/lte
mkdir /cbbsiot_virftp/sms
# 修改目录权限,因为主机配置可能不要同样,须要各位根据不一样状况来修改权限,/cbbsiot_virftp及子级目录必定要有相应的权限,源目录也是如此
# 挂载目录须要配置守护进程,防止设备宕机或其余缘由致使目录未挂载影响业务
chown iotdn_virftp:iotdn_virftp -R /cbbsiot_virft
mount --bind /cbbsiot_file_interface_mfs03/data/tap3/lte /cbbsiot_virftp/lte
mount --bind /cbbsiot_file_interface_mfs03/data/tap3/sms /cbbsiot_virftp/sms

# 写入虚拟用户配置
echo "
# 容许写入
write_enable=YES
#容许浏览FTP目录和下载
anon_world_readable_only=NO
#容许用户下载
download_enable=YES
# 容许虚拟用户上传文件
anon_upload_enable=YES
# 容许虚拟用户建立目录
anon_mkdir_write_enable=YES
# 容许虚拟用户执行其余操做(如更名、删除)
anon_other_write_enable=YES
# 上传文件的掩码,如022时,上传目录权限为755,文件权限为644
anon_umask=002
# 指定虚拟用户的虚拟目录(虚拟用户登陆后的主目录,即登陆ftp后访问的根目录)
local_root=/cbbsiot_virftp/" >> /etc/vsftpd/iotdn_virftp_config/ftp_cbbs

配置完成后,须要重启vsftpd服务rest

# 重启vsftpd服务
systemctl restart vsftpd
# 开机自动启动
systemctl enable vsftpd

验证的过程就再也不文档里面体现了,请各位自行验证吧,若是有问题,能够联系我沟通。