linux-vsftp虚拟多用户

news/2025/2/5 21:51:11/

目录

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 daemonLoaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)Active: active (running) since Sun 2023-10-15 19:54:31 CST; 11s agoProcess: 36959 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)Main PID: 36961 (vsftpd)Tasks: 1CGroup: /system.slice/vsftpd.service└─36961 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.confOct 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不可以创建文件和文件夹

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


http://www.ppmy.cn/news/1183272.html

相关文章

处理大数据的基础架构,OLTP和OLAP的区别,数据库与Hadoop、Spark、Hive和Flink大数据技术

处理大数据的基础架构,OLTP和OLAP的区别,数据库与Hadoop、Spark、Hive和Flink大数据技术 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话&am…

在3分钟内使用AI-Chat生成精美PPT(附AI工具)

前言 在人工智能的大趋势下,AI-Chat是一款令人惊叹的技术。它用强大的自然语言处理技术帮助我们快速生成PPT,提高工作效率。本文将介绍使用ChatAI-Chat生成PPT的方法,以及使用Mindshow转换为炫酷的演示文稿。让技术为我们节省时间&#xff0c…

【Android】MQTT入门——服务器部署与客户端搭建

目录 MQTT 协议简介应用场景优点缺点 部署服务端下载安装包启动服务器 搭建客户端下载SDK添加依赖配置MQTT服务和权限建立连接订阅主题发布消息取消订阅断开连接 MQTT客户端工具最终效果实现传感器数据采集与监测功能思路 MQTT 协议 简介 MQTT(Message Queuing Te…

docker 部署prometheus和grafana

1.启动node 容器 docker run -d -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" --net"bridge" prom/node-exporter 2.访问http://192.168.1.122:9100/metrics 3.创建文件/home/prometheus/ 下…

TypeScript - 枚举 - 常量枚举

常量枚举的定义 使用 const enum 进行常量枚举的定义, 格式如下 : const enum 枚举类型名称{ 元素1, 元素2, 。。。。。。 } 常量枚举的特殊的地方 常量枚举 : 在编译后是不存在的。 在使用常量枚举的元素的时候,编译之…

【开源】基于SpringBoot的天然气工程运维系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程 12.2.2 流程 22.3 各角色功能2.3.1 系统管理员功能2.3.2 用户服务部功能2.3.3 分公司(施工单位)功能2.3.3.1 技术员角色功能2.3.3.2 材料员角色功能 2.3.4 安…

【C++】智能指针:auto_ptr、unique_ptr、share_ptr、weak_ptr(技术介绍 + 代码实现)(待更新)

文章目录 0. 概述智能指针,智能在哪儿?RAII 的介绍四个智能指针的特点: 1. auto_ptr(C98)🐎核心功能的简单实现 2. unique_ptr(C11)🐎核心功能的简单实现 3. shared_ptr&…

DevOps与CI/CD的最佳实践

在当今的软件开发领域,DevOps(开发与运维的结合)和CI/CD(持续集成/持续交付)已经成为了不可或缺的一部分。它们不仅提高了软件开发的效率,还帮助团队更快地交付高质量的软件。本文将深入探讨DevOps文化和CI…