vsftpd搭建ftp服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vsftpd搭建ftp服务器相关的知识,希望对你有一定的参考价值。

一、vsftpd介绍

? ? ? ?vsftpd是very secure ftp daemon的缩写,它是一个完全免费、开源代码的ftp服务器软件。它有着其他ftp服务器软件不具有的特性,如它满足较高的安全性需求、支持虚拟用户、支持ipv6、传输速率限制等。

二、 vsftpd安装

? ? ? ?实验环境准备:

主机列表 系统版本 ip地址 安装软件
ftp客户端 centos7.6 192.168.36.10 ftp或lftp
ftp服务器 centos6.10 192.168.36.20 vsftpd

1、实验开始前,关闭两台设备的selinux和防火墙设置,防止其影响结果。

客户端关闭防火墙和selinux  
[[email protected] ~]# setenforce 0            
[[email protected] ~]# systemctl stop firewalld

服务器端关闭防火墙和selinux
[[email protected] ~]#setenforce 0
[[email protected] ~]#service iptables stop
[[email protected] ~]#iptables -F
[[email protected] ~]#iptables -vnL          #确保iptables下没有任何规则。

2、ftp软件安装

客户端192.168.36.10安装:
[[email protected] ~]#yum install ftp lftp -y         #ftp、lftp这两个都是ftp客户端工具  

服务器192.168.36.20安装:
[[email protected] ~]#yum install vsftpd -y           
[[email protected] ~]#service vsftpd restart

三、 vsftpd用户认证(三种登录方式)

匿名用户: ftp,anonymous,映射为Linux用户ftp。  

系统用户: Linux系统用户,登录后默认在家目录。

虚拟用户:特定服务的专用用户,可设定登录的家目录。

1) 匿名用户的配置

[[email protected] ~]#vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES            #默认允许匿名用户登录FTP。

anon_upload_enable=YES          #启用匿名用户的上传权限。

anon_mkdir_write_enable=YES     #启用匿名用户创建目录的权限。

anon_other_write_enable=YES     #启用匿名用户删除权限。

anon_umask=022          #匿名用户新建文件时的umask值。

匿名账号启用以上权限后,从vsftpd的角度来说,就可以实现上传和下载功能了,但实际上还需要考虑文件系统的权限问题。

例1:

[[email protected] ~]# ftp 192.168.36.20[[email protected] ~]# ftp 192.168.36.20
Connected to 192.168.36.20 (192.168.36.20).
220 (vsFTPd 2.2.2)
Name (192.168.36.20:root): ftp          #匿名账号ftp
331 Please specify the password.
Password:           #此处直接回车,密码为空。
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload          #upload为新建的目录,权限为777
250 Directory successfully changed.
ftp> 
ftp> put f1         #实现上传功能。
local: f1 remote: f1
227 Entering Passive Mode (192,168,36,20,193,56).
150 Ok to send data.
226 Transfer complete.
19 bytes sent in 0.0362 secs (0.53 Kbytes/sec)

ftp> ls
227 Entering Passive Mode (192,168,36,20,151,172).
150 Here comes the directory listing.
-rw--w--w-    1 0        0               0 May 19 09:06 a1          #注意该文件的权限。
226 Directory send OK.
ftp> get a1         #下载a1文件失败,这是由于从ftp服务器下载文件,文件的属主、属组、其他此三者的权限都要具有读权限,才能下载。
local: a1 remote: a1
227 Entering Passive Mode (192,168,36,20,42,205).
550 Failed to open file.
ftp> get a1         #服务器端修改a1的权限为644,下载成功。
local: a1 remote: a1
227 Entering Passive Mode (192,168,36,20,52,167).
150 Opening BINARY mode data connection for a1 (0 bytes).
226 Transfer complete.
ftp> 

2) 本地用户的配置

anonymous_enable=no         #不允许匿名用户登入。

local_enable=YES/NO(YES)          #控制是否允许本地用户登入,默认值为YES。

local_root=/home/username           #当本地用户登入时,默认值为各用户的家目录。

write_enable=YES                    #是否允许登陆用户有写权限。

local_umask=022         #指定系统用户上传文件的默认权限。

chroot_local_user=YES           #禁锢系统用户在家目录里面。

关闭匿名账号的登录,使用系统账号登录,且禁锢系统账号登录后在家目录里面。

例2:

[[email protected] ~]# ftp 192.168.36.20
Connected to 192.168.36.20 (192.168.36.20).
220 (vsFTPd 2.2.2)
Name (192.168.36.20:root): wang         #使用系统账号wang进行登录
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd 
257 "/"
ftp> cd /var/ftp            #系统账号被禁锢在自己的家目录里面,不能随意切换到其他目录。
550 Failed to change directory.         

3) 虚拟用户的配置

所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号
的家目录。
pam_service_name=vsftpd         #虚拟用户使用PAM认证方式。
例3:

1. 生成文本格式的用户名和密码文件,文件内容奇数行是用户名称,双行是密码。
[[email protected] /etc/vsftpd]#cat vuser 
alice
123asd

2. 生成用户数据库,修改文件权限。
[[email protected] /etc/vsftpd]#db_load -T -t hash -f vuser vuser.db
[[email protected] /etc/vsftpd]#file vuser.db
vuser.db: Berkeley DB (Hash, version 9, native byte-order) 
[[email protected] /etc/vsftpd]#chmod 600 vuser.db 

3. 创建pam配置文件。
[[email protected] /etc/pam.d]#vi vsftpd.db          #该文件需要创建
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser

4. 创建虚拟账号对应的系统用户。
[[email protected] /]#useradd -d /var/ftproot -s /sbin/nologin vuser
[[email protected] /]#chmod a=rx /var/ftproot/
[[email protected] /]#ll -d /var/ftproot/
dr-xr-xr-x. 4 vuser vuser 4096 May 19 18:23 /var/ftproot/

5. 指定pam配置文件。
[[email protected] /]#vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.db

6.重启vsftpd服务,在客户端上进行验证。
[[email protected] ~]# ftp 192.168.36.20
Connected to 192.168.36.20 (192.168.36.20).
220 (vsFTPd 2.2.2)
Name (192.168.36.20:root): alice            #使用虚拟用户进行验证  
331 Please specify the password.
Password:
230 Login successful.           #使用虚拟账号成功登录。
Remote system type is UNIX.
Using binary mode to transfer files.

以上是关于vsftpd搭建ftp服务器的主要内容,如果未能解决你的问题,请参考以下文章

搭建 FTP 文件服务vsftpd

39 openEuler搭建FTP服务器-安装管理vsftpd服务

CentOS 下搭建FTP服务器

FTP服务器vsftpd搭建FTP服务器

五十FTP介绍使用vsftpd搭建ftp服务

CentOS 7搭建FTP服务器