Linux vsftpd服务配置
转至:https://www.cnblogs.com/reachos/p/16352552.html
目录:
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 #在此文件中添加例外用户,一行一个用户