CentOS 7运维管理笔记(4)----安装ftp服务器
在CentOS 7下安装ftp服务器,可以使局域网内的主机拥有共享文件的一个站点。
在Linux系统下,vsftp是一款应用比较广泛的FTP软件,其特点是小巧轻快,安全易用。目前在开源操作系统中常用的FTP软件除了vsftp外,主要有proftpd、pureftpd和 wu-ftpd等。本篇随笔记录vsftp的安装与配置。
注意:本随笔所有操作均在VMware workstations虚拟机中安装的CentOS7 中进行,在进行操作前最好设置快照,这样某一步出错了还可以退回原来的状态:

1.安装vsftp:在root用户下,输入:
yum install -y vsftpd

查看安装情况:

2.匿名FTP配置:
允许匿名用户访问并上传文件,配置文件路径一般为 /etc/vsftpd.conf, 如果是使用rpm 包安装,配置文件位于 /etc/vsftpd/vsftpd.conf
(i) 安装vsftpd后,该软件会自动在/var目录下生成/var/ftp/pub目录,此/var/ftp 目录即为匿名用户默认访问的目录。因为在虚拟机中拍摄了快照,所以可以通过转到安装vsfptd之前的快照的方式进行验证 /var/ftp目录为vsftpd软件生成的。在虚拟机中转到安装vsftpd软件之前的快照状态。输入
ls /var/ftp

显示没有该目录。
然后再转到安装vsftpd后的快照,再次输入同样的命令,结果如下:

显示该目录下有pub文件夹,该文件夹当前为空; 这足以说明 /var/ftp/ 和 /var/ftp/pub文件夹为 vsftpd软件安装过程中自动生成的。
(ii)系统中当前会有 ftp用户组和ftp用户,博主已通过退回快照的方式验证,该用户和该用户组并非由vsftpd软件产生。所用命令为:
groups ftp
在两个快照状态下均显示出ftp用户属于ftp用户组。
将默认目录赋予用户ftp权限以便可以上传文件。

该命令的意思是将 ftp用户组中的所有用户设置为 /var/ftp/pub目录的拥有者,使用 -R 参数的意义是使用 recursive方式,即pub目录下的所有其他子目录也都属于ftp用户组中的所有用户。
(iii)使用
vim /etc/vsftpd/vsftpd.conf
命令,编辑 vsftpd的配置文件。
配置情况如下:

其中
grep -v ^# filename
命令即是查看 filename 文件中去除'#'注释掉的内容后的有效内容。
关于红色方框内的 chroot_local_user等选项的详细解释,参见:http://blog.csdn.net/bluishglc/article/details/42398811
(3)启动FTP服务器
(i)在启动 vsftpd之前,查看端口状态:
netstat -nptl

可以看到目前只有ipv4的53,22,631号端口和ipv6的22号端口正在Listen。
输入
systemctl start vsftpd
启动 vsftpd 服务.
再次输入命令
netstat -ntpl

可以看到21号端口已经启动,这正是ftp的命令端口。(ftp的数据端口为20)。
(ii)使用虚拟机中开启的另一台Ubuntu连接CentOS7上的ftp服务:

显示无法连接,这是因为没有在服务器的防火墙上开启21号端口的缘故。
于是在CentOS7服务器上编辑 iptables :
vim /etc/sysconfig/iptables

添加红色方框中的两行,开启20和21号端口。(21号端口为ftp命令端口,20号端口为ftp数据端口)
之前安装iptables的时候,已经使用了如下的命令
systemctl disable firewalld #禁止开机启动 firewalld
systemctl stop firewalld #停止运行firewalld
systemctl enable iptables #开机启动iptables
systemctl start iptables #启动iptables
当前,firewalld没有启动,iptables正在运行,在修改了 /etc/sysconfig/iptables文件的情况下,应该重新启动iptables
systemctl restart iptables
这时候再输入
systemctl stop vsftpd
netstat -nptl

没有开启21号端口,那是因为已经关闭了vsftpd服务器:
启动vsftpd服务器并查看端口:
systemctl start vsftpd
netstat -nptl

vsftpd服务重新开启了,且21号端口正在倾听。以上现象说明端口倾听与否只与服务运行与否有关,跟防火墙iptables中有没有开放端口无关。
(iii)用Ubuntu连接CentOS 7上的 ftp服务:

连接成功!
4.用ftp上传和下载文件
(i)在连接的ftp命令行里输入 ls 命令:

显示当前目录下有pub文件夹,说明当前匿名用户默认登陆的目录是CentOS7服务器上的/var/ftp目录
(ii)上传文件:
用
cd pub
命令进入pub文件夹
然后用
put filename.txt
命令上传本地的filename.txt文件
(注意:因为登陆ftp之前,Ubuntu所在目录为 /home/username ,则此时 filename.txt 默认为Ubuntu上的 /home/username/filename.txt,也可以用绝对路径指定文件。可以用 lcd pathname 命令改变客户端的当前目录)
结果:

显示“533 Could not create file.”
在CentOS7 上使用如下命令更改 /var/ftp/pub文件夹的权限:
chmod /var/ftp/pub

重启vsftpd服务,在Ubuntu客户端上连接,然后上传文件,结果还是显示“533 Could not create file.”
网上搜索原因,按照这个网页的指示:http://www.111cn.net/sys/linux/45542.htm 在CentOS7服务器上做如下设置:

在CentOS7服务器上重启 vsftpd服务,然后在Ubuntu上重新登录服务器,这是还是默认登录进 /var/ftp目录,一定要用 cd pub 命令转换进pub目录,再试试上传文件:

成功!
(iii)下载文件:
在CentOS7服务器上用
vim /var/ftp/pub/welcom.txt
命令新建一个文件。
在Ubuntu上尝试下载:

成功!
CentOS 7运维管理笔记(4)----安装ftp服务器的更多相关文章
- CentOS 7运维管理笔记(9)----Apache 安全控制与认证
Apache 提供了多种安全控制手段,包括设置Web访问控制.用户登陆密码认证及 .htaccess 文件等.通过这些技术手段,可以进一步提升Apache服务器的安全级别,减少服务器受攻击或数据被窃取 ...
- CentOS 7运维管理笔记(1)----设置默认启动模式为GUI模式或命令行模式
昨天在虚拟机中安装CentOS 7时选择了GNOME模式安装,开机默认进入GUI模式.网上搜找修改为默认命令行模式的方法,看到说修改 /etc/inittab文件,在最低下一行添加 但是 使用 cat ...
- CentOS 7运维管理笔记(11)----PHP安装与配置
PHP的安装同样需要经过环境检查.编译和安装3个步骤. 1.首先用百度搜索 “PHP:Downloads”, 点击第一个网页: 选择5.5.37版本,选择 .tar.gz 格式的文件: 来到镜像列表网 ...
- CentOS 7运维管理笔记(10)----MySQL源码安装
MySQL可以支持多种平台,如Windows,UNIX,FreeBSD或其他Linux系统.本篇随笔记录在CentOS 7 上使用源码安装MySQL的过程. 1.下载源码 选择使用北理工的镜像文件: ...
- CentOS 7运维管理笔记(5)----源代码安装Apache 2.4,搭建LAMP服务器
########################## 2016-07-07-Thu--20:34 补充 ##################### 编译安装OpenSSL笔记: 如果系统要使用 ...
- CentOS 7运维管理笔记(12)----GUI配置工具Webmin的安装
早期的Linux系统管理员或是Web管理员在修改服务器配置时使用最多的就是vi编辑器,但是现在越来越多的基于GUI界面的配置工具出现了,毕竟人们还是喜欢以直接的可视化的方式来修改服务器的配置,而不是再 ...
- CentOS 7运维管理笔记(12)----PHP页面失去焦点后变成空白的解决方法
昨天搭建好了LAMP服务器,可以正常看到PHP页面了.后来发现每当把鼠标从浏览器中移开而点击其他地方时,PHP页面就变成一片空白.即PHP页面失去焦点后就变空白,不知为何. 今天网上搜索解决方案,终于 ...
- CentOS 7运维管理笔记(6)----Apache 基于 IP 的虚拟主机配置
Apache 配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置.本篇随笔记录自己基于IP的虚拟主机配置. 如果同一台服务器有多个IP,可以使用基于IP的 ...
- CentOS 7运维管理笔记(3)----Linux路由器配置
当正在配置的Linux主机需要作为路由器使用时,通过以下步骤配置后,子网上的计算机就可以访问外网了: 1. 编辑 /etc/sysctl.conf 文件,添加 net.ipv4_ip_forward ...
随机推荐
- python学习,day2:列表的复制,字符串的处理
---恢复内容开始--- 元组(tuple)是只读列表,不能修改,列表用中括号,元组用小括号.只能用index和count两个命令. ---恢复内容结束--- 字符串处理的代码 # coding=ut ...
- oracle闪回(flashback)的部分实用操作(彻底删除的除外)
一.数据delete并且commit提交之后的闪回 (一):根据时间来恢复:1.查询数据库当前时间(目的是为了检查数据库时间是否与你电脑时间相近,避免时间不同而将数据恢复到错误时间点)select ...
- 分分钟钟学会Python -基础&运算符
day002 基础&运算符 1.循环语句 ### 1.循环格式 while 条件: print('') ''' while True: print('人生苦短,我用Python.') ''' ...
- java 的继承
1 为什么要使用继承? 为了提取两个类中公共的代码,可以使用继承抽取重复性的代码到一个公共类中,这个公共的类称为父类(super class).继承于父类的类称为子类(sub class). java ...
- 小程序 - 分包加载上限8M(一)
使用分包 配置方法 假设支持分包的小程序目录结构如下 ├── app.js ├── app.json ├── app.wxss ├── packageA │ └── pages │ ├── c ...
- 一分钟看懂Docker的网络模式和跨主机通信
文章转载自:http://www.a-site.cn/article/169899.html Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docke ...
- c# xml序列化和反序列化。也就是xml的解析和反解析。
用习惯了newTownSoft.json 的json反序列化.碰到xml是真的不习惯. 每次json反序列化都是直接把json丢到bejson网站生成一个实体类,稍微修改修改一点点变量名.然后直接ne ...
- ETL 工具下载全集 包括 Informatica Datastage Cognos( 持续更新)
Datastage 8.0 BT种子下载:http://files.cnblogs.com/taven/Datastage_8.0.rar Informatica PowerCenter 8.6.0 ...
- java多线程开发之CyclicBarrier,CountDownLatch
最近研究了一个别人的源码,其中用到多个线程并行操作一个文件,并且在所有线程全部结束后才进行主线程后面的处理. 其用到java.util.concurrent.CyclicBarrier 这个类. Cy ...
- css3画半圆
border-radius制作半圆与制作圆形的方法是一样的,只是元素的宽度与圆角方位要配合一致,不同的宽度和高度比例,以及圆角方位,可以制作上半圆.下半圆.左半圆和右半圆效果.例如:.semicirc ...