分享交流
合作共赢!

Linux安装与配置FTP方法总结

1、安装ftp工具

显示如下内容则表示已安装 vsftp软件,如果未显示则需要安装vsftpd软件

[root@ecs-64a3 ~]# rpm -aq | grep vsftpd
vsftpd-3.0.2-25.el7.x86_64

如果没有则通过yarm源进行安装

yum install -y vsftpd

2、安装完成之后

进入到ftp的根目录默认是/etc/vsftpd/文件中进行配置

[root@ecs-64a3 vsftpd]# pwd
/etc/vsftpd
[root@ecs-64a3 vsftpd]# ll -h
total 28K
-rw------- 1 root root 125 Oct 31 03:45 ftpusers
-rw------- 1 root root 368 Apr 5 18:15 user_list
-rw------- 1 root root 5.2K Apr 5 18:12 vsftpd.conf
-rwxr--r-- 1 root root 338 Oct 31 03:45 vsftpd_conf_migrate.sh

/etc/vsftpd/vsftpd.conf:vsftpd 的核心配置文件

/etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。  黑名单

/etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件。  白名单

/etc/vsftpd/chroot_list:指定允许使用vsftpd 的用户列表文件。  控制名单下的目录能不能离开ftp根目录(老版本FTP有这个文件)

备份vsftpd.conf,以防万一

cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

3.创建用户

创建宿主用户,新建系统用户ftpuser,用户目录为/home/vsftpd, 用户登录终端设为/bin/false(即使之不能登录系统)

#方法一
# useradd -d /data/ftpdata ftpuser  #增加用户ftp01,并制定ftp01用户的主目录为/data/ftpdata 
# passwd ftpuser   #设置用户ftpuser的密码

# 方法二
# 创建用户 ftpuser 指定 `/home/vsftpd` 目录
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser

# 设置用户 ftpuser 的密码
passwd ftpuser
# 把 /home/vsftpd 的所有权给ftpuser.root
chown -R ftpuser.root /home/vsftpd

# 方法三
useradd ftpuser -d /home/vsftpd -s /bin/false
chown ftpuser:ftpuser /home/vsftpd -R 

# 如果虚拟用户的宿主用户为www,需要这样设置
# www目录是你应用的目录
chown www:www /home/www -R

删除用户 userdel ftpuser

touch /etc/vsftpd/vuser_passwd
# 编辑虚拟用户名单文件:(
# 第一行账号,第二行密码,注意:不能使用root做用户名,系统保留)
vi /etc/vsftpd/vuser_passwd
# 编辑内容,下面是 vuser_passwd 内容
wcj
hss
#保存退出

4.更改用户ftp01的权限设置

# usermod -s /sbin/nologin test   #限定用户ftp01不能telnet,只能ftp
# usermod -s /sbin/bash ftp01   #用户ftp01恢复正常
# usermod -s /data/ftpdata ftp01   #更改用户ftp01的主目录为/data/ftpdata

5.限制用户只能访问/data/ftpdata,不能访问其他路径:

默认user_list中添加的用户不能登陆ftp

修改# /etc/vsftpd/vsftpd.conf 如下:

ftp配置文件解释如下:

1.登录和对匿名用户的设置
write_enable=YES    //是否对登录用户开启写权限。属全局性设置。默认NOlocal_enable=YES   //是否允许本地用户登录FTP服务器。默认为NOanonymous_enable=YES          //设置是否允许匿名用户登录FTP服务器。默认为YESftp_username=ftp                //定义匿名用户的账户名称,默认值为ftp。no_anon_password=YES             //匿名用户登录时是否询问口令。设置为YES,则不询问。默 认NO
anon_world_readable_only=YES   //匿名用户是否允许下载可阅读的文档,默认为YES。
anon_upload_enable=YES      //是否允许匿名用户上传文件。只有在write_enable设置为YES时,该配置项才有效。而且匿名用户对相应的目录必须有写权限。默认为NO。
anon_mkdir_write_enable=YES //是否允许匿名用户创建目录。只有在write_enable设置为    YES时有效。且匿名用户对上层目录有写入的权限。默认为NO。anon_other_write_enable=NO    //若设置为YES,则匿名用户会被允许拥有多于上传和建立目录的权限,还会拥有删除和更名权限。默认值为NO。 

2.设置欢迎信息
用户登录FTP服务器成功后,服务器可向登录用户输出预设置的欢迎信息。
ftpd_banner=Welcome to my FTP server. 
//该配置项用于设置比较简短的欢迎信息。若欢迎信息较多,则可使用banner_file配置项。banner_file=/etc/vsftpd/banner     
//设置用户登录时,将要显示输出的文件。该设置项将覆盖ftpd_banner的设置。dirmessage_enable=YES         
//设置是否显示目录消息。若设置为YES,则当用户进入特定目录(比如/var/ftp/Linux)时,将显示该目录中的由message_file配置项指定的文件(.message)中的内容。message_file=.message          //设置目录消息文件。可将显示信息存入该文件。该文件需要放在 相应的目录(比如/var/ftp/linux)下

 3.设置用户登录后所在的目录 
local_root=/var/ftp             
// 设置本地用户登录后所在的目录。默认配置文件中没有设置该项,此时用户登录FTP服务器后,所在的目录为该用户的主目录,对于root用户,则为/root目录。anon_root=/var/ftp            
//设置匿名用户登录后所在的目录。若未指定,则默认为/var/ftp目录。

 4.控制用户是否允许切换到上级目录 
在默认配置下,用户可以使用“cd..”命名切换到上级目录。比如,若用户登录后所在的目录为/var/ftp,则在“ftp>”命令行 下,执行“cd..”命令后,用户将切换到其上级目录/var,若继续执行该命令,则可进入Linux系统的根目录,从而可以对整个Linux的文件系统 进行操作。
若设置了write_enable=YES,则用户还可对根目录下的文件进行改写操作,会给系统带来极大的安全隐患,因此,必须防止用户切换到Linux的根目录,相关的配置项如下:
chroot_list_enable=YES                    
// 设置是否启用chroot_list_file配置项指定的用户列表文件。设置为YES则除了列在j/etc/vsftpd/chroot_list文件中的的帐号外,所有登录的用户都可以进入ftp根目录之外的目录。默认NOchroot_list_file=/etc/vsftpd/chroot_list         
// 用于指定用户列表文件,该文件用于控制哪些用户可以切换到FTP站点根目录的上级目录。chroot_local_user=YES                    
// 用于指定用户列表文件中的用户,是否允许切换到上级目录。默认NO注意:要对本地用户查看效果,需先设置local_root=/var/ftp
具体情况有以下几种:
1)当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到上级目录;未在文件中列出的用户,不能切换到站点根目录的上级目录。
2)当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到站点根目录的上级目录;未在文件中列出的用户,可以切换到上级目录。
3)当chroot_list_enable=NO,chroot_local_user=YES时,所有用户均不能切换到上级目录。
4)当chroot_list_enable=NO,chroot_local_user=NO时,所有用户均可以切换到上级目录。
5)当用户不允许切换到上级目录时,登录后FTP站点的根目录“/”是该FTP账户的主目录,即文件的系统的/var/ftp目录。 

5.设置访问控制 
(1)设置允许或不允许访问的主机(见TBP14)
tcp_wrappers=YES用来设置vsftpd服务器是否与tcp wrapper相结合,进行主机的访问控制。默认设置为YES,vsftpd服务器会检查/etc/hosts.allow和/etc /hosts.deny中的设置,以决定请求连接的主机是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。
比如,若要仅允许192.168.168.1~192.168.168.254的用户,可以访问连接vsftpd服务器,则可在/etc/hosts.allow文件中添加以下内容:
vsftpd:192.168.168.0/255.255.255.0 :allow
all:all:deny

(2)设置允许或不允许访问的用户
对用户的访问控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件来控制实现。相关配置命令如下:
userlist_enable=YES     
// 决定/etc/vsftpd/user_list文件是否启用生效。YES则生效,NO不生效。userlist_deny=YES       
// 决定/etc/vsftpd/user_list文件中的用户是允许访问还是不允许访问。若设置为YES,则/etc/vsftpd/user_list 文件中的用户将不允许访问FTP服务器;若设置为NO,则只有vsftpd.user_list文件中的用户,才能访问FTP服务器。

 6.设置访问速度 
anon_max_rate=0       //设置匿名用户所能使用的最大传输速度,单位为b/s。若设置为0,则不受速度限制,此为默认值。local_max_rate=0       // 设置本地用户所能使用的最大传输速度。默认为0,不受限制。

 7.定义用户配置文件 
在vsftpd服务器中,不同用户还可使用不同的配置,这要通过用户配置文件来实现。
user_config_dir=/etc/vsftpd/userconf //用于设置用户配置文件所在的目录。设置了该配置项后,当用户登录FTP服务器时,系统就会到/etc/vsftpd/userconf目录下读取与当前用户名相同的文件,并根据文件中的配 置命令,对当前用户进行更进一步的配置。比如,利用用户配置文件,可实现对不同用户进行访问的速度进行控制,在各用户配置文件中,定义 local_max_rate配置,以决定该用户允许的访问速度。 

8.与连接相关的设置 
listen=YES        
//设置vsftpd服务器是否以standalone模式运行。以standalone模式运行是一种较好的方式,此时listen必须设置为YES, 此为默认值,建议不要更改。很多与服务器运行相关的配置命令,需要此运行模式才有效。若设置为NO,则vsftpd不是以独立的服务运行,要受 xinetd服务的管理控制,功能上会受限制。max_clients=0//设置vsftpd允许的最大连接数,默认为0,表示不受限制。若设置为150时,则同时允许有150个连接,超出的将拒绝建立连接。只有在以standalone模式运行时才有效。max_per_ip=0// 设置每个IP地址允许与FTP服务器同时建立连接的数目。默认为0,不受限制。通常可对此配置进行设置,防止同一个用户建立太多的连接。只有在以standalone模式运行时才有效。listen_address=IP地址        
//设置在指定的IP地址上侦听用户的FTP请求。若不设置,则对服务器所绑定的所有IP地址进行侦听。只有在以standalone模式运行时才有效。 对于只绑定了一个IP地址的服务器,不需要配置该项,默认情况下,配置文件中没有该配置项。若服务器同时绑定了多个IP地址,则应通过该配置项,指定在哪 个IP地址上提供FTP服务,即指定FTP服务器所使用的IP地址。注意:设置此值前后,可以通过netstat -tnl对比端口的监听情况

accept_timeout=60            //设置建立被动(PASV)数据连接的超时时间,单位为秒,默认值为60。connect_timeout=60    // PORT方式下建立数据连接的超时时间,单位为秒。data_connection_timeout=300   //设置建立FTP数据连接的超时时间,默认为300秒。idle_session_timeout=600      //设置多长时间不对FTP服务器进行任何操作,则断开该FTP连接,单位为秒,默认为600秒。即设置发呆的逾时时间,在这个时间内,若没有数据传送或指令的输入,则会强行断开连接。pam_service_name=vsftpd     
//设置在PAM所使用的名称,默认值为vsftpd。setproctitle_enable=NO|YES   
//设置每个与FTP服务器的连接,是否以不同的进程表现出来,默认值为NO,此时只有一个名为vsftpd的进程。若设置为YES,则每个连接都会有一个vsftpd进程,使用“ps -ef|grep ftp”命令可查看到详细的FTP连接信息。安全起见,建议关闭。

 9.FTP工作方式与端口设置 
(1)FTP工作方式简介
FTP的工作方式有两种,一种是PORT FTP,另一种是PASV FTP。下面介绍其工作方式。
二者的区别在于PORT FTP的数据传输端口是由FTP服务器指定的,而PASV FTP则是由FTP客户端指定的,而且每次数据连接所使用的端口号都不同。正因为如此,所以在CuteFTP等FTP客户端软件中,其连接类型设置项中有PORT和PASV两种选择。
当FTP服务器设置为PASV工作模式时,客户端也必须设置为PASV连接类型。若客户端连接类型设置为PORT,则能建立FTP连接,但在执行ls或get等需要数据请求的命令时,将会出现无响应并最终报告无法建立数据连接。

(2)与端口相关的配置
listen_port=21               // 设置FTP服务器建立连接所侦听的端口,默认值为21。连接非标准端口示例:ftp www.sunflower.org 7000connect_from_port_20=YES   
// 默认值为YES,指定FTP数据传输连接使用20端口。若设置为NO,则进行数据连接时,所使用的端口由ftp_data_port指定。ftp_data_port=20            //设置PORT方式下FTP数据连接所使用的端口,默认值为20。pasv_enable=YES|NO        
//若设置为YES,则使用PASV工作模式;若设置为NO,使用PORT模式。默认为YES,即使用PASV模式。pasv_max_port=0            //设置在PASV工作方式下,数据连接可以使用的端口范围的上界。默认值为0,表示任意端口。pasv_mim_port=0            //设置在PASV工作方式下,数据连接可以使用的端口范围的下界。默认值为0,表示任意端口。

 10.设置传输模式 
FTP在传输数据时,可使用二进制(Binary)方式,也可使用ASCII模式来上传或下载数据。
ascii_download_enable=YES //设置是否启用ASCII模式下载数据。默认为NO。ascii_upload_enable=YES    //设置是否启用ASCII模式上传数据。默认为NO。

 11.设置上传文档的所属关系和权限 
(1)设置匿名上传文档的属主
chown_uploads=YES           
//用于设置是否改变匿名用户上传的文档的属主。默认为NO。若设置为YES,则匿名用户上传的文档的属主将被设置为chown_username配置项所设置的用户名。chown_username=whoever     
//设置匿名用户上传的文档的属主名。只有chown_uploads=YES时才有效。建议不要设置为root用户。 但系统默root(2)新增文档的权限设定
local_umask=022            //设置本地用户新增文档的umask,默认为022,对应的权限为755。umask为022,对应的二进制数为000 010 010,将其取反为111 101 101,转换成十进制数,即为权限值755,代表文档的所有者(属主)有读写执行权,所属组有读和执行权,其他用户有读和执行权。022适合于大多数情 况,一般不需要更改。若设置为077,则对应的权限为700。anon_umask=022               //设置匿名用户新增文档的umask。默认077file_open_mode=0755          //设置上传文档的权限。权限采用数字格式。 默认0666

 12.日志文件 
xferlog_enable=YES             //是否启用上传/下载日志记录。默认为NOxferlog_file=var/log/vsftpd.log //设置日志文件名及路径。需启用xferlog_enable选项xferlog_std_format=YES           //日志文件是否使用标准的xferlog日志文件格式(与wu-ftpd使用的格式相同) 。默认为NO

 13.其他设置 
text_userdb_names=NO       
//设置在执行ls命令时,是显示UID、GID还是显示出具体的用户名或组名称。默认为NO,以UID和GID方式显示,若希望显示用户名和组名称,则设置为YES。ls_recurse_enable=YES       
//若设置为YES,则允许执行“ls –R”这个命令,默认值为NO。在配置文件中该配置项被注释掉了,与此类似的还有一些配置,需要启用时,将注释符去掉并进行YES或NO的设置即可

配置文件

anonymous_enable=NO  #允许匿名用户访问为了安全选择关闭 
local_enable=YES   # 允许本地用户登录 
write_enable=YES   # 是否允许写入,开放写权限,可上传文件 
local_umask=022  # 本地用户上传文件的umask,指定文件权限的掩码 
dirmessage_enable=YES #为YES则进入目录时显示此目录下由message_file选项指定的文本文件(,默认为.message)的内容 
xferlog_enable=YES #启用xferlog日志,主要记录文件传输信息的日志, 
xferlog_std_format=YES #标准格式 
connect_from_port_20=YES #启用FTP数据传输20号端口 
xferlog_file=/var/log/xferlog   #ftp日志目录 
ftpd_banner=Welcome to blah FTP service. #启用登陆FTP时欢迎消息 
idle_session_timeout=6000 #设置客户端连接时间 
data_connection_timeout=1200 #设置数据连接时间 针对上传,下载 
chroot_list_file=/etc/vsftpd/chroot_list #设置为YES则下面的控制有效 
chroot_list_enable=YES #限定用户的家目录,也就是说不让用户切换到上级任何目录,指定一个用户列表放在chroot_list文件中,也就是说在这个列表中的用户被限制在自己
 #的家目录,这个chroot_list文件放在/etc/vsftpd/目录下,如果没有创建它 
chroot_local_user=YES userlist_deny=NO #若设置为YES则记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户将无法login,并且将检察下面的userlist_deny选项 
userlist_enable=YES #若为NO,则仅接受记录在userlist_file选项指定文件(默认是/etc/vsftpd.user_list)中的用户的login请求.若为YES则不接受这些用户的
请求. 
userlist_file=/etc/vsftpd/user_list #白名单 
local_root=/var/ftp/pub #根目录 
listen=YES #开启监听IPV4协议的sockets,并运行于独立模式,一直处于监听状态 
pam_service_name=vsftpd #启用pam认证的文件名称,路径是:/etc/pam.d/vsftpd userlist_deny=NO #如果在/etc/vsftpd/目录下有user_list文件,那么这个文件
中的用户被允许登陆到服务器,如果userlist_deny=YES那么user_list文件中的将被阻止登陆服务器 userlist_enable=YES tcp_wrappers=YES

6.启动ftp

# systemctl start vsftpd.service

相关命令:

查看ftp状态:# systemctl status vsftpd.service
停止ftp:#systemctl stop vsftpd.service

附:FTP的两种工作模式

FTP有两种工作模式,PORT方式和PASV方式,中文意思为主动式和被动式 ,详细介绍如下:

1.主动 FTP :
命令连接:客户端 >1024 端口 → 服务器 21 端口
数据连接:客户端 >1024 端口 ← 服务器 20 端口

2.被动 FTP :
命令连接:客户端 >1024 端口 → 服务器 21 端口
数据连接:客户端 >1024 端口 ← 服务器 >1024 端口

PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时, 客户端在命令链路上用PORT命令告诉服务器:“我打开了***X端口,你过来连接我”。于是服务器从20端口向客户端的***X端口发送连接请求,建立 一条数据链路来传送数据。

PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时, 服务器在命令链路上用PASV命令告诉客户端:“我打开了***X端口,你过来连接我”。于是客户端向服务器的***X端口发送连接请求,建立一条数据链 路来传送数据。

此内容查看价格0.1立即购买
赞(0) 打赏
未经允许不得转载:琼杰笔记 » Linux安装与配置FTP方法总结

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册