linux-vsftp虚拟多用户

目录

1.安装vsftp

2.安装DB工具,能转化普通文件为vsftpd识别数据库加密文件

3.创建登录虚拟用户的名单

4.加密文件

6.需要修改vsftpd的配置文件

7.修改vsftp的配置文件,加载支持虚拟用户模式

8.针对不同用户开启不同权限

9.重启服务

10.测试


安装vsftp,并设置虚拟用户登录

1.安装vsftp

yum install vsftpd

2.安装DB工具,能转化普通文件为vsftpd识别数据库加密文件

yum install db4 db4-utils -y

3.创建登录虚拟用户的名单

cd /etc/vsftpd/ 
vim ftp_user.txt

切换到etc目录里,创建密码文件(必须在/etc/里)

查看创建的密码文件(奇数是用户,偶数是密码)


4.加密文件

由于这样普通文件很不安全,vsftpd也无法识别改txt的文件数据,因此还得用db_load命令

对于我们刚刚创建的ftp_user.txt文件进行加密

db_load -T -t hash -f /etc/vsftpd/ftp_user.txt /etc/vsftpd/ftp_user.db
chmod 600 ftp_user.db

删除一下源明文文件,防止安全问题

[root@localhost vsftpd]# rm ftp_user.txt 
rm: remove regular file 'ftp_user.txt'? y

5.真实用户映射

创建当虚拟用户登录ftp之后进入文件夹的路径,且和linux中的用户做一个映射关系,防止虚拟用户登录有,创建了文件夹,但是系统没有此用户会报错一个问题。

创建一个系统用户和虚拟用户做映射,且不需要家目录,禁止用户登录shell

useradd -d /var/ftpdir/ -s /sbin/nologin virtual_user

检查一下用户的家目录

ll -ld /var/ftpdir/

这个用户需要做ftp虚用户的映射,所以如果家目录只允许这个真实用户访问,那么会有权限问题,我们把他的家目录权限修改一下

[root@localhost vsftpd]# chmod -Rf 755 /var/ftpdir/
[root@localhost vsftpd]# ll -ld /var/ftpdir/
drwxr-xr-x 3 virtual_user virtual_user 78 Oct 15 17:33 /var/ftpdir/

修改virtual_user用户添加到ftpsuer文中,增大系统安全,该操作不会影响虚拟用户的操作

echo "virtual_user" >> /etc/vsftpd/ftpusers

6.需要修改vsftpd的配置文件

添加一个支持虚拟用户验证的pam文件,pam是一组安全机制的模块,认证文件路径在/etrc/pam.d/vsftp

[root@localhost vsftpd]# echo "virtual_user" >> /etc/vsftpd/ftpusers 
[root@localhost vsftpd]# vim /etc/pam.d/vsftpd 
[root@localhost vsftpd]# vim /etc/pam.d/vsftpd 
[root@localhost vsftpd]# cat /etc/vsftpd/ftp_user.db 
ftp_user.db             ftpusers                user_list               vsftpd.conf             vsftpd_conf_migrate.sh
[root@localhost vsftpd]# cat /etc/pam.d/vsftpd 


auth required pam_userdb.so db=/etc/vsftpd/ftp_user
account required pam_userdb.so db=/etc/vsftpd/ftp_user

7.修改vsftp的配置文件,加载支持虚拟用户模式

我们看下改之前的配置

配置vsftp文件

anonymous_enable=NO--- (不允许匿名用户访问)

local_root--- (设置ftp主目录)

pasv_enable=YES--- (开启被动数据传输模式)

guest_enable=YES---(开启虚拟用户模式)

guest_username--- (虚拟用户实体名称)

user_config_dir--- (虚拟用户权限文件目录位置)

allow_writeable_chroot=YES---(centos7必须添加)

anonymous_enable=NO

local_root=/var/ftpdir

pasv_enable=YES

guest_enable=YES

guest_username

user_config_dir

allow_writeable_chroot=YES

添加后

vim /etc/vsftpd/vsftpd.conf 
grep -Ev "^#|^$" /etc/vsftpd/vsftpd.conf 

8.针对不同用户开启不同权限

anon_world_readable_only=NO

write_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_upload_enable=YES

local_root=/home/CodeTiger

write_enable=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_world_readable_only=NO

download_enable=NO

local_root=/home/CodeTiger

ou : 该用户,允许他能够上传,新建,修改,查看,删除等权限

ftpuser:只读权限

需要修改vsftpd文件,定义user_config_dir参数即可

mkdir /etc/vsftpd/virtual_user_dir
cd /etc/vsftpd/virtual_user_dir
vim ou

添加

local_root=/home/ftpuser/ou  # 目录修改成ou需要设置ftp的目录
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

给ftpuser添加只读权限

[root@localhost ~]# cat /etc/vsftpd/virtual_user_dir/ftpuser 

local_root=/var/ftpdir/ftpuser  # 目录修改成ftpuser需要设置ftp的目录
write_enable=NO
anon_world_readable_only=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

记得要创建用户的家目录

mkdir -p /var/ftpdir/ou
mkdir -p /var/ftpdir/ftpuser
chown -R virtual_user:virtual_user /var/ftpdir

修改下配置文件

vim /etc/vsftpd/vsftpd.conf

添加这个

user_config_dir=/etc/vsftpd/virtual_user_dir

9.重启服务

[root@localhost virtual_user_dir]# systemctl restart vsftpd
[root@localhost virtual_user_dir]# systemctl status vsftpd.
Unit vsftpd..service could not be found.
[root@localhost virtual_user_dir]# systemctl status vsftpd.service 
● vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2023-10-15 19:54:31 CST; 11s ago
  Process: 36959 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 36961 (vsftpd)
    Tasks: 1
   CGroup: /system.slice/vsftpd.service
           └─36961 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Oct 15 19:54:30 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon...
Oct 15 19:54:31 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
[root@localhost virtual_user_dir]# 

10.测试

ou用户以创建文件和文件夹

ftpuser不可以创建文件和文件夹

他只有读取的权限没办法创建和删除文件和目录

相关推荐
Charary23 分钟前
字符设备驱动开发与杂项开发
linux·驱动开发
梦游钓鱼1 小时前
在window终端创建docker容器的问题
运维·docker·容器
孤寂大仙v1 小时前
【Linux笔记】理解文件系统(上)
linux·运维·笔记
沉默的八哥1 小时前
K8S高可用Web应用部署方案
运维
winyh52 小时前
Vite 打包后Nginx部署配置
运维·nginx
钢板兽2 小时前
Java后端高频面经——JVM、Linux、Git、Docker
java·linux·jvm·git·后端·docker·面试
byxdaz2 小时前
NVIDIA显卡驱动、CUDA、cuDNN 和 TensorRT 版本匹配指南
linux·人工智能·深度学习
pyliumy2 小时前
在基于Arm架构的华为鲲鹏服务器上,针对openEuler 20.03 LTS操作系统, 安装Ansible 和MySQL
服务器·架构·ansible
大白的编程日记.3 小时前
【Linux学习笔记】Linux基本指令分析和权限的概念
linux·笔记·学习