配置FTP服务
- FTP简介
FTP是File Transfer Protocol (文件传输协议),用于在因特网上控制对文件的双向传输。同时也是一个应用程序,用户可以通过它将自己的PC机与世界各地所有运行FTP协议的服务器相连接,以访问服务器上的大量程序和信息。FTP的主要作用是让用户连接一个运行FTP服务的远程计算机,并查看远程计算机的文件,然后将文件远程传输。
- FTP服务
1. 搭建FTP服务
1.1 安装vsftpd
[root@localhost ~]# yum install -y vsftpd db4-utils
注:db4需要从扩展源中下载(需要先下载epel-release)
1.2 建立账号
vsftpd默认可以支持使用系统账号登录,但是为安全,使用虚拟账号体系登录
建立与虚拟账号相关联的系统账号:
[root@localhost ~]# useradd virftp -s /sbin/nologin
建立与虚拟账户相关的文件:
[root@localhost ~]# vi /etc/vsftpd/vsftpd_login
test1
123456
test2
abcdef
注:奇数行为用户名,偶数为上一行的用户密码
更改文件的权限,提升安全级别
[root@localhost ~]# chmod 600 /etc/vsftpd/vsftpd_login
生成对应的库文件
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
注:vsftpd使用的密码文件不是明文的,需要使用对应的库文件
建立与虚拟主机相关的目录以及配置文件
[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@localhost ~]# cd /etc/vsftpd/vsftpd_user_conf
1.3 创建和用户对应的配置文件
用户的配置文件是单独存在的,每个用户都有一个自己的配置文件,文件名与用户名一致:
[root@localhost vsftpd_user_conf]# vi test1
local_root=/home/virftp/test1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
注:
- local_root为test1的家目录
- anonymous_enable用来限制是否允许匿名账号登录
- write_enable为是否可写
- local_umask用来指定umask值
- anon_upload_enable表示是否允许匿名账号上传文件
- anon_mkdir_write_enable表示是否允许匿名账号可写
修改配置文件
[root@localhost vsftpd_user_conf]# mkdir /home/virftp/test1
[root@localhost vsftpd_user_conf]# touch /home/virftp/test1/wslinux.txt
[root@localhost vsftpd_user_conf]# chown -R virftp:virftp /home/virftp/
[root@localhost vsftpd_user_conf]# vi /etc/pam.d/vsftpd //修改前面两行
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
1.4 修改全局配置文件/etc/vsftpd/vsftpd.conf
上述修改的配置文件不可使用,需要修改vsftpd的全局配置文件
编辑vsftpd.conf文件
[root@localhost vsftpd_user_conf]# vi /etc/vsftpd/vsftpd.conf
...
anonymous_enable=YES----->>NO
...
#anon_upload_enable=YES----->>NO //去掉注释符
...
#anon_mkdir_write_enable=YES---->>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服务
[root@localhost vsftpd_user_conf]# systemctl start vsftpd
测试:
[root@localhost vsftpd_user_conf]# ps aux|grep vsftp //查看进程
安装lftp客户端
[root@localhost vsftpd_user_conf]# yum install -y lftp
登录test1并列出家目录下的wslinux.txt文件:
[root@localhost vsftpd_user_conf]# lftp test1@127.0.0.1
口令:
lftp test1@127.0.0.1:~> ls
-rw-r--r-- 1 1000 1000 0 Oct 19 21:06 wslinux.txt
注:其中1000为用户的uid和gid。当此过程发生问题可以通过查看/var/log/secure日志文件来判断错误信息。
- 安装配置pure-ftpd
pure-ftpd为另一款小巧使用的FTP软件
-
- 安装pure-ftpd
[root@localhost ~]# yum install -y epel-release
[root@localhost ~]# yum install -y pure-ftpd
注:因为yum源中并没有pure-ftpd,所以需要安装epel扩展源
-
- 配置pure-ftpd
修改配置文件
[root@localhost ~]# vi /etc/pure-ftpd/pure-ftpd.conf
...
# PureDB /etc/pure-ftpd/pureftpd.pdb //删除注释符
...
启动pure-ftpd
[root@localhost ~]# systemctl stop vsftpd
[root@localhost ~]# systemctl start pure-ftpd
注:因为pure-ftpd与vsftpd端口冲突,所以需要将vsftpd关闭
启动时报错:
解决方法:
查看日志/var/log/messages
发现libcrypto库问题,上网寻找库文件所需要的扩展源(openssl)下载安装:
[root@localhost ~]# yum install -y openssl
查看是否启动成功
[root@localhost ~]# ps aux |grep pure-ftp
-
- 建立账号
创建一个账号
[root@localhost ~]# mkdir -p /data/ftp
[root@localhost ~]# useradd -u 1010 pure-ftp
[root@localhost ~]# chown -R pure-ftp:pure-ftp /data/ftp/
[root@localhost ~]# pure-pw useradd ftp_user1 -u pure-ftp -d /data/ftp/ //设置密码000000
注:
- -u选项将虚拟用户ftp_user1和pure-ftp关联在一起,即使用ftp_user1登录时会以pure-ftp的身份来下载和读取文件。
- -d选项后面的目录为ftp_user1账户的家目录,这可以使ftp_user1只能访问其家目录
创建用户信息数据库文件
[root@localhost ~]# pure-pw mkdb
其中pure-pw可以列出当前FTP账号以及删除的某个账号。
在创建一个账号:
[root@localhost ~]# pure-pw useradd ftp_user2 -u pure-ftp -d /tmp/
[root@localhost ~]# pure-pw mkdb
列出当前账号:
[root@localhost ~]# pure-pw list
ftp_user1 /data/ftp/./
ftp_user2 /tmp/./
删除账号:
[root@localhost ~]# pure-pw userdel ftp_user2
-
- 测试pure-ftpd
测试:
[root@localhost ~]# lftp ftp_user1@127.0.0.1
口令:
lftp ftp_user1@127.0.0.1:~> ls
drwxr-xr-x 2 1010 pure-ftp 6 Oct 20 07:30 .
drwxr-xr-x 2 1010 pure-ftp 6 Oct 20 07:30 ..
lftp ftp_user1@127.0.0.1:/> put /etc/fstab
465 bytes transferred
lftp ftp_user1@127.0.0.1:/> ls
drwxr-xr-x 2 1010 pure-ftp 18 Oct 20 07:43 .
drwxr-xr-x 2 1010 pure-ftp 18 Oct 20 07:43 ..
-rw-r--r-- 1 1010 pure-ftp 465 Oct 20 03:14 fstab
注:put命令可以把系统的文件上传到FTP服务器上。同时还可以在Windows中安装FTP客户端软件,远程测试
- 实战案例
(1)案例目标
1.了解FTP服务的安装
2.了解FTP的配置与使用
(2)案例实施
1.配置yum源
[root@localhost ~]# mount /dev/cdrom /opt/centos/
[root@localhost ~]# mv /etc/yum.repos.d/* /media/
[root@localhost ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
- 安装FTP服务
安装FTP服务
[root@localhost ~]# yum install -y vsftpd
编辑配置文件
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
anon_root=/opt
启动vsftpd服务
[root@localhost ~]# systemctl start vsftpd
使用netstat -ntpl命令查看端口开放状态
注:查看21端口开放
关闭SELinux和防火墙
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld
- FTP服务使用
使用浏览器访问本机ip
可以查看到/opt目录下的文件
在/opt目录下创建txt文件刷新浏览器后可以查看到新建立的文件
[root@localhost ~]# touch /opt/wslinux.txt