文件传输协议(FTP,File Transfer Protocol)

即能够让用户在互联网中上传、下载文件的文件协议,而FTP服务器就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和FTP客户端的配合才行。

通常用户使用FTP客户端软件向FTP服务器发起连接并发送FTP指令,服务器收到用户指令后将执行结果返回客户端。

FTP协议占用两个端口号:

21端口:命令控制,用于接收客户端执行的FTP命令。

20端口:数据传输,用于上传、下载文件数据。

FTP数据传输的类型:

主动模式:FTP服务端主动向FTP客户端发起连接请求。

被动模式:FTP服务端等待FTP客户端的连接请求。

关于vsftpd的相关配置文件

用户禁止登陆列表

/etc/vsftpd/ftpusers
/etc/vsftpd/user_list

主配置文件

/etc/vsftpd/vsftpd.conf

vsftpd程序配置文件参数的作用:

listen=[YES|NO]

是否以独立运行的方式监听服务。

listen_address=IP地址

设置要监听的IP地址。

listen_port=21

设置FTP服务的监听端口   21端口(ftp)  20端口(ftp-date)

 Vsftpd的验证方式

vsftpd程序提供的FTP服务可选认证方式,分别为匿名访问本地用户虚拟用户

匿名访问:任何人无需验证口令即可登入FTP服务端。

本地用户:使用FTP服务器中的用户、密码信息。

虚拟用户:创建独立的FTP帐号资料。

顾名思义匿名访问就是所有人均可随意登入FTP服务,这样自然会产生安全问题,一般用于存放公开的数据。

而本地用户与虚拟用户则需要用户提供帐号及口令后才能登入FTP服务,更加的安全,而虚拟用户则是最安全的。

 安装vsftpd服务程序

# yum install vsftpd -y

清空默认的防火墙默认规则:

# iptables -F

保存清空后的防火墙规则

# service iptables save

匿名访问模式

FTP匿名访问模式是比较不安全的服务模式,尤其在真实的工作环境中千万不要存放敏感的数据,以免泄露。

vsftpd程序默认已经允许匿名访问模式,我们要做的就是开启匿名用户的上传和写入权限,写入下面的参数:

# vim /etc/vsftpd/vsftpd.conf

参数

作用

anonymous_enable=YES

允许匿名访问模式。

anon_umask=022

匿名用户上传文件的umask值。

anon_upload_enable=YES

允许匿名用户上传文件

anon_mkdir_write_enable=YES

允许匿名用户创建目录

anon_other_write_enable=YES

允许匿名用户修改目录名或删除目录

确认填写正确后保存并退出vsftpd.conf文件,然后重启vsftpd服务程序并设置为开机自启动。

# systemctl restart vsftpd

# systemctl enable vsftpd

如果重启vsftpd服务程序时没有报错,此时便可以使用FTP客户机(192.168.27.200)尝试登入FTP服务了

客户机(192.168.27.200)系统中ftp命令默认没有安装,请执行”yum install ftp -y“即可安装完毕

上面操作中已经将防火墙规则清空,在vsftpd.conf文件中也已经允许匿名用户创建目录与写入权限,那怎么会被拒绝了呢?

回想前面的参数细节,匿名访问模式的FTP根目录为/var/ftp

原来匿名用户的FTP根目录所有者/组都是root,所以匿名用户没有写入权限,那我们将所有者修改为ftp试试

# chown  ftp /var/ftp/pub

此时再用ftp命令尝试登入FTP服务并创建文件:

ftp> mkdir files

550 Create directory operation failed    还是错误

查看所有与ftp相关的SELinux规则:

# getsebool -a | grep ftp

ftp_home_dir --> off

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> off

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

sftpd_anon_write --> off

sftpd_enable_homedirs --> off

sftpd_full_access --> off

sftpd_write_ssh_home --> off

tftp_anon_write --> off

tftp_home_dir --> off

设置SELinux服务对ftp服务的访问规则策略为允许

# setsebool -P ftpd_full_access=on

此时再来创建文件或目录就没有问题了:

[root@guoxiaoyan-hbza ~]# ftp 192.168.27.100

Connected to 192.168.27.100 (192.168.27.100).

220 (vsFTPd 3.0.2)

Name (192.168.27.100:root): anonymous

331 Please specify the password.

Password:敲击回车

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>cd pub

250 Directory successfully changed.

ftp>mkdir files

257 "/pub/files" created

ftp>rename files database

350 Ready for RNTO.

250 Rename successful.

ftp>rmdir database

250 Remove directory operation successful.

ftp>exit

221 Goodbye.

注意:当完成本实验后请还原虚拟机快照再进行下一个实验,否则可能导致配置文件冲突而报错

本地用户模式

既然要使用本地用户模式,而本地用户模式确实要比匿名访问模式更加的安全,所以本实验中会关闭匿名访问模式。

vsftpd服务程序默认已经允许本地用户模式,我们要做的是添加设置本地用户模式权限的参数:

# vim /etc/vsftpd/vsftpd.conf

参数

作用

anonymous_enable=NO

禁止匿名访问模式。

local_enable=YES

允许本地用户模式。

write_enable=YES

设置可写入权限。

local_umask=022

本地用户模式创建文件的umask值。

userlist_deny=YES

参数值为YES即禁止名单中的用户,参数值为NO则代表仅允许名单中的用户。

userlist_enable=YES

允许“禁止登陆名单”,名单文件为ftpusers与user_list。

确认填写正确后保存并退出vsftpd.conf文件,然后重启vsftpd服务程序并设置为开机自启动。

# systemctl restart vsftpd
# systemctl enable vsftpd

重启vsftpd服务程序时没有报错,此时便可以使用FTP客户机(192.168.27.200)尝试登入FTP服务了

我们先来看下ftpusersuser_list文件中禁止登陆用户名单:vim /etc/vsftpd/user_list

vsftpd服务为了让FTP服务更加的安全,默认禁止以root身份登入,那么创建个普通用户吧:

# useradd linuxprobe

为linuxprobe用户设置密码:

(我的没有问题  直接就出来了)如果再遇到了“操作被拒绝”,应该马上想到SELinux

查看所有与ftp相关的SELinux规则:

# getsebool -a | grep ftp

ftp_home_dir --> off

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> off

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

sftpd_anon_write --> off

sftpd_enable_homedirs --> off

sftpd_full_access --> off

sftpd_write_ssh_home --> off

tftp_anon_write --> off

tftp_home_dir --> off

设置SELinux对FTP服务的规则为允许:

# setsebool -P ftpd_full_access=on

此时再来创建文件或目录就没有问题了:

演示vsftpd服务匿名访问模式、本地用户模式的配置的更多相关文章

  1. 使用Vsftpd服务(匿名访问模式、本地用户模式)

    FTP协议占用两个端口号: 21端口:命令控制,用于接收客户端执行的FTP命令. 20端口:数据传输,用于上传.下载文件数据.. FTP数据传输的类型: 主动模式:FTP服务端主动向FTP客户端发起连 ...

  2. 在虚拟机上的关于FTP FTP访问模式(本地用户模式)

    首先你要有vsftpd服务 可以先去yum中下载(当然你要有本地yum仓库) 输入命令: yum  install  vsftpd 下载完成之后打开vsftpd服务 输入命令:systemctl   ...

  3. 33.vsftpd服务程序--本地用户模式

    1.针对本地用户模式的权限参数以及作用如下 [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 1 anonymous_enable=NO 2 local_ ...

  4. linux虚拟机中FTP本地用户模式配置流程

    1.首先在自己虚拟机中安装vsftpd服务,可以先去yum中下载(当然你要有本地yum仓库) 输入命令: yum  install  vsftpd 下载完成之后打开vsftpd服务 输入命令:syst ...

  5. 理解Windows内核模式与用户模式

     1.基础 执行 Windows 的计算机中的处理器有两个不同模式:"用户模式"和"内核模式". 依据处理器上执行的代码的类型,处理器在两个模式之间切换.应 ...

  6. Windows系统的四个重要概念——进程、线程、虚拟内存、内核模式和用户模式

    引言 本来在写一篇Windows内存管理的文章,写着写着就发现好多基础的概念都要先讲.更可怕的是,这些基础的概念我却不能完全讲清楚.只好再把这本<深入解析Windows操作系统>翻到第一章 ...

  7. 记录一次centos6.4版本的VSFTP本地用户登陆的配置

    其实vsftp是一个非常常用而且简单的服务,但是假如服务不是你配置的前者没有留下参考档案,的确是件头疼的事儿,特此记录下. 首先是vsftp的安装当然安装有源码的编译和yum等 这里我选择rpm包的y ...

  8. CentOS6.3修复模式/单用户模式修改fstab文件

    今天修改LVM逻辑卷的名称时候,忘记更改fstab配置文件了,导致机器重启后找不到盘,进不了系统!立即用光盘进入修复模式进行修复!  1.修复模式操作方法: 用光盘进入Linux修复模式,插入cent ...

  9. centos7救援模式--单机模式(单用户模式)

    前序 经典问题: 单机模式, 当系统忘记某用户登录密码的时候可以解决密码重置问题 操作 1 开机的时候出现选择进入系统的界面时, 按E键 2 选择定位到ro这里, 替换成rw init=/sysroo ...

随机推荐

  1. 网页布局——table布局

    table 的特性决定了它非常适合用来做布局,并且表格中的内容可以自动居中,这是之前用的特别多的一种布局方式 而且也加入了 display:table;dispaly:table-cell 来支持 t ...

  2. [JZOJ5775]【NOIP2008模拟】农夫约的假期

    Description   在某国有一个叫农夫约的人,他养了很多羊,其中有两头名叫mm和hh,他们的歌声十分好听,被当地人称为“魔音”······  农夫约也有自己的假期呀!他要去海边度假,然而mm和 ...

  3. 就改了get,却不让我set?——Java内省机制的神奇行为举止一例

    [相关类库]org.apache.commons.beanutils.BeanUtils,提供对Java反射和自省API的包装,其中底层使用到了Java的内省方法.[内省的一般应用形式]通过类Intr ...

  4. Thief-Book 上班摸鱼神器

    Thief-Book 上班摸鱼神器 介绍 Thief-Book 是一款真正的摸鱼神器,可以更加隐秘性大胆的看小说. 隐蔽性 自定义透明背景,随意调整大小,完美融入各种软件界面 快捷性 三个快捷键,实现 ...

  5. Linux Capabilities 入门教程:概念篇

    原文链接:Linux Capabilities 入门教程:概念篇 Linux 是一种安全的操作系统,它把所有的系统权限都赋予了一个单一的 root 用户,只给普通用户保留有限的权限.root 用户拥有 ...

  6. 保存为txt

    打开对话框保存为txt #region this.dDownTable = (DataTable)(this.dg1.DataContext); ) { string fName = string.E ...

  7. 01 Python简介、环境搭建及包管理(一)

    一.Python简介 1. Python的特点: 是一门动态.解释型.强类型语言 动态:在运行期间才做数据检查(不用提前声明变量)- 静态语音(C/Java):编译时检查数据类型(编码时需要声明变量类 ...

  8. 谜一样的Java编码和Windows编码

    本文适用于Java源码用UTF-8编码,平台系统为Windows的情况 不管是maven,还是javac,你的IDE都会带上一个参数:-Dfile.encoding=UTF-8 Windows(或许W ...

  9. Java并发编程之线程池的使用

    1. 为什么要使用多线程? 随着科技的进步,现在的电脑及服务器的处理器数量都比较多,以后可能会越来越多,比如我的工作电脑的处理器有8个,怎么查看呢? 计算机右键--属性--设备管理器,打开属性窗口,然 ...

  10. 设计模式(二十一)Proxy模式

    在面向对象编程中,“本人”和“代理人”都是对象.如果“本人”对象太忙了,有些工作无法自己亲自完成,就将其交给“代理人”对象负责. 示例程序的类图. 示例程序的时序图.从这个时序图可以看出,直到调用pr ...