在CentOS 7上安装FTP服务器

在Linux系统中通常使用的FTP服务器是vsftpd,所以下面我就记录一下我是如何在一台没有安装vsftpd的Linux主机上安装vsftpd。

1、安装vsftpd包

sudo yum install vsftpd

2、配置FTP账户

在Linux系统中FTP账户也是一种特殊的系统用户,只不过FTP账户的权限需要特殊设定而已。所以,我们先添加一个FTP账户:

sudo useradd -d /home/www www

其中,useradd为添加用户的命令,该命令只有超级用户组的用户才可以使用。参数“-d”表示该参数后面指定的是用户的主目录。最后面一个参数是FTP用户名。

然后为www用户设置密码:

sudo passwd www

根据提示输入两次密码。

3、设置www用户的权限:

usermod -s /sbin/nologin www

其中,usermod为修改用户信息的命令,它也是只能由超级用户组的成员才能使用。参数“-s”表示该参数后面指定的是用户登录所使用的shell。我们可以查看系统里面有哪些shell:cat /etc/shells

在我的CentOS 7上面显示有如下几个:

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh

我们可以看到上面有两个名为nologin的shell,其实它们两个是一样的,只不过/sbin目录是/usr/sbin目录的链接目录,也就是我们通常所说的文件夹快捷方式。如果我们为某个用户指定了他登录所使用的shell为nologin,那就意味着不允许他使用ssh的方式登录系统,但是呢他仍旧可以有其它权限。为了安全性,我们刚创建的FTP账户就不能让他有ssh方式登录系统的权限,所以需要将他的登录shell设为nologin。

设置完不能登录还不算完,试想一下,如果FTP用户通过FTP方式登录系统,那他除了可以看到自己的主目录之外,是不是也可以调转到其它非自己主目录下的目录呢,答案是当然可以,如果不进行限定就是这样。所以,我们还需要限定www用户只能看到自己主目录下的东西。哦,对了,别忘了还有个匿名用户得禁掉。

这些配置我们需要在vsftpd的配置文件里面进行配置:

sudo vi /etc/vsftpd/vsftpd.conf

那么,配置文件里面有这么多选项,我们到底该配置哪些呢,不用担心,我们可以去vsftpd官网找答案。不过很可惜,我打不开官网,这也没关系,我们可以去wikipedia.org上找找看,很快地我就打开了wikipedia上的vsftpd的词条,我发现里面并没有将如何配置vsftpd的,但是我在下方的外部链接“External links”下面发现了“List of Config Directives”这项链接,打开一看,我发现这就是我要找的配置说明。

依次从上往下看,我发现了一些关于匿名账户的相关设置,它们多以“anon”开头,这些选项大多数的默认值都是NO,我看到“anon_world_readable_only”和“anonymous_enable”这两项的默认值是YES。其中“anon_world_readable_only”选项如果为YES,则允许匿名用户下载服务器上的文件,很明显我不能允许,所以这个选项应设为NO。“anonymous_enable”选项控制是否允许匿名用户登录FTP服务器,很明显这项也应设置为NO。所以,我们需要在配置文件中配置下面这两项:

anon_world_readable_only=NO
anonymous_enable=NO

再往下看,我发现可以改变用户根目录的两个选项“chroot_local_user”和“chroot_list_enable”,其中chroot其实是一个名为chroot(const char *path)的C函数,此函数的作用就是将改变调用进程的根目录为指定的路径。选项“chroot_local_user”的值如果设为YES,那么本地用户在通过FTP方式登录之后,他将会被关进他自己的根目录中,而不允许调转到非自己根目录及其子目录以外的其它目录。而选项“chroot_list_enable”如果设为YES,那么vsftpd将允许我们通过“chroot_list_file”选项指定一个包含本地用户列表的文件来控制到底哪些用户在登录后会被关进自己的根目录。

我们需要注意的是,“chroot_local_user”选项和“chroot_list_enable”选项组合使用时所表示的实际含义是相反的。什么意思呢,下面我用一个表格来说明:

chroot_local_user chroot_list_enable 实际含义
YES YES 只有“chroot_list_file”里面列出的用户才不会被关进自己的根目录。
YES NO 所有本地用户均会被关进自己的根目录。
NO YES 只有“chroot_list_file”里面列出的用户才会被关进自己的根目录。
NO NO 所有本地用户均不会被关进自己的根目录。

所以,通常情况下选项“chroot_local_user”和选项“chroot_list_enable”不应同时使用,除非有特殊癖好。

我这里只需要设置“chroot_local_user”选项即可:

chroot_loacl_user=YES

再往下看,我发现了一个名为“connect_from_port_20”的选项,该选项控制FTP传输方式,如果设为YES,则使用Port方式传输数据。关于FTP的传输方式,百度文库上有详细说明:http://wenku.baidu.com/view/728dc0104431b90d6c85c79c.html相对应的还有PASV方式,对于该方式,我们需要将“connect_from_port_20”选项设为NO或者注释掉。同时还应设置如下选项:

pasv_enable=YES
pasv_max_port=pasv模式最大端口
pasv_min_port=pasv模式最小端口

但是,PASV模式通常适用于多客户端,而我就一人使用,所以我就没必要使用这个模式。所以我只需设置“connect_from_port_20=YES”就OK。

4、重启vsftpd服务器:

sudo /etc/init.d/vsftpd restart

参考文献

  • http://vsftpd.beasts.org/vsftpd_conf.html
  • http://man7.org/linux/man-pages/man2/chroot.2.html
时间: 2024-08-06 11:36:42

在CentOS 7上安装FTP服务器的相关文章

在CentOS7上安装ftp服务器用于保存服务端上传的图片。

1.CentOS卸载vsftpd的方法 如果服务器上已经安装了vsftpd服务,配置出错需要卸载vsftpd服务. 1.1 查找vsftpd服务 [[email protected] /]# rpm -aq vsftpd 返回结果显示: vsftpd-3.0.2-21.el7.x86_64 #此处是查找vsftpd的返回结果 表示此服务期之前已经安装过vsftpd服务. 1.2 删除查找到的vsftpd服务 注:在卸载vsftpd之前,先停止vsftpd [[email protected] /

在树莓派上安装FTP服务器

在终端安装FTP服务器 sudo apt-get install vsftpd 然后对FTP进行配置,打开它的配置文件 sudo nano /etc/vsftpd.conf 修改以下配置 # 不允许匿名访问  anonymous_enable=NO  # 设定可以进行写操作 write_enable=YES  # 设定本地用户可以访问 local_enable=YES  ascii_upload_enable=YES  ascii_download_enable=YES 重启服务 sudo se

在centos6.5上面mount微软系统上安装ftp服务器

现在用虚拟机开发linux软件,发现虚拟机提供的共享文件夹不能很好地工作,表现为: 1.我在windows上面修改了文件内容,在linux里面发现文件内容没有变化,需要做些等待. 2.在linux里面修改了文件内容,在windows下面也没有发现变化,需要做些等待. 没有找出解决这些问题的原因.所以我在windows上安装了haneWIN NFS Server软件,把windows作为一个nfs服务器使用,工作中使用了一个月,这个软件挺好用的.但是这个软件是收费的,过了一个月试用期我就发现用不了

在CentOS 7上安装Nginx服务器

下面我就我在CentOS上安装Nginx经验做简单的记录,以备后查. 1.下载nginx-release包 以CentOS 7为例,下载nginx软件包:http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 其它Linux发行版的软件包下载地址:http://nginx.org/en/linux_packages.html 2.以普通用户登录终端,然后导入GPG sig

如何在CentOS 7上安装Percona服务器

在这篇文章中我们将了解关于 Percona 服务器,一个开源的MySQL,MariaDB的替代品.InnoDB的数据库引擎使得Percona 服务器非常有吸引力,如果你需要的高性能,高可靠性和高性价比的解决方案,它将是一个很好的选择. 在下文中将介绍在CentOS 7上 Percona 服务器的安装,以及备份当前数据,配置的步骤和如何恢复备份. 1.什么是Percona,为什么使用它 Percona是一个MySQL,MariaDB数据库的开源替代品,它是MySQL的一个分支,相当多的改进和独特的

CentOS 7上安装Nginx服务器

我在CentOS上安装Nginx经验做简单的记录,以备后查. 1.下载nginx-release包 以CentOS 7为例,下载nginx软件包:http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 其它Linux发行版的软件包下载地址:http://nginx.org/en/linux_packages.html 2.以普通用户登录终端,然后导入GPG signing

如何在CentOS 7上安装Redis服务器

# wget http://download.redis.io/releases/redis-3.2.6.tar.gz# tar xzf redis-3.2.6.tar.gz# cd redis-3.2.6 # make 安装CC # yum -y install gcc automake autoconf libtool  make zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录 解决: #  make MALLOC=libc 进入:#

CentOS 7运维管理笔记(4)----安装ftp服务器

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

在阿里云主机上基于CentOS用vsftpd搭建FTP服务器

最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.特点是小巧轻快,安全易用. vsftpd 的名字代表"very secure FTP daemon",安全是它的开发者 Chris Evans 考虑的首要问题之一.在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标. 准备工作 安装vsftpd yum install v