CentOS Stream 9 vsftpd虚拟用户安装配置

1、安装工具包

使用yum指令进行安装软件包

yum -y install vsftpd pam-devel libdb-utils

在这里插入图片描述
查看软件包安装了哪些指令

[root@localhost~]# rpm -ql libdb-utils | grep bin
/usr/bin/db_archive
/usr/bin/db_checkpoint
/usr/bin/db_deadlock
/usr/bin/db_dump
/usr/bin/db_dump185
/usr/bin/db_hotbackup
/usr/bin/db_load
/usr/bin/db_log_verify
/usr/bin/db_printlog
/usr/bin/db_recover
/usr/bin/db_replicate
/usr/bin/db_stat
/usr/bin/db_tuner
/usr/bin/db_upgrade
/usr/bin/db_verify

2、创建虚拟用户

创建一个不能登录的用户,用作ftp服务的虚拟用户,由于这个ftp用户将来都是用来 向网站上传文件的,所以创建用户的时候将这个用户的家目录设置在web服务器的根目录

useradd -d /data/web/ -c"vsftpd虚拟用户" -s /sbin/nologin vuser_ftp

在这里插入图片描述
-d /data/web/表示指定用户的家目录。
/data/web/指定web服务器的根目录。
-s/sbin/nologin 指令指定用户的Shell,/sbin/nologin表示此用户不能登录到当前系统。
使用vuser_ftp作为虚拟用户的映射对象

3、新建虚拟用户配置文件

创建一个记录ftp虚拟用户的用户名和密码文件(文件名随便指定这里用login.txt)
此文件的格式为:
一行用户名,换一行密码。
多个用户分行写入。
如创建/etc/vsftpd/login.txt文件,并设定用户名和密码,指令如下

[root@localhost ~]# cat >/etc/vsftpd/login.txt<<EOF
user1
user1passwd
user2
user2passwd
> EOF
[root@localhost ~]# cat /etc/vsftpd/login.txt 
user1
user1passwd
user2
user2passwd

在这里插入图片描述
**

注意:用户名和密码要分开书写。

**

4、生成虚拟用户认证文件

使用 db_load 命令生成虚拟用户认证文件,如下代码所示

db_load-T-t hash-f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db

在这里插入图片描述
把/etc/vsftpd/vsftpd_login.db 文件修改为 600 权限

chmod 600 /etc/vsftpd/vsftpd_login.db

在这里插入图片描述

  • login.txt 文件是刚刚新建的用户名和密码文件。
  • vsftpd_login.db 文件是 db_load
  • 命令生成的虚拟用户认证文件,这个文件用 vi 打开 是看不到的,而且这个 db 文件的权限是 600。
  • -db_load 命令是由libdb-utils 软件包提供的,如果没有这个命令就需要安装 libdb-utils 安装包。

- 注意:

  • 目前login.txt 内容是实验环境,如果需要增加用户就把用户名和密码按照规定的格式
  • 写入 login.txt 文件。
  • 每次增加完虚拟用户之后都用使用 db_load 执行过那条命令来更新 vsftpd_login.db
  • 这个虚拟用户认证文件。
  • 虚拟用户名单文件中用户的用户名和口令信息格式:“奇数行用户名,偶数行口令”

5、修改主配置文件

修改 ftp 服务配置文件/etc/vsftpd/vsftpd.conf,可以把/etc/vsftpd/vsftpd.conf
备份一下然后修改 vsftpd.conf 或者备份之后,重写一个 vsftpd.conf 文件。
本次实验的 vsftpd.conf 内容如下:
cd /etc/vsftpd/
\cp -av vsftpd.conf vsftpd.conf_bak_localuser
cat >/etc/vsftpd/vsftpd.conf<<EOF

###### $(date +%F-%T)--- wcg -begin ######
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
listen=YES
userlist_enable=YES
allow_writeable_chroot=YES
#tcp_wrappers=YES
max_per_ip=5
max_clients=100
###### 下面是关于虚拟用户的配置-begin ######
#打开虚拟用户功能
guest_enable=YES
#将所有虚拟用户映射成handuoduo这个本地用户,此用户是之前新建的用户
guest_username=vuser_ftp
#ftp用户的pam验证方式,默认是vsftpd,必须改掉
pam_service_name=ftp.vu
#这里放置每个虚拟用户的配置文件
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#####特别注意:vsftpd.conf 这个配置文件中每行的两端都不能有空格######
###### 下面是关于虚拟用户的配置-end ######
###### $(date +%F-%T)--- wcg -end
EOF

在这里插入图片描述

6、创建 vsftpd 服务验证文件

(1)使用rpm -ql vsftpd 命令查找验证模块的例文
(2)拷贝到vsftpd.conf文件中配置的路径中并改变文件名

cp -av `rpm -ql vsftpd  |grep vsftpd.pam` /etc/pam.d/ftp.vu

在这里插入图片描述
(3)修改配置文件

[ -f /usr/lib64/security/pam_userdb.so ] && [ -f /etc/vsftpd/vsftpd_login.db ] && \
cat >/etc/pam.d/ftp.vu<<EOF
auth required /usr/lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /usr/lib64/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login
EOF

在这里插入图片描述
注意(1)操作系统是64位的,库文件位置在/usr/lib64目录下,使用find指令查找即可。
注意(2)db= 定义的是验证数据文件存放的位置,这个文件是以.db结尾的。但是在/etc/pam.d/ftp.vu 中配置的时候不要加上.db

确认当前操作系统是否为64位


[root@wcg ~]# uname -r
5.14.0-444.el9.x86_64
[root@wcg~]# file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter/lib64/ld-linux-x86-64.so.2,BuildID[sha1]=0a2f3573580b1143e3efe56186d85849ca713ce7, for GNU/Linux 3.2.0, stripped

7、自定义虚拟用户文件的存放目录

1)创建每个用户的权限配置文件,存放在/etc/vsftpd/vsftpd_user_conf目录下。

mkdir -pv /etc/vsftpd/vsftpd_user_conf

在这里插入图片描述

(2)创建虚拟用户配置文件-user1用户。

cat >/etc/vsftpd/vsftpd_user_conf/user1<<EOF
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
local_root=/data/web/html
EOF
######这里需要注意的是配置语句的两端都不能有空格

(3)创建虚拟用户配置文件-user2用户。

cat >/etc/vsftpd/vsftpd_user_conf/user1<<EOF
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
local_root=/data/web/vsftp_data
EOF

在这里插入图片描述
(4)创建虚拟用户家目录
mkdir -pv /data/web/{html,vsftp_data}
(5)修改权限
chown -R vuser_ftp. /data/web/
在这里插入图片描述

8、重启vsftpd服务,使用filezilla客户端验证

[root@localhost vsftpd]# systemctl restart vsftpd
[root@localhost vsftpd]# ss -tulnap |grep vsftpd
tcp   LISTEN 0      32           0.0.0.0:21          0.0.0.0:*     users:(("vsftpd",pid=2731,fd=3))                     
[root@localhost vsftpd]# ps aux |grep vsftpd
root        2731  0.0  0.0   9132  1056 ?        Ss   17:46   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root        2735  0.0  0.0   6636  2176 pts/3    S+   17:46   0:00 grep --color=auto vsftpd

在这里插入图片描述

测试完成可将vsftpd虚拟用户完整配置文件备份

[root@wcg ~]# zip -r vsftpd-virtualuser-allconfig.zip  /etc/pam.d/ftp.vu /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd_user_conf/ /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db 
  adding: etc/pam.d/ftp.vu (deflated 47%)
  adding: etc/vsftpd/vsftpd.conf (deflated 40%)
  adding: etc/vsftpd/vsftpd_user_conf/ (stored 0%)
  adding: etc/vsftpd/vsftpd_user_conf/user1 (deflated 42%)
  adding: etc/vsftpd/vsftpd_user_conf/user2 (deflated 41%)
  adding: etc/vsftpd/login.txt (deflated 36%)
  adding: etc/vsftpd/vsftpd_login.db (deflated 99%)
[root@hanyw-bjidc01-nginx201 ~]# unzip -l vsftpd-virtualuser-allconfig.zip 
Archive:  vsftpd-virtualuser-allconfig.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
      156  05-18-2024 14:48   etc/pam.d/ftp.vu
      911  05-18-2024 15:23   etc/vsftpd/vsftpd.conf
        0  05-18-2024 15:29   etc/vsftpd/vsftpd_user_conf/
      177  05-18-2024 15:28   etc/vsftpd/vsftpd_user_conf/user1
      183  05-18-2024 15:29   etc/vsftpd/vsftpd_user_conf/user2
       36  05-18-2024 14:33   etc/vsftpd/login.txt
    12288  05-18-2024 15:09   etc/vsftpd/vsftpd_login.db
---------                     -------
    13751                     7 files

在这里插入图片描述
备份完后,vsftpd本地用户的配置基本完成,其他内容待续……

相关推荐

  1. centos 8.2 安装配置 vsftpd 虚拟用户访问

    2024-05-26 01:54:12       38 阅读
  2. CentOS-Stream-9配置vsftpd

    2024-05-26 01:54:12       28 阅读
  3. VSFTP虚拟用户访问-设置

    2024-05-26 01:54:12       30 阅读
  4. linux安装Vsftpd

    2024-05-26 01:54:12       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-26 01:54:12       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-26 01:54:12       101 阅读
  3. 在Django里面运行非项目文件

    2024-05-26 01:54:12       82 阅读
  4. Python语言-面向对象

    2024-05-26 01:54:12       91 阅读

热门阅读

  1. 【大数据篇】Hadoop:大数据处理的核心基石

    2024-05-26 01:54:12       38 阅读
  2. 微信小程序:获取经纬度

    2024-05-26 01:54:12       32 阅读
  3. PostgreSQL与MySQL的数据库层面比较

    2024-05-26 01:54:12       39 阅读
  4. git 派生仓库怎么同步主仓库的新分支

    2024-05-26 01:54:12       34 阅读
  5. 若依框架实战指南:从入门到精通

    2024-05-26 01:54:12       31 阅读
  6. 「大数据」Lambda架构

    2024-05-26 01:54:12       36 阅读
  7. 合格的测试工程师,需要掌握的

    2024-05-26 01:54:12       35 阅读
  8. Golang对nil的Slice和空Slice处理是一致的吗

    2024-05-26 01:54:12       28 阅读
  9. leetcode刷题

    2024-05-26 01:54:12       36 阅读