IP | hostname | 备注 |
---|---|---|
192.168.174.128 | node1 | 关闭防火墙 |
FTP是文件传输协议,用于在因特网上控制文件的双向传输。FTP的主要作用就是让用户连接一个远程计算机,并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。FTP方便传输数据,所以个人用户很多,但在企业里用得越来越少,因为FTP是有一定安全隐患的。
使用vsftpd搭建FTP服务
CentOS或者Red Hat Linux上有自带的FTP软件vsftpd,默认并没有安装,需要用yum安装,安装后 不用配置,启动后便可以使用,但本节介绍的是它的高级用法。
1 安装vsftpd
使用yum工具安装vsftpd包,如下所示:
# yum install -y vsftpd
这里安装了两个软件包,同时也会把依赖的包安装上。其中db4-utils包用来生成密码库文件。
2 建立账号
vsftpd默认可以支持使用系统账号体系登录,但不安全,这里使用虚拟账号体系登录
首先建立与虚拟账号相关联的系统账号,如下所示:
# useradd virftp -s /sbin/nologin
接着建立与虚拟账户相关的文件,如下所示:
vi /etc/vsftpd/vsftpd_login // 内容如下:
testl
000000
test2
123456
需要说明的是,该文件的奇数行为用户名,偶数行为上一行的用户密码。
然后更改该文件的权限,提升安全级别,如下所示:
#chmod 600 /etc/vsftpd/vsftpd_login
vsfptd使用的密码文件不是明文的,需要生成对应的库文件,如下所示:
# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
最后建立与虚拟账号相关的目录以及配置文件,如下所示:
# mkdir /etc/vsftpd/vsftpd_user_conf
# cd /etc/vsftpd/vsftpd_user_conf
3 创建和用户对应的配置文件
用户的配置文件是单独存在的,每一个用户都有一个自己的配置文件,文件名和用户名一致,如 下所示:
vim testl //内容如下:
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 : 用来限制是否允许匿名账号登陆(NO是不允许)
write_enable : 表示可不可写(YES为可写)
local_umask : 指定umask值
anon_upload_enable : 表示是否允许匿名账号上传文件(NO是不允许)
anon_mkdir_write_enable : 表示是否允许匿名账号可写 (NO是不允许)
创建testl,(test2也一样)如下所示:
# mkdir /home/virftp/testl
# touch /home/virftp/testl/aminglinux.txt
# chown -R virftp:virftp /home/virftp
vim /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
CentOS 7为64位系统,所以库文件路径为/lib64/security/pam userdb.so
4 修改全局配置文件/etc/vsftpd/vsftpd.conf
修改用户的配置文件后还不可用,还需要修改vsftpd的一些全局配置文件。
首先编辑vsftpd.conf文件,如下所示:
vi /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=N00
再增加如下内容:
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服务,执行如下命令:
# systemctl start vsftpd
整个过程配置步骤虽然有点烦琐,但是并不复杂。下面我们来做一下测试:
ps aux I grep vsftp //查看进程是否存在
# yum install lftp //安装Lftp客户端软件
测试
使用lftp成功登录vsftpd,并且ls列出testl用户家目录下面的a.txt,其中1000为virftp用户的 uid和gid。若遇到问题后请检查/var/log/secure日志。