linux ftp配置及实操
一、基础知识:
1、ftp:file transfer protocal 及文件传输协,工作与应用层。
2、ftp协议的实现:
服务器端实现软件:vsftpd,pureftpd,filezilla server
客户端实现软件:ftp,lftp
3、数据传输格式:
ASCII:ASCII格式传输
binary:二进制文件传输格式
4、ftp传输连接类型:ftp客户端与服务器端通过命令建立连接后,并不适用命令连接通道传输数据,而是新建一个数据连接传输数据
命令连接:传输指令
数据连接:传输数据
5、ftp工作模式:主动模式和被动模式两种。
主动模式:port模式,服务器监听于某一固定端口。服务器端主动向客户端发起连接请求。
被动模式:PASV模式,服务器监端口不固定,客户端向服务器端发起连接请求。
为什么要有两种工作模式?
因为,客户端出于安全因素考虑,一般会禁用大于1024的端口,但是服务器并不知道客户端哪些端口处于禁用状态,所以主动模式难以生效。因此最好使用被动模式。
6、ftp用户类型
匿名用户:所有的农名用户,一般映射为本地魔衣固定的系统用户(一般为用户ftp)。家目录为/var/ftp
本地用户:又称为系统用户,UID一般0~999。存在于/etc/passwd文件中的所有用户
虚拟用户:使用开了中间层(一般为PAM),如使用mysql数据库存储用户名和密码
PAM:plugable authentication modules 插入式认证模块。
二、vsftpdf的安装
1、关闭防火墙:service iptables stop
2、关闭selinux:setenforce 0
3、 先用rpm -q vsftpd命令检查是否已经安装,若ftp没有安装,使用yum -y install vsftpd 安装
4、设置开机自启 :chkconfig vsftpd on 。
5、启动vsftpd: service vsftpd <start |stop|status|restart>
三、vsftpd配置
1、备份配置文件:cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
1、写权限全局配置项:
write_enable=YES ###是否对登录用户开启写权限。属全局性设置。默认NO。
2、匿名用户配置
anonymous_enable=YES ###设置是否允许匿名用户登录FTP服务器。默认为YES。所有匿名用户都会映射至某一固定系统用户,此用户一般问ftp,家目录是/var/ftp。
ftp_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 ###除去上传和建立目录的权限,其它写权限如删除和更名权限,依赖于次配置。默认值为NO。
2.1、修改匿名用户上传文件属主
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
chown_uploads=YES
###是否允许匿名用户上传文件,匿名用户上传文件默认属主为root。允许匿名用户上传文件除了 ###write_enable=YES外还需配置匿名用户对家目录(默认为/var/ftp)有写权限。 ####示例,我们将智图表格.txt文件上传到默认匿名用户家目录/var/ftp/下,可以看到文件属主为root
chown_username=test ####指定匿名用户上传文件的属主。此处设置为test
###示例,匿名登录FTP然后我们将智图.xls表格上传.可以看到上传后的文件属主就是我们指定的test
此处有个问题:当匿名用户对默认家目录/var/ftp有写权限,而且
chown_uploads=YES,或
chown_username=test 同时使用时会限制匿名用户登录。本次示例是通过先启动服务,匿名登录服务器后再赋予写权限后上传成功的。本人没有研究明白问题所在,希望高人指点。
3、访问控制
(1)基于IP
tcp_wrappers=YES:用来设置vsftpd服务器是否与tcp wrapper相结合,进行主机的访问控制。设置为YES时,vsftpd服务器会检查/etc/hosts.allow和/etc /hosts.deny中的配置,通过两个我带你见来判断是否允许客户端访问该FTP服务器。类似于简易的防火墙。
示例:只允许192.168.121.1~192.168.121.254的用户访问ftp服务器,则可编辑/etc/hosts.allow文件中并添加以下内容:
vsftpd:192.168.121.0/255.255.255.0 :allow
all:all:deny
(2)基于用户
①记录在/etc/vsftpd/ftpusers中的用户不允许登录ftp,文件中默认有一些系统用户不允许登录如root。
[root@localhost vsftpd]# more ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
②指令控制
userlist_enable=YES :控制是否开启由userlist_file=/PATH控制的ftp访问控制文件(默认为/etc/vsftpd/user_list)。
userlist_file=/etc/vsftpd/user_list :文件访问控制文件路径
userlist_deny=YES:代表userlist_file=/PATH指定文件为黑名单,即文件记录所有用户都不允许登录。默认为YES,即黑名单。
userlist_deny=NO:代表userlist_file=/PATH指定文件为白名单,即只有文件记录用才能登录ftp。
root@localhost vsftpd]# more user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
4、本地用户配置
注意,其他用户不能对/etc/vsftpd/下的三个文件有执行权限,否则不能登录FTP
local_enable=YES ###是否允许非匿名用户,如本地用户(/etc/passwd中的用户)登录FTP服务器。所有非匿名用户的生效都依赖于此配置。默认为NO。
local_mask=022 ###本地用户上传文件的权限掩码
注意在/etc/vsftpd/ftpusers 中记录的本地用户不允许登录ftp。此配置文件默认包含以下用户。当然本地用户能否登录还与其他配置有关如userlist_enable。
userlist_enable=YES :控制是否开启由userlist_file=/PATH控制的ftp访问控制文件(默认为/etc/vsftpd/user_list).
userlist_deny=YES:代表userlist_file=/PATH指定文件为黑名单,即文件记录所有用户都不允许登录。默认为YES,即黑名单。
userlist_deny=NO:代表userlist_file=/PATH指定文件为白名单,即只有文件记录用才能登录ftp。
示例:要想让root用户能登录系统需要以下配置
local_enable=YES
编辑ftpusers,将root用户删除或者注释掉
userlist_enable=YES 时,若userlist_deny=YES。要编辑userlist_file指向的文件,在黑名单中删除或注释掉root
,若userlist_deny=NO。要编辑userlist_file指向的文件,在白名单中添加root
5、欢迎信息配置
①用户登录成功后欢迎消息设定
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service. ###可以自己定制登录横幅字符串,即自己定制一个欢迎登录成功用户的信息
ftpd_banner=Warning:this is my page.
banner_file=/PATH/TO/FILE ###若欢迎信息较多可以将其写入到某以文件中。
②有时候我们会在用户切换至某一目录时,设置目录消息,用来提醒用户,不要轻易做删除操作等信息。此时就可以使用目录消息设定了。
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
####开启时,用户切换至指定目录后,vsftpd会查看目标目录下的.message(没有时要新建)文件,并将其内容显示给用户。,当然也可使用message_file命令指定文件
,将文件内容显示给用户。此处我们设置.message文件内容为this is a test information.
message_file=/PATH/TO/FILE
6、禁锢用户于自己的家目录。例如test用户登录ftp后默认在其指定的家目录(本人配置的是/home/test),但是默认test用户是可以切换到其他目录的。这样很不安全。
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_local_user=YES
###是否禁锢所有本地用户于自己的家目录中。设置为YES是代表禁锢所有本地用户。
#chroot_list_enable=YES
####有时候我们不想禁锢所有用户,只是禁锢其中的某些用户,此时可以使用此配置项。设置为YES时,开启一个(chroot_list_file)指向的文件。文件中用户不允许cd到本地系统其他目录。
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list ####默认文件为/etc/vsftpd/chroot_list
示例:chroot_local_user与chroot_list_enable都为YES时,会有什么情况?
我们准备两个用户test和wxx
①配置
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
②在chroot_list文件中添加用户test
③启动ftp服务,结果如下图。即,test用户使用pwd显示的在家目录/home/test,可以cd到其他目录;wxx用户显示在/下,实际是在/home/test,无法cd到其他目录。
④得出结论是都为YES时,只有在chroot_list中的目录才能cd到其他目录,此时chroot_list其实是一个白名单,即允许哪些用户切换目录。具体有以下几种情况
1)当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以cd到其他目录;未在文件中列出的用户,不能cd到其他目录。
2)当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能cd到其他目录;未在文件中列出的用户,可以cd到其他目录。
3)当chroot_list_enable=NO,chroot_local_user=YES时,所有用户均不能cd到其他目录。
4)当chroot_list_enable=NO,chroot_local_user=NO时,所有用户均可cd换到其他目录。
5)当用户不允许切换到上级目录时,登录后FTP站点的使用pwd命令显示在/下,其实还是在家目录下。
7、日志文件
# The target log file can be vsftpd_log_file or xferlog_file.
# This depends on setting xferlog_std_format parameter
xferlog_enable=YES ###是否启用上传或下载日志记录
# Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
xferlog_std_format=YES
###控制是使用vsftpd_log_file 日志文件,还是使用xferlog_file日志文件
NO代表使用vsftpd_log_file;YES代表使用xferlog_file。
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog
vsftpd_log_file=/var/log/vsftpd.log
示例:两种文件格式
8、FTP监听端口
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES ####YES代表ftp工作于standalone模式。
listen_port=21 ###ftp命令连接监听端口,默认为21
listen_address=*.*.*.* ###设置FTP在哪个IP上监听用户的连接请求。一般注释掉代表监听于本机所有IP,如127.0.0.1
9、FTP并发连接数
max_clients=0 :设置vsftpd允许的最大并发连接数,默认为0,代表不受限制。若设置为200时,则同时允许有200个连接,超出的将拒绝客户端连接请求。只有在standalone模式下有效
max_per_ip=0:设置每个IP地址可以FTP服务器同时建立连接的最大数目。默认为0,代表不受限制。建议设置一个较小值,防止同一个用户建立太多的连接。只有在以standalone模式运行时才有效。
10、会话超时时长
idle_session_timeout:空闲连接超时时长,服务于客户端建立了解后,若在指定时间内在没有互相发送任何指令则自动断开连接。
connect_timeout=60:port模式下
data_connection_timeout=300:数据传输超时时长。
11、PASV模式下端口配置
pasv_enable=YES: 若设置为YES,则启用PASV工作模式;若设置为NO,启用PORT模式。默认为YES,即使用PASV模式。
pasv_max_port=0:PASV模式下,数据连接端口最大值,默认值为0,表示任意端口。
pasv_mim_port=0:PASV模式下,数据连接端口最小值 ,默认值为0,表示任意端口。
12、传输速率
anon_max_rate=0:设置匿名用户最大传输速度,单位为b/s。0为默认值代表不受速度限制。
local_max_rate=0 : 设置本地用户最大传输速度。默认为0。
示例:一个最简单的FTP配置示例
要求:1、不允许匿名用户登录,只允许本地用户中的指定用户登录。
2、该用户有读写权限。
3、禁锢用户与自己家目录
4、工作于被动模式
5、本地用户名为zxy家目录是/tmp/zxy
第一步配置文件相关
①保持/etc/vsftpd/vsftpd.conf文件其他内容默认,更改一下配置
anonymous_enable=NO
②添加以下指令
pasv_enable=YES
pasv_min_port=10000
pasv_max_port=11000
userlist_deny=NO
chroot_local_user=YES
第二步添加用户指定家目录为/tmp/zxy
useradd -m /tmp/zxy zxy
passwd zxy
第三步编辑/etc/vsftpd/user_list
删除所有已存在用户,添加zxy用户
第四步重启服务
linux ftp配置及实操的更多相关文章
- 大数据学习笔记——Linux完整部署篇(实操部分)
Linux环境搭建完整操作流程(包含mysql的安装步骤) 从现在开始,就正式进入到大数据学习的前置工作了,即Linux的学习以及安装,作为运行大数据框架的基础环境,Linux操作系统的重要性自然不言 ...
- 【Linux】php7.2.8 + xdebug + composer + php代码覆盖率 + jenkins配置 (实操记录,亲测可用)
[一.linux安装php 7.2.8] 1.wget http://nginx.org/download/nginx-1.9.9.tar.gz # nginx可不安 ...
- linux FTP配置详解
一.vsftpd说明: LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd. 访问 ...
- Linux FTP配置
Linux下实现ftp的软件有很多,最常见的有vsftpd,Wu-ftpd和proftp等.访问ftp服务器时需要验证,只有经过了ftp服务器的验证用户才能访问和传输文件.这里我们用vsftpd,vs ...
- Redhat Linux FTP配置
文件传输协议(FTP:FileTransfer Protocol)使得主机间可以共享文件. FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输.控制连接 ...
- ALPS TCP新建配置——网络测试仪实操
本文主要介绍如何在ALPS平台上Step-By-Step配置TCP新建. 一.TCP新建介绍 TCP新建速率是防火墙等设备的一个重要指标,它用来评估防火墙等设备每秒能够处理的TCP创建的速率. 信而泰 ...
- Internet/Custom路由配置——网络测试仪实操
一.测试说明以及功能原理 本文主要介绍Internet/Custom路由配置方法以及实验: ◆作用:可以通过此功能模拟注入不同百分比掩码的路由 ◆特点:只针对路由协议(目前RIP协议不支持,因为RIP ...
- (二)Linux实操之——网络配置、进程管理、服务管理、组管理、YUM
接上段 (一)Linux实操之——权限.任务调度.磁盘分区 4.网络配置 4.1 NAT模式的网络配置 目前我们采用的网络配置是NAT模式. windows下cmd通过 ipconfig 命令可以 ...
- Linux+Nginx+Supervisor部署ASP.NET Core实操手册
一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...
随机推荐
- Java集合框架个人学习笔记
从网上粘贴的结构图 Collection ├List │├LinkedList │├ArrayList │└Vector(了解,已过时) │ └Stack └Set Map ├Hashtable ...
- vue表单和组件使用
表单: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...
- seq2seq+attention解读
1什么是注意力机制? Attention是一种用于提升Encoder + Decoder模型的效果的机制. 2.Attention Mechanism原理 要介绍Attention Mechanism ...
- 【xinsir】分享一个查找文件的脚手架
program.command('find <name>').action(name => { if (name) { inquirer .prompt([ { type: 'inp ...
- post方式实现导出/下载文件
项目需求: 前端需要传入过多的参数给后端,get地址栏不行,只能接受post方式去导出数据 1.get的下载方式 通常下载方式如下: let url = xxxx.action?a=xx&b= ...
- 洛谷P3121 【[USACO15FEB]审查(黄金)Censoring (Gold)】
双栈+AC自动机 这题其实跟一道KMP算法的题有一些渊源,它就是这道题的简单板. Clear: 给你两个串A,B,每次在B串中从左到右找串A,并将该子串删除,直到找不到为止,问你能删几次. 样例输入: ...
- TCP/IP协议第一卷第一章
1.链路层 链路层有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节.把链路层地址和网络层地址联系起来 ...
- [考试反思]1024csp-s模拟测试86:消耗
%%%两个没素质的和一个萌两小时AK 最近貌似总是可以比较快速的拿下T1,然后T2打到考试结束... T1是套路题没什么好说的. T2是一个比较蠢的博弈题,我花了很长时间干各种乱七八糟的事 什么打表啊 ...
- jmeter-手机号验证注册登录
1.测试计划->线程组 2.首先获取需要注册的手机号,获取手机号的方式如下 (1)使用配置元件导入需要注册的手机 ·右键线程组-->配置元件-->CSV数据文件设置,如图: (2)使 ...
- Android Drawable 简析
Drawable 是开发中经常用到的一个概念,我们经常用它去设置 View 的背景,背景可以一个颜色值,也可以是一张资源图片,还可以是一个自定义的 Drawable等等.这篇文章就简单说下 Drawa ...