文件传输协议(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. 【JZOJ4807】破解

    Description 历经千辛万苦,ddddddpppppp 终于找到了IBN5100. dp 事先了解到SERN 共有T 个密码,每个密码是一个长度为N 的01 串,他要利用IBN5100 的特殊 ...

  2. 运维自动化神器ansible之group模块

    ansible之group模块 group模块是用来添加或者删除组 首先使用ansible-doc来查看用法 [root@note0 ansible]# ansible-doc -s group - ...

  3. maven在线自动更新太慢怎么办?

    使用IDEA和Eclipse开发maven项目时,maven在添加一项新的依赖时,如果发现本地仓库没有,就会向位于国外服务器的中央仓库下载.如果所处网络没有翻墙,下载速度会慢到你想原地爆炸. 这个时候 ...

  4. ES6入门之变量的解构赋值(二)

    前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进 ...

  5. ArrayList源码解析[一]

    ArrayList源码解析[一] 欢迎转载,转载烦请注明出处,谢谢. https://www.cnblogs.com/sx-wuyj/p/11177257.html 在工作中集合list集合用的相对来 ...

  6. opencv::基本阈值操作

    图像阈值(threshold) 阈值 是什么?简单点说是把图像分割的标尺,这个标尺是根据什么产生的,阈值产生算法?阈值类型.(Binary segmentation) 阈值类型一阈值二值化(thres ...

  7. Bootstrap Studio Mac网页设计神器

    Bootstrap Studio Mac网页设计神器 美丽的组件 Bootstrap Studio附带了大量漂亮的组件,用于构建响应式页面.我们有页眉,页脚,画廊,幻灯片甚至基本元素,如跨度和div. ...

  8. django2-创建项目

    方式一:cmd或linux命令行下创建django项目(不常用,此处不做详细介绍) django-admin.py startproject autotest 方式二:使用pycharm专业版创建dj ...

  9. java编写基于netty的RPC框架

    一 简单概念 RPC:(Remote Procedure Call),远程调用过程,是通过网络调用远程计算机的进程中某个方法,从而获取到想要的数据,过程如同调用本地的方法一样. 阻塞IO:当阻塞I/O ...

  10. 《编写可维护的JavaScript》 笔记

    <编写可维护的JavaScript> 笔记 我的github iSAM2016 概述 本书的一开始介绍了大量的编码规范,并且给出了最佳和错误的范例,大部分在网上的编码规范看过,就不在赘述 ...