Linuxftp服务003虚拟用户登入

2024-05-31 18:52

本文主要是介绍Linuxftp服务003虚拟用户登入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

      如果基于Vsftpd系统用户访问FTP服务器,系统用户越多越不利于管理,而且不利于系统安全管理,鉴于此,为了能更加的安全使用Vsftpd,需使用Vsftpd虚拟用户方式。

虚拟用户原理:

虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。

操作系统:

CentOS Stream 9

操作步骤:

下载软件包

[root@localhost ~]# yum -y install vsftpd pam-devel libdb-utils
上次元数据过期检查:0:48:48 前,执行于 2024年05月31日 星期五 15时40分11秒。
软件包 vsftpd-3.0.5-5.el9.x86_64 已安装。
依赖关系解决。
===============================================================================================================软件包                     架构                  版本                          仓库                      大小
===============================================================================================================
安装:libdb-utils                x86_64                5.3.28-53.el9                 appstream                141 kpam-devel                  x86_64                1.5.1-19.el9                  appstream                161 k

查找文件位置

[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
[root@localhost ~]# rpm -ql libdb-utils | grep bin |grep db_load
/usr/bin/db_load
[root@localhost ~]# 

创建虚拟用户

[root@localhost ~]# useradd -d /data/web/ -c"vsftpd虚拟用户" -s /sbin/nologin vuser_ftp
[root@localhost ~]# 

查看用户信息

[root@localhost ~]# grep vuser /etc/passwd
vuser_ftp:x:1001:1001:vsftpd虚拟用户:/data/web/:/sbin/nologin
[root@localhost ~]# 

新建虚拟用户配置文件

创建一个记录ftp虚拟用户的用户名和密码文件(文件名随便指定这里用login.txt)

如创建/etc/vsftpd/login.txt文件,并设定用户名和密码

[root@localhost ~]# cat >/etc/vsftpd/login.txt<<EOF
zz
1
pp
1
EOF
[root@localhost ~]# 

生成虚拟用户认证文件

[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
[root@localhost ~]# 

查看/etc/vsftpd/vsftpd_login.db密码认证文件权限

[root@localhost ~]# ls -l /etc/vsftpd/vsftpd_login.db
-rw-r--r-- 1 root root 12288  5月 31 17:06 /etc/vsftpd/vsftpd_login.db
[root@localhost ~]# 

把/etc/vsftpd/vsftpd_login.db文件修改为600权限,并查看。

[root@localhost ~]# chmod 600 /etc/vsftpd/vsftpd_login.db
[root@localhost ~]# ls -l /etc/vsftpd/vsftpd_login.db
-rw------- 1 root root 12288  5月 31 17:06 /etc/vsftpd/vsftpd_login.db
[root@localhost ~]# 

查看文件类型

[root@localhost ~]# file /etc/vsftpd/vsftpd_login.db
/etc/vsftpd/vsftpd_login.db: Berkeley DB (Hash, version 9, native byte-order)
[root@localhost ~]# 

查看/etc/vsftpd/vsftpd_login.db 文件,不可直接阅读的二进制数据或加密后的文本

[root@localhost ~]# cat /etc/vsftpd/vsftpd_login.db                                                         эh^[root@localhost ~]# XshellXshell^C
[root@localhost ~]# 

修改ftp服务配置文件/etc/vsftpd/vsftpd.conf,可以把/etc/vsftpd/vsftpd.conf 备份一下然后修改vsftpd.conf 或者备份之后,重写一个vsftpd.conf文件

[root@localhost vsftpd]# cat >/etc/vsftpd/vsftpd.conf<<EOF
> ###### $(date +%F-%T)--- lgb -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
#tcp_wrappers=YES
max_per_ip=5
max_clients=100
###### 下面是关于虚拟用户的配置-begin ######
EOF### $(date +%F-%T)--- lgb -endnd ######.行的两端都不能有空格######
[root@localhost vsftpd]# 

创建vsftpd服务验证文件

(1)使用rpm -ql vsftpd 命令查找验证模块的例文

(2)拷贝到vsftpd.conf文件中配置的路径中并改变文件名

[root@localhost vsftpd]# cp -av `rpm -ql vsftpd  |grep vsftpd.pam` /etc/pam.d/ftp.vu
'/usr/share/doc/vsftpd/EXAMPLE/VIRTUAL_USERS/vsftpd.pam' -> '/etc/pam.d/ftp.vu'
[root@localhost vsftpd]# 

修改配置文件

[root@localhost vsftpd]# 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
[root@localhost vsftpd]# 

确认当前操作系统

[root@localhost vsftpd]# uname -r
5.14.0-427.el9.x86_64
[root@localhost vsftpd]# 
[root@localhost vsftpd]# 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
[root@localhost vsftpd]# 

创建每个用户的权限配置文件,存放在/etc/vsftpd/vsftpd_user_conf目录下

[root@localhost vsftpd]# mkdir -pv /etc/vsftpd/vsftpd_user_conf
[root@localhost vsftpd]# 

创建虚拟用户配置文件

[root@localhost vsftpd]# cat >/etc/vsftpd/vsftpd_user_conf/zz<<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
allow_writeable_chroot=YES
EOF
[root@localhost vsftpd]# cat >/etc/vsftpd/vsftpd_user_conf/pp<<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
allow_writeable_chroot=YES
EOF
[root@localhost vsftpd]# 

创建虚拟用户家目录并修改权限。

[root@localhost vsftpd]# mkdir -pv /data/web/{html,vsftp_data}
mkdir: 已创建目录 '/data/web/html'
mkdir: 已创建目录 '/data/web/vsftp_data'
[root@localhost vsftpd]# chown -R vuser_ftp. /data/web
[root@localhost vsftpd]# 

重启服务

[root@localhost vsftpd]# systemctl restart vsftpd
[root@localhost vsftpd]# 

操作结果:

[root@localhost vsftpd]# ls -lhrt /data/web/vsftp_data
总用量 0
drwx------ 2 vuser_ftp vuser_ftp 6  5月 31 17:42 云计算
[root@localhost vsftpd]# ls -lhrt /data/web/html
总用量 0
drwx------ 2 vuser_ftp vuser_ftp 6  5月 31 17:43 网络
[root@localhost vsftpd]# 

这篇关于Linuxftp服务003虚拟用户登入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018764

相关文章

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

mysql查询使用_rowid虚拟列的示例

《mysql查询使用_rowid虚拟列的示例》MySQL中,_rowid是InnoDB虚拟列,用于无主键表的行ID查询,若存在主键或唯一列,则指向其,否则使用隐藏ID(不稳定),推荐使用ROW_NUM... 目录1. 基本查询(适用于没有主键的表)2. 检查表是否支持 _rowid3. 注意事项4. 最佳实

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

SpringBoot3中使用虚拟线程的完整步骤

《SpringBoot3中使用虚拟线程的完整步骤》在SpringBoot3中使用Java21+的虚拟线程(VirtualThreads)可以显著提升I/O密集型应用的并发能力,这篇文章为大家介绍了详细... 目录1. 环境准备2. 配置虚拟线程方式一:全局启用虚拟线程(Tomcat/Jetty)方式二:异步

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、