Ubuntu 搭建FTP服务

在Linux中使用的FTP是vsftp,Ubuntu中安装vsftp:

apt install vsftpd

配置文件在/etc路径下,会出现两个配置文件:

/etc/vsftpd.conf :主配置文件

/etc/ftpusers:指定那些用户不能访问FTP服务器,这里的用户包括root在内的一些重要用户。

这里需要对配置文件 /etc/vsftpd.conf 做一些修改:

登录权限

anonymous_enable=YES         #允许匿名登录

local_enable=YES        #允许本地用户登录

登录用户黑白名单

首先,前面提到的配置文件 /etc/ftpusers 中配置的用户都无法访问ftp服务器,这相当于是一个黑名单。除此之外,还可以通过配置项 userlist_deny,userlist_enable,userlist_file 组合使用,来另外配置黑白名单。

其中,userlist_enable 标识是否使用启用黑白名单( userlist_file 标识名单文件),当userlist_enable=YES时生效。而 userlist_deny 用于指示该名单为黑名单还是白名单,当userlist_deny=YES时,userlist_file中的名单为黑名单,而当 userlist_deny=NO 时,userlist_file中的名单为白名单。

综合来说,当开启黑名单时(userlist_deny=YES,userlist_enable=YES),既不在/etc/ftpusers中,又不在 userlist_file 所指向名单文件中的用户可以登录FTP;当开启白名单(userlist_deny=NO,userlist_enable=YES),仅在userlist_file 所指向名单文件中且不在/etc/ftpusers 中的用户可以登录FTP;当关闭黑白名单(userlist_enable=NO),不在/etc/ftpusers中的用户都可登录。
掩码权限

umask是在linux中常见的一个东西,它其实是一个掩码。当然,也有umask这样一个命令,它是对用户建立的文件的默认属性的定义。该 定义为:

假设umask为022,则对于一个文件夹的话,它的默认属性为 777-022=755,这也就是我们平时建立文件夹的权限。而对于一般的文件的话,则是用 666-022=644。
local_umaks=022 #本地用户掩码权限

anon_umask=000 #匿名用户掩码权限

文件目录权限

local_root=/srv/ftp         #本地用户的FTP根目录,这是ftp访问的根目录

chroot_local_user=YES        #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)

chroot_list_enable=NO        #是否启动限制用户的名单(由chroot_list_file 所指向的用户名单) YES为启用  NO禁用
write_enable=YES        #启用任何形式的FTP写命令(全局写)

allow_writeable_chroot=YES        #允许写入用户主目录,当然需要主目录是可写的。

这里需要注意的是,当用户主目录对ftp用户是可写时,且chroot_local_user=YES,ftp用户会登录失败。在配置是建议设置为对ftp用户不可写,仅对本地用户配置可写权限。如果希望为ftp用户提供上传文件权限,可以在根目录下另外创建一个子目录为其提供可写权限。

anon_upload_enable=YES        #允许匿名FTP用户上传文件(这只有在上述全局写启用被激活时才有效果。此外,您显然还需要创建一个可供FTP用户写入的目录):

anon_mkdir_write_enable=YES        #允许匿名FTP用户创建文件夹:

dirmessage_enable=YES        #激活目录消息——当远程用户进入某个目录时发给他们的消息

配置模式

FTP有两种模式,称为主动模式(PORT)和被动模式(PASV)。

主动模式:客户端随机打开一个大于1024的端口N向服务器的21端口发起连接,同时开放N+1端口,并向服务器发出 "port N+1" 命令,由服务器的20端口主动连接到客户端 N+1 端口。

注意,FTP客户端只是告诉服务器自己的端口号,让服务器来连接客户端指定的端口。对于客户端的防火墙来说,这是从外部到内部的连接,可能会被阻止。

 配置主动模式:

pasv_enable=NO    #Passive模式关闭
port_enable=YES    #active模式开启
connect_from_port_20=YES    #默认情况下,FTP PORT主动模式进行数据传输时使用20端口

被动模式:客户端打开两个随机端口N和N+1,客户端的N端口连接服务器的21端口,提交PASV命令,然后,服务器会开启一个随机端口,返回如 "227  entering passive mode (127,0,0,1,4,18)"。它返回了227开头的信息,在括号中有以逗号隔开的六个数字,前面四个指服务器地址,最后两个指端口,计算端口值的方式:倒数第二个数字 * 256 + 最后一个数字,客户端收到命令并取得服务器的数据端口P之后,会通过N+1端口连接服务器的P端口,然后进行数据传输。

配置被动模式:

pasv_enable=YES    #passive模式开启
#在PASV模式下,建立数据传输可使用的端口范围的下界和上界,这里给的数值仅供参考,可根据实际需求修改,注意到防火墙里面将这段端口放开
pasv_min_port=30000   
pasv_max_port=40000

你可能感兴趣的:(紫云的程序人生,Linux,ubuntu,FTP)