搭建FTP-----基于文件验证的虚拟用户

前言:

以vsftpd搭建的ftp服务有三种认证模式,分别是匿名,本地用户和虚拟用户,本次我们就来一起实现基于文件验证的虚拟用户。(博主基本上所有的环境都是centos7,一般来讲和centos6没太多区别)

正文

虽然,我们可以在linux上新建不同的用户来进行认证,但是此方法对用户的管理不方便且还得注意不少安全问题,本次我们直接把虚拟用户的用户名和密码保存到文件中,登陆时再通过pam模块进行认证,并且同一转为本地的ftp用户,并且给不同的两个用户以不同的权限,一个可以上传文件,一个只能下载。那就开始实现把~

第一步,当然是安装我们的ftp服务程序啦,我们用到的是一个叫vsftpd的软件。

yum install vsftpd -y

配置文件在/etc/vsftpd目录下,默认使用ftp用户,其家目录在/var/ftp。第一步,先做最基础的初始化配置(以下只显示修改的配置条目),修改配置文件/etc/vsftpd/vsftpd.conf

#/etc/vsftpd/vsftpd.conf
anonymous_enable=NO   #禁止匿名用户访问
guest_enable=YES      
guest_username=ftp    #上面两个选项表示,任何登陆的用户,均会被假设称为guest,且身份为ftp
pam_service_name=vsftpd.db  #指定pam的命令,放在/etc/pam.d/vsftpd.db

最后一条我们指定了一个文件vsftpd.db存放的pam模块的命令,此文件不存在,得我们自己手动创建,在/etc/pam.d/目录下,因为会自动去找此路径,所以我们指定文件名即可,接下来我们在此目录下新建一个文件vsftpd.db

#/etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftpd/ftp
account required pam_userdb.so db=/etc/vsftpd/ftp  

#指定pam模块要验证的用户数据库的位置为/etc/vsftpd/ftp

此处要注意,虽然我们指定的是/etc/vsftpd/ftp但是文件ftp其实真正的名称为ftp.db必须以.db结尾哦,配置文件中不用写拓展名。此数据库文件也是不存在的,也得我们手动创建。此过程有两步,所以我们先切换到/etc/vsftpd目录下

#cd /etc/vsftpd
#vim ftp.txt  #我们得先创建一个文本文件,输入以下内容后再转换才db文件
xiaofengfeng  #单数行为登录ftp的帐号
1234          #双数行为登录ftp的密码
xiaofengfeng2 #帐号
1234          #密码
#db_load -T -t hash -f ftp.txt ftp.db #通过命令进行hash运算生成db文件
#chmod 600 ftp.db  #为了安全起见设置较低的权限

到此为止,我们基本上就做好了虚拟用户的基本配置,应该就能用这两个帐号登录ftp啦。在此之前我们还得检查一下我们的防火墙和SeLinux是否关闭,或者放行我们的ftp服务。

getenforce   #查看selinux是否为 Enforcing,如果是得先关闭
iptables -vnL #查看是否有规则限制ftp,如果有得调整或关闭
setenforce 0   #暂时关闭selinux
iptables -F    #清空iptables规则

博主第一次搭建ftp服务的时候,老是显示不了目录,或者开启了上传功能也不能上传文件排查了很久很久才忽然想起selinux这个坑爹的东东。所以,不过做什么,这玩意儿还是关闭的好。。。

现在我们启动服务,如果已经启动就重启服务

#systemctl restart vsftpd

到此我们就可以通过xiaofengfeng和xiaofengfeng2进行ftp登录了,如果登录时遇到 错误可以查看日志文件tail /var/log/secure.如果我们向实现让xiaofengfeng可以上传文件,新建目录,而xiaofengfeng2不可以该怎么做?我们可以针对每个用户分别设置配置文件让不同的用户有不同的权限。首先得在配置文件/etc/vsftpd/vsftpd.conf中设置用户自己的配置文件存放位置:

#/etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/ftp.d
mkdir /etc/vsftpd/ftp.d

然后在/etc/vsftpd/ftp.d目录中新建与用户xiaofengfeng同名的配置文件xiaofengfeng,并且开启匿名上传,配置如下:

anon_upload_enable=YES       
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

配置就是这么简单,但是我们还是不能上传文件,为什么呢?但我们以小风风登录ftp时,实际上服务器是把我们当作ftp用户的,而ftp用户对于/var/ftp/pub没有写权限 ,所以并不能上传文件,所以我们可以单独为ftp用户在/var/ftp/pub目录上开启写权限,此处我们用acl来进行权限控制。命令如下 :

#setfacl -m u:ftp:rwx /var/ftp/pub

此时我们在重启ftp服务

#systemctl restart vsftpd

此时进行测试就会发现,xiaofengfeng登录ftp可以上传文件,下载文件,创建目录,而xiaofengfeng2就只能下载文件了~~

到此就搭建完了

到此基于文件认证的ftp就搭建完了~有问题可留言,可私信,可发email。一般email回复最快~

时间: 2024-12-28 13:55:43

搭建FTP-----基于文件验证的虚拟用户的相关文章

搭建FTP-----实现基于mysql验证的虚拟用户

前言: 在上一篇博客中,我们已经实现了基于文件认证的ftp服务,不过此方法也存在不少问题,比如过用户数据不好管理呀,以明文存储不安全呀.不能把用户数据单独存放在其他服务器呀等等.所以此次我们把用户数据放在mysql中,然后通过pam模块去mysql中找用户数据来实现认证.主体的过程和上篇区别不大~那我们就开始把~ 正文: 此次,我们的环境是centos6,因为centos7中的pam_mysql模块得自己手动编译,所以就先使用centos6,不过两者区别也不大,而且编译pam_mysql模块也不

Centos FTP服务器的原理以及虚拟用户的配置

前面笔者写过一篇"FTP本地用户"随笔,那只是一个案例,并没有完整的写出来作用.配置文件解析和原理,今天笔者将发布"FTP服务器的原理以及虚拟用户的配置"随笔 FTP服务的原理 FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文件传输协议,FTP协议是现今使用最为广泛的网络文件共享协议之一 现在也一直有在用着FTP协议来进行各种文件的传输,FTP为人们提供了一种可靠的方式在网络上进行文件的共享 FTP是C/S架构的服务,拥有一个

实现基于文件验证的vsftpd 虚拟用户

一.创建用户数据库文件 vim /etc/vsftpd/vusers.txt wang wangpass mage magepass cd /etc/vsftpd/ db_load -T -t hash -f vusers.txt vusers.db chmod 600 vusers.db 二.创建用户和访问FTP 目录 useradd -d /var/ftproot -s /sbin/nologin vuser chmod +rx /var/ftproot/ centos7 还需要执行以下操作

Centos6下vsftpd基于mysql认证创建虚拟用户

一,安装环境以及安装的软件: 1,CentOS release 6.4 (Final) [IP:192.168.1.110] 2,vsftpd-2.2.2-13.el6_6.1.x86_64 3,pam_mysql-0.7-0.12.rc1.el6.x86_64 4,mysql-5.6.16(编译安装) 二,在数据库上创建登录ftp的账号和密码 1,创建对应的database,远程授权登录账号并创建表用来存储登录ftp账号密码. mysql> create database vsftpd; my

FTP(五)创建虚拟用户

创建虚拟用户 所谓虚拟用户就是,所有虚拟用户会统一赢谁为一个指定的系统普通账号:访问共享位置,即为此系统普通用户的家目录,当然每个虚拟用户也可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定 虚拟用户帐号的存储方式: 1,创建专门一个文件存放用户密码,但是该文件需要用hash格式.所以需要用下面的这条命令: db_load -T -t hash -f vusers.txt vusers.db 实现步骤: 一,创建用户数据库文件 "注意该文件的格式:第一行 用户名,第二行 密码,以此类推&

ftp实现通过数据库的虚拟用户认证

一.安装所需要程序 1.安装ftp服务所需的软件包 [[email protected] ~]# yum install vsftpd 2.安装MySQL数据库: [[email protected] ~]# yum -y install mysql-server mysql-devel 3.安装编译安装所需的环境 [[email protected] ~]# yum -y groupinstall "Development Tools" "Development Libra

Linux搭建FTP服务器,并建立匿名用户登录

FTP服务是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务,就是专门用来传输文件的协议 准备的东西:VMware12,RedHat7.0 1.安装FTP服务 创建多层目录:mkdir -p  /media/cdrom 挂载光盘:mount  /dev/cdrom  /media/cdrom 配置yum源: vim /etc/yum.repos.d/local.repo 配置内容:[redhat] name=redhat baseurl=file:///media/cdrom

cent OS7搭建基于虚拟用户的FTP服务

基本过程如下: 1.创建文本格式的用户名/密码列表文本中奇数行为用户名,偶数行为上一行中用户所对应的密码.如:执行以下操作添加两个用户mike.john,密码分别为123,456 新建一个文本: 输入用户名和密码: 2.创建Berkeley DB格式的数据库文件 有了文本格式的用户名/密码列表文件后,以此文件作为数据源通过db_load工具创建Berkeley DB格式的数据库文件: 在db_load命令中,-f 选项用于指定数据源文件,-T 选项允许非Berkeley DB的应用程序使用从文本

CentOS7 FTP服务搭建(虚拟用户访问FTP服务)

概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FTP服务器需要安装vsftp服务端软件.我们知道,在建立vsftpd用户时,我们一般是在linux下建立用户useradd的方式来访问ftp,但有时我们只想提供ftp服务,而避免用户用ftp的帐号去登录linux,采用一般的方式只能是限制该用户的访问权限,但还是避免不了用户登录进linux系统,所以比