Linux vsftpd服务配置

转至:https://www.cnblogs.com/reachos/p/16352552.html

目录:

  1.FTP介绍

  2.安装vsftpd

  3.配置匿名用户登陆与上传删除文件

  4.配置vsftp本地账户认证登陆ftp

 

1.FTP介绍

文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议。它工作于网络传输协议的应用层,使用客户/服务器模式,主要是用来在服务器与客户端之间进行数据传输。

FTP 其实是以 TCP 封包的模式进行服务器与客户端计算机之间的联机,当联机建立后,使用者可以在客户端端连上 FTP 服务器来进行文件的下载与上传,此外,也可以对 FTP 服务器上面的文档进行管理等。

 

FTP传输模式:
文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。
FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式(默认的工作模式)。主被动模式均是以FTP服务器端为参照。

FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。

 

 

 

FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

 

 

 


在企业实际环境中,如果FTP客户端与FTP服务端均开放防火墙,FTP需以主动模式工作,这样只需要在FTP服务器端防火墙规则中,开放20、21端口即可。

2.安装vsftpd

# yum intall vsftpd
# ls /etc/vsftpd/vsftpd.conf          #默认主配置文件
# ls /var/ftp/                   #默认数据文件位置

vsftp 支持三种认证登陆方式:
1)匿名登陆
2)本地用户登陆
3)虚拟用户模式登陆,本文暂不讨论

3.配置匿名用户登陆与上传删除文件

默认配置位置:

# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES              #允许匿名用户登录FTP
anon_root=/var/ftp/pub              #设置匿名用户的登录目录(如需要,需自己添加并修改)
anon_upload_enable=YES              #打开匿名用户的上传权限
anon_mkdir_write_enable=YES          #打开匿名用户创建目录的权限
anon_other_write_enable=YES          #打开匿名用户删除和重命名的权限(如需要,需自己添加)
anon_umask=022                  #匿名用户的掩码(如需要,需自己添加,含义:如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644)
                         #anon_umask=022 这个能让我们用ftp这个账户新建目录或文件并修改,删除,查看文件属性可知所属是ftp:ftp.但无法删除所有者为0的文件。

local_enable=YES                 #以下默认配置保持不变
write_enable=YES
local_umask=022

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

匿名ftp目录的权限设置:
  默认情况下,ftp的根目录为/var/ftp,为了安全,这个目录默认不允许设置为777权限,否则ftp将无法访问(vsFTPd出于安全考虑,是不准让ftp用户的家目录的权限是完全没有限制的)。但是我们要匿名上传文件,需要“other”用户的写权限,正确的做法:
  在/var/ftp/pub中建立一个upload(名子自己起吧)文件夹,将个文件夹权限设置为777(也可以只修改文件夹所属人),在upload这个文件夹中,匿名用户可以上传文件、创建文件夹、删除文件等。

一般至此,便实现vsftpd匿名用户的上传下载了。

 

4.配置vsftp本地账户认证登陆ftp

/etc/vsftpd/vsftpd.conf       #FTP主配置文件
/etc/vsftpd/ftpusers         #拒绝用户登录到FTP服务器,系统默认是黑名单文件,且如果用户在ftpusers 里面,用户即使在白名单里面也无法登陆
/etc/vsftpd/user_list         #user_list需要参照userlist_deny来决定该文件是黑名单还是白名单

注意事项:
1) 配置文件中的userlist_enable=YES,启用"禁止用户名单"功能, ftpusers默认是黑名单文件,user_list需要参照userlist_deny来决定该文件是黑名单还是白名单。
2) userlist_deny=YES表示黑名单,userlist_deny-NO表示白名单。


创建测试用户:

# useradd -s /sbin/nologin ta
# echo '123456' |passwd --stdin ta

配置本地用户登陆ftp的vsftpd.conf文件:

# cat /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO          #禁止匿名访问
local_enable=YES            #启用本地帐户
#local_root=/var/ftp/pub/upload    #表示所有认证的用户,登陆后,都直接进入到:/var/ftp/pub/upload 目录,不建议启用
write_enable=YES              #允许上传/下载文件
local_umask=022              #umask决定目录和文件被创建时得到的初始权限,022为8进制。文件=666-022,目录=777-022,默认不给x位权限(g和o)

dirmessage_enable=YES
xferlog_enable=YES
xferlog_std_format=YES

chroot_local_user=YES          #建议配置为YES,chroot_local_user=YES时表示锁定用户在其【家目录】下, chroot_local_user=NO时表示不锁定用户在其主目录下,可以浏览根目录。

listen=YES
pam_service_name=vsftpd


userlist_enable=YES            #当userlist_enable=YES时,启用【禁用用户名单】功能。当userlist_enable=NO时,不启用上述功能。
userlist_deny=NO             #NO,表示/etc/vsftpd/user_list 为白名单,如果为YES,表示为黑名单

tcp_wrappers=YES
use_localtime=YES
dual_log_enable=YES
allow_writeable_chroot=YES

以上就是配置的所有参数。


以下2项,做为可选参数配置:

chroot_list_enable=YES|NO     #当chroot_local_user=YES时,chroot_list_enable=YES表示开启白名单的功能,在 chroot_list名单中的用户不受限制,为例外用户。
                    #当chroot_local_user=NO时,chroot_list_enable=YES表示开启黑名单功能,在 chroot_list名单中的用户受到限制在其主目录下,其他的用户为例外。

#chroot_list_file=/etc/vsftpd/chroot_list     #在此文件中添加例外用户,一行一个用户

 

 

posted @ 2023-05-16 12:57  study_goup  阅读(169)  评论(0编辑  收藏  举报