返回列表 发帖

CentOS8_vsftpd虚拟用户

操作系统的版本:
[root@centos8 ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@centos8 ~]#
[root@centos8 ~]# uname -r
4.18.0-193.el8.x86_64



安装vsftpd服务:(使用本地光盘YUM源也是可以的)
dnf -y install vsftpd

修改vsftpd的主配置文件:
echo "allow_writeable_chroot=YES" >> /etc/vsftpd/vsftpd.conf

查看vsftpd的主配置文件:
[root@centos8 ~]# cat /etc/vsftpd/vsftpd.conf |grep -v '^#' |grep -v '^$'
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
allow_writeable_chroot=YES


开启vsftpd服务:
systemctl start vsftpd

开机自动开启vsftpd服务:
systemctl enable vsftpd


关闭SELinux:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config


防火墙的配置可以参考:CentOS8_vsftpd匿名用户


###
给vsftpd创建一个系统用户:
[root@centos8 ~]# useradd -s /sbin/nologin virtual_ftp_user
[root@centos8 ~]# tail -1 /etc/passwd
virtual_ftp_user:x:1000:1000::/home/virtual_ftp_user:/sbin/nologin
[root@centos8 ~]# tail -1 /etc/group
virtual_ftp_user:x:1000:




为虚拟用户建立PAM认证文件:
echo "auth       required     pam_userdb.so db=/etc/vsftpd/vuser"  >  /etc/pam.d/vsftpd
echo "account    required     pam_userdb.so db=/etc/vsftpd/vuser"  >>  /etc/pam.d/vsftpd

图片1.png
2020-10-10 22:25





创建虚拟用户配置文件夹:
mkdir -p /home/virtual_ftp_user/vuser_dir

在vsftpd的主配置文件中添加虚拟用户支持:
cat >>/etc/vsftpd/vsftpd.conf<< eof
anon_umask=022
guest_enable=YES
guest_username=virtual_ftp_user
user_config_dir=/home/virtual_ftp_user/vuser_dir
eof

图片2.png
2020-10-10 22:26





重启vsftpd服务:
[root@centos8 ~]# systemctl restart vsftpd
[root@centos8 ~]#
[root@centos8 ~]# pgrep -l vsftpd
10061 vsftpd
[root@centos8 ~]# echo $?
0
[root@centos8 ~]# ps -ef |grep vsftpd |grep -v grep
root       10061       1  0 20:50 ?        00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[root@centos8 ~]# echo $?
0




###
添加FTP虚拟用户及其密码:(奇数行为用户名,偶数行为上一行用户的密码)
cat >/home/virtual_ftp_user/vuser.txt<< EOF
zhuohua
111
funny
222
EOF


指定虚拟用户zhuohua的根目录:( 其实虚拟用户的根目录可以随意指定的 )
echo 'local_root=/ftp' >> /home/virtual_ftp_user/vuser_dir/zhuohua

允许虚拟用户zhuohua上传文件:
echo 'anon_upload_enable=YES' >> /home/virtual_ftp_user/vuser_dir/zhuohua

允许虚拟用户zhuohua上传文件夹:
echo 'anon_mkdir_write_enable=YES' >> /home/virtual_ftp_user/vuser_dir/zhuohua

允许虚拟用户zhuohua修改和删除文件、文件夹:
echo 'anon_other_write_enable=YES' >> /home/virtual_ftp_user/vuser_dir/zhuohua


##
指定虚拟用户funny的根目录:(这样就只能下载文件和文件夹了)
echo 'local_root=/ftp' >> /home/virtual_ftp_user/vuser_dir/funny


###
创建数据库文件:
[root@centos8 ~]# db_load -T -t hash -f /home/virtual_ftp_user/vuser.txt /etc/vsftpd/vuser.db

创建FTP目录:
mkdir -p /ftp
chmod -R 777 /ftp/

实验至此,对于/ftp/里面的所有内容,zhuohua可以下载、上传、修改、删除;funny只可以下载



FTP的操作日志记录:(可以看到不同虚拟用户的操作记录的)
[root@centos8 ~]# tail /var/log/xferlog

### 输入(Input)的记录
Sat Oct 10 21:00:28 2020 1 ::ffff:192.168.168.159 1460 /my_private_key.ppk b _ i g zhuohua ftp 0 * c
Sat Oct 10 21:00:28 2020 1 ::ffff:192.168.168.159 434 /zabbix.conf.php b _ i g zhuohua ftp 0 * c

### 输出(Output)的记录
Sat Oct 10 21:03:25 2020 1 ::ffff:192.168.168.159 4 /dir1/2.txt b _ o g zhuohua ftp 0 * c
Sat Oct 10 21:03:25 2020 1 ::ffff:192.168.168.159 4 /1.txt b _ o g zhuohua ftp 0 * c

### 输出(Output)的记录
Sat Oct 10 21:05:41 2020 1 ::ffff:192.168.168.159 1460 /my_private_key.ppk b _ o g funny ftp 0 * c
Sat Oct 10 21:05:41 2020 1 ::ffff:192.168.168.159 434 /zabbix.conf.php b _ o g funny ftp 0 * c




######
要想再添加FTP用户、目录:
( 假设添加虚拟用户happy,密码888,拥有完全控制的权限,根目录为/ftp2/ )

创建FTP目录:
mkdir -p /ftp2
chmod -R 777 /ftp2/


追加虚拟用户名和密码:
cat >>/home/virtual_ftp_user/vuser.txt<< EOF
happy
888
EOF

echo 'local_root=/ftp2' >> /home/virtual_ftp_user/vuser_dir/happy

echo 'anon_upload_enable=YES' >> /home/virtual_ftp_user/vuser_dir/happy

echo 'anon_mkdir_write_enable=YES' >> /home/virtual_ftp_user/vuser_dir/happy

echo 'anon_other_write_enable=YES' >> /home/virtual_ftp_user/vuser_dir/happy


重建数据库文件:
db_load -T -t hash -f /home/virtual_ftp_user/vuser.txt /etc/vsftpd/vuser.db

备注:无需重启vsftpd服务



######
不同FTP虚拟用户创建的文件、文件夹的属主和属组都是 virtual_ftp_user
[root@centos8 ~]# ll /ftp/
总用量 8
-rw-r--r--. 1 virtual_ftp_user virtual_ftp_user 1460 10月 10 21:00 my_private_key.ppk
-rw-r--r--. 1 virtual_ftp_user virtual_ftp_user  434 10月 10 21:00 zabbix.conf.php

[root@centos8 ~]# ll /ftp2/
总用量 5420
-rw-r--r--. 1 virtual_ftp_user virtual_ftp_user 3412982 10月 10 21:09 FlashFXP-v3.51.1200H.zip
-rw-r--r--. 1 virtual_ftp_user virtual_ftp_user 2133343 10月 10 21:09 lnmp-install.log



相关文章:
CentOS6_vsftpd虚拟用户
CentOS8_PureFTPd虚拟用户验证

Windows使用内置模块ftplib

返回列表