当前位置: 首页 > news >正文

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 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不可以创建文件和文件夹

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

相关文章:

  • JSON和Protobuf序列化
  • JMeter的使用——傻瓜式学习【中】
  • 公网IP与内网穿透与端口映射区别
  • ES6带来那些js新特性?
  • vscode在新窗口打开文件夹
  • 在win10下,使用torchviz对深度学习网络模型进行可视化
  • 计算机网络基础二
  • 3.7每日一题(凑微分求不定积分)
  • FFmpeg系列索引
  • SQL-正则表达式和约束
  • LeetCode--511. 游戏玩法分析 I
  • 工作中的小tips:如何快速提取图片或者pdf上的文字,进行编辑?
  • 知识图谱05——gspan-mining库进行频繁子图挖掘出现‘DataFrame‘ object has no attribute ‘append‘
  • python内置模块hashlib对于字符串的加密解密加盐
  • 微信小程序在线预览PDF文件
  • [NodeJS] 关于Buffer
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CSS实用技巧干货
  • LeetCode29.两数相除 JavaScript
  • Mocha测试初探
  • mongodb--安装和初步使用教程
  • mysql innodb 索引使用指南
  • Node + FFmpeg 实现Canvas动画导出视频
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • swift基础之_对象 实例方法 对象方法。
  • 反思总结然后整装待发
  • 和 || 运算
  • 记录一下第一次使用npm
  • 使用API自动生成工具优化前端工作流
  • 学习使用ExpressJS 4.0中的新Router
  • 怎么将电脑中的声音录制成WAV格式
  • 智能合约开发环境搭建及Hello World合约
  • ​学习一下,什么是预包装食品?​
  • #{} 和 ${}区别
  • #AngularJS#$sce.trustAsResourceUrl
  • #微信小程序:微信小程序常见的配置传值
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (5)STL算法之复制
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm高校实验室 毕业设计 800008
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (七)Java对象在Hibernate持久化层的状态
  • (转)程序员疫苗:代码注入
  • .a文件和.so文件
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET 4.0中的泛型协变和反变
  • .NET CF命令行调试器MDbg入门(一)
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET 发展历程
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NetCore部署微服务(二)
  • .NET轻量级ORM组件Dapper葵花宝典