使用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
创建一个不能登录的用户,用作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作为虚拟用户的映射对象
创建一个记录ftp虚拟用户的用户名和密码文件(文件名随便指定这里用login.txt)
此文件的格式为:
一行用户名,换一行密码。
多个用户分行写入。
如创建/etc/vsftpd/login.txt文件,并设定用户名和密码,指令如下
[root@localhost ~]# cat >/etc/vsftpd/login.txt<
user1
user1passwd
user2
user2passwd
> EOF
[root@localhost ~]# cat /etc/vsftpd/login.txt
user1
user1passwd
user2
user2passwd
**
**
使用 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
- 注意:
修改 ftp 服务配置文件/etc/vsftpd/vsftpd.conf,可以把/etc/vsftpd/vsftpd.conf (1)使用rpm -ql vsftpd 命令查找验证模块的例文 1)创建每个用户的权限配置文件,存放在/etc/vsftpd/vsftpd_user_conf目录下。 (2)创建虚拟用户配置文件-user1用户。 (3)创建虚拟用户配置文件-user2用户。
备份一下然后修改 vsftpd.conf 或者备份之后,重写一个 vsftpd.conf 文件。
本次实验的 vsftpd.conf 内容如下:
cd /etc/vsftpd/
\cp -av vsftpd.conf vsftpd.conf_bak_localuser
cat >/etc/vsftpd/vsftpd.conf<###### $(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 服务验证文件
(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、自定义虚拟用户文件的存放目录
mkdir -pv /etc/vsftpd/vsftpd_user_conf
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
######这里需要注意的是配置语句的两端都不能有空格
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本地用户的配置基本完成,其他内容待续……