一.介绍
文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。
二.配置ftp服务
1.在服务端
1)安装vsftpd服务

2)启动vsftpd服务并设置为开机自动启动

3)关闭防火墙并设置为开机不启动

4)关闭selinux
vim /etc/sysconfig/selinux 将第7行改为SELINUX=disabled
关闭selinux后,由于修改了配置文件,所以须重启服务,重启之后,输入getenforce指令查看,如果显示Disabled,则设置成功



2.在客户端
1)安装lftp服务 yum install lftp -y

2)测试

如果连接后,输入ls命令,可看到图示内容,则表示配置成功
三.四种常见的报错
500报错:权限过大
530报错:认证失败
550报错:服务本身不允许
553报错:文件系统权限过小
四.修改配置文件
在服务端
编辑vsftpd的配置文件:/etc/vsftpd/vsftpd.conf,即vim /etc/vsftpd/vsftpd.conf
因为修改的是配置文件,所以要重启vsftp服务,即systemctl restart vsftpd
在客户端
利用lftp命令进行测试
1)限制匿名用户的登陆
anonymous_enable=YES|NO
YES:允许匿名用户登陆
NO:不允许匿名用户登陆
编辑配置文件

修改第12行

重启服务

在客户端测试,当anonymous_enable=YES时,

当anonymous_enable=NO时,


2)修改配置文件限制匿名用户上传文件
write_enable=YES


anono_upload_enable=YES


重启服务

修改匿名用户登陆的默认目录的权限:chmod 775 /var/ftp/pub
修改匿名用户登陆的默认目录的所属组:chgrp ftp /var/ftp/pub

在客户端测试

3)匿名用户上传文件默认权限的修改
anono_umask=022 修改umask值

重启服务

在客户端测试

4)允许匿名用户下载自己上传的文件
anon_world_readable_only=NO(NO表示匿名用户可以下载自己上传的文件)

在客户端测试

下载成功
5)是否允许匿名用户建立目录(在pub目录)
anon_mkdir_write_enable=YES

重启服务

在客户端测试

6)是否允许匿名用户删除自己上传的文件及建立的目录
anono_other_write_enable=YES

重启服务

在客户端测试

7) 匿名用户使用身份的修改
chown_uploads=YES
chown_username=student(匿名用户以student用户身份登陆)

重启服务

在客户端上传文件

在服务端查看

8)指定匿名用户登陆后家目录
anon_root=/mnt 指定你名用户的家目录为/mnt

重启服务

在客户端测试

9)限制匿名用户最大上传速率
anno_max_rate=102400 限制匿名用户最大上传速率为100M

为了使匿名用户能够上传文件,具有权限,将家目录改为默认目录/var/ftp/pub

重启服务

创建文件

在客户端测试

10)服务端最大连接数
max_clients=1 设置服务端最大连接数为1

重启服务

在客户端测试

虚拟机连接成功

物理机连接失败
2.本地用户
1)本地用户家目录的修改
local_root=/jiao

重启服务

在/jiao目录下创建三个文件,为测试结果明显


在客户端测试

测试发现在看到文件为/jiao目录下的文件,设置成功
(2)本地用户上传文件默认权限的修改
local_umask=xxx

重启服务

为使用户能够上传文件,需要修改目录的权限

在客户端测试

(3)限制本地用户浏览根目录
chroot_local_user=YES

必须修改权限,否则会报500(权限过大)的错误
chmod u-w /home/*

重启服务

在客户端测试

4)用户黑名单的建立(黑名单中的用户不能访问根目录)
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list

将xin,chen用户设为黑名单用户

重启服务

在客户端测试

student用户能够访问根目录

xin用户不能访问根目录

chen用户不能访问根目录
(5)用户白名单的建立(只有白名单中的用户可以访问根目录)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

将xin,chen用户设置为白名单用户

重启服务

在客户端测试

xin用户能够访问根目录

student用户不能访问根目录
6)限制本地用户登陆
vim /etc/vsftpd/ftpusers 永久黑名单



vim /etc/vsftpd/user_list 临时黑名单
/etc/vsftpd/user_list为临时黑名单,通过设定可以变为白名单
7)用户白名单的设定(只有白名单中出现的用户才能通过lftp远程连接)
userlist_deny=NO


vim /etc/vsftpd/user_list 此参数设定,此文件变成用户白名单,名单中出现的用户可以登陆ftp


重启服务

在客户端测试

student用户可以登陆

xin用户不能登陆

chenyo用户不能登陆
8)用户黑名单的设定(黑名单中出现的用户不能通过lftp远程连接)
userlist_deny=YES


/etc/vsftpd/user_list 此参数设定,此文件变成用户黑名单,名单中出现的用户不可以登陆ftp


重启服务

在客户端测试

student用户不能登陆

xin用户能够登陆
4.3.虚拟用户
1)虚拟用户创建
服务端:
步骤一:编辑配置文件,用来存放虚拟用户的账户信息
vim /etc/vsftpd/file 文件名任意
user1
123
user2
123

步骤二:
为了安全,将用户名和密码进行加密
db_load -T -t hash -f /etc/vsftpd/xinfile /etc/vsftpd/xinfile.db

步骤三:查看是否安装pam ps aux | grep pam

步骤四:编辑解析文件 vim /etc/pam.d/xin

步骤五.修改vsftpd的解析文件 vim /etc/vsftpd/vsftpd.conf
133pam_service_name=xin
134guest_enable=YES
为了防止影响,将136userlist_deny=NO注释掉

重启服务

在客户端测试:


user1,user2登陆成功
2)统一指定虚拟用户家目录
方法同上,步骤五为:修改vsftpd的解析文件 vim /etc/vsftpd/vsftpd.conf
133pam_service_name=xin
134guest_enable=YES
135guest_username=student
为了防止影响,将userlist_deny=NO注释掉


重启服务

在客户端测试


user1,user2登陆后默认家目录为student
3)虚拟用户家目录单独设定
服务端
为user1和user2创建家目录并修改权限
mkdir /ftphome/user1/user1dir -p
mkdir /ftphome/user2/user2dir -p
chmod 775 /ftphome/usr1/user1dir
chmod 775 /ftphome/usr2/user2dir
chgrp ftp /ftphome -R

vim /etc/vdftpd/vdftpd.conf


重启服务

在客户端测试

user1登陆后家目录为user1dir

user2登陆后家目录为user2dir
设置成功Linux学习笔记之ftp服务
原文:http://blog.51cto.com/14050771/2318208