配置FTP服务
第18章配置FTP服务
FTP(文件传输协议,简称“文传协议”)用于在因特网上控制文件双向传输。它同时也是一个应用程序,用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,以访问服务器上的大量程序和信息。FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或在本地计算机的文件传送到远程计算机,FTP方便传输数据。
18.1 使用vsftpd搭建FTP服务
18.1.1 安装vsftpd
使用yum工具安装vsftpd包,如下所示:
这里安装了两个软件包,同时也会把依赖的包安装上。其中db4-utils包用来生成密码库文件。
18.1.2 建立账号
首先建立与虚拟账号相关联的系统账号,如下所示:
接着建立与虚拟账户相关的文件,如下所示:
test1
123456
test2
Abcdef
该文加的奇数行为用户名,偶数行为上一行的用户密码。
然后更改该文件的权限,提升安全级别,如下所示:
vsftpd使用的密码文件不是明文的,需要生成对应的库文件,如下所示:
最后建立与虚拟账号相关的目录以及配置文件,
18.1.3 创建和用户对应的配置文件
用户的配置文件是单独存在的,每一个用户都有一个自己的配置文件,文件名和用户名一致,如下图所示:
# vim test1
其中,local_root为test1账号的家目录,anonymous_enable用来限制是否允许匿名账号登录(若为NO,表示不允许匿名账号登录),write_enable=YES表示可写,local_umask指定umask值,anon_upload_enable表示是否允许匿名帐号上传文件anon_mkdir_write_enable表示是否允许匿名账号可写。
创建test2账号的步骤和test1一样,如下所示:
在最开头添加两行
库文件路径为/lib64/security/pam_userdb.so
18.1.4 修改全局配置文件/etc/vsftpd/vsftpd.conf
修改用户的配置文件后还不可用,还需要修改vsftpd的一些全局配置文件。
首先编辑vsftpd.conf文件,如下所示:
vim /etc/vsftpd/vsftpd.conf
修改如下内容:
将anonymous_enable=YES 改为 anonymous_enable=NO
将#anon_upload_enable=YES 改为 anon_upload_enable=NO
将#anon_mkdir_write_enable=YES改为 anon_mkdir_write_enable=NO
再增加如下内容:
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES
然后启动vsftpd服务,执行如下命令:
整个过程配置过程有点繁琐,但是并不复杂。
//查看进程是否存在
//安装lftp客户端软件
使用lftp成功登录vsftpd,并且ls列出test1用户家目录下面的aming.txt,其中1001为virftp用户的uid和gid。
18.2 安装配置pure-ftpd
pure-ftpd为另外一款比较小巧实用的FTP软件
18.2.1 安装pure-ftpd
# yum install -y epel-release
# yum install -y pure-ftpd
18.2.2 配置pure-ftpd
在启动pure-ftpd之前,需要先修改配置文件/etc/pure-ftpd/pure-ftpd.conf。查看该配置文件,其中需要把PureDB/etc/pure-ftpd/pureftpd.pdb前面的#删除,然后启动pure-ftpd,启动之前需要关闭vsftpd,因为有端口冲突,
看到相关进程说明启动成功,如果没有正常启动,需通过/var/log/messages日志查看原因。
18.2.3 建立账号
为了安全,pure-ftpd使用的账号并非Linux的系统账号,而是虚拟账号。首先创建一个账号:
其中,-u选项将虚拟用户ftp_user1与系统用户pure-ftpd关联一起,也就是说,使用ftp_user1账号登录FTP后,会以pure-ftp的身份来读取和下载文件,-d选项后面的目录为ftp-user1账户的家目录,这样可以使ftp_user1只能访问其家目录/data/ftp/。
然后创建用户信息数据库文件,这一步最关键。
# pure-pw mkdb
其中,pure-mkdb还可以列出当前的FTP账号以及删除某个账号。例如在创建一个账号:
如果想删除账号,执行如下命令:
18.2.4 测试pure-ftpd
登陆后,使用ls命令可以查看当前目录都有什么文件,使用put命令可以把系统的文件上传到FTP服务器上。