Linux中ftp协议详解

1、ftp的定义

ftp:// :文件传输协议

2、ftp协议提供的软件

在rhel7中:vsftpd

3、部署ftp服务

命令 功能
vim /etc/yum.repos.d/rhel_dvd.repo 检查yum源是否设置好
yum search ftp 搜索ftp相关信息
yum install vsftpd.x86_64 lftp.x86_64 下载这两款软件(vsftpd为服务端软件,lftp为客户端软件)
systemctl start vsftpd 启动vsftpd服务
firewall-cmd --list-all 显示防火墙信息
firewall-cmd --add-service=ftp --permanent(永久) 添加ftp服务至防火墙
firewall-cmd --reload 重新加载
firewall-cmd --list-all 显示防火墙信息(查看是否添加ftp服务)
lftp 172.25.254.110(服务端ip) 在客户端连接服务端
打开浏览器输入ftp://172.25.254.110(服务端ip) 可访问到服务端的文件
touch /var/ftp/file 建立一个测试文件
lftp 172.25.254.110(服务端ip) 在客户端连接服务端
ls 查看是否有file测试文件
getenforce 查看selinux状态是否为Disabled
vim /etc/sysconfig/selinux 若不是则修改配置文件,更改selinux状态为Disabled
reboot 更改后重启生效(内核文件需要重启,不能只读取配置文件)

Linux中ftp协议详解_第1张图片

4、ftp服务的基本信息

名称 信息
软件安装包 vsftpd
默认的发布目录 /var/ftp
协议接口 21/tcp
服务配置文件 /etc/vsftpd/vsftpd.conf

报错id的解析:

ID 意义
500 文件系统权限过大
530 用户认证失败
550 服务本身功能未开放(需在配置文件中添加功能)
553 本地文件系统权限过小(修改该目录的权限和所属组,所属组为ftp,家目录权限不可修改)

5、服务配置文件设置

(1)基本权限设定

命令 功能
vim /etc/vsftpd/vsftpd.conf 修改配置文件
anonymous_enable=YES/NO 匿名用户是否可以登陆
local_enable=YES/NO 本地用户是否可以登陆
write_enable=YES/NO 本地用户是否可以写入
local_umask=xxx 本地用户写入的文件umask

Linux中ftp协议详解_第2张图片

(2)匿名用户权限设定

命令 功能
anon_root=/dir 设定匿名用户家目录为/dir,家目录权限不可被修改
anon_umask=xxx 设定匿名用户上传文件时的umask
anon_mkdir_write_enable=YES/NO 匿名用户是否可以建立目录
anon_world_readable_only=YES/NO 匿名用户是否只可以下载有可读权限的文件
anon_other_write_enable=YES/NO 匿名用户是否可以删除
chown_uploads=YES/NO 启用此项,匿名上传的用户转换用户身份可以执行
chown_username=student 设定匿名用户登陆时以student用户身份运行
chown_upload_mode=0644 设定以该身份建立文件时权限为0644
anon_max_rate=204800 设定限速为200k/s
max_clients=2 设定最大连接用户数

Linux中ftp协议详解_第3张图片
Linux中ftp协议详解_第4张图片

(3)本地用户基本权限及是否被锁家目录设定

命令 功能
local_enable=YES/NO 本地用户是否可以登陆
write_enable=YES/NO 本地用户是否可以写入
local_root=/directory 指定本地用户的家目录(所有本地用户将都以此目录为家目录)
local_umask=xxx 设定本地用户上传文件时的umask值
chroot_local_user=YES/NO 本地用户是否被锁在家目录中,不可访问其他目录,YES为是,NO为否
chmod u-w /home/* 更改所有用户家目录的权限
chroot_local_user=YES/NO 该条为是或者否决定了名单是黑名单还是白名单
chroot_list_enable=YES/NO 是否开启名单
chroot_list_file=/etc/vsftpd/chroot_list 名单上的用户为/etc/vsftpd/chroot_list文件中的用户
vim /etc/vsftpd/chroot_list 该名单默认没有,vim新建一个为此名的名单
123 写入123,意味123用户在名单中,若本地用户被锁在家目录,则该名单为白名单,仅123用户可以不被锁,若本地用户没有被锁在家目录,则该名单为黑名单,仅123用户被锁在家目录

Linux中ftp协议详解_第5张图片

(4)本地用户是否能登陆ftp设定

命令 功能
vim /etc/vsftpd/ftpusers 用户永久黑名单(此名单优先级大于临时黑名单,该改动即改即用,无需重读)
vim /etc/vsftpd/user_list 用户临时黑名单(可在特定时变为白名单,该改动即改即用,无需重读)
vim /etc/vsftpd/vsftpd.conf 修改配置文件
userlist_deny=NO 当该命令为NO时,用户临时黑名单变为白名单
systemctl restart vsftpd 修改配置文件后,需重读配置文件才能生效

Linux中ftp协议详解_第6张图片

(5)虚拟用户登陆ftp设定(不真实存在的用户)

命令 功能
vim /etc/vsftpd/ftpuserlist 文件名称可自拟,地址不可,建立该文件创建虚拟用户身份
虚拟用户名1 创建虚拟用户1
虚拟用户密码1 创建虚拟用户1密码
虚拟用户名2 创建虚拟用户2
虚拟用户密码2 创建虚拟用户2密码,输入所有想建立的虚拟用户后退出保存
db_load -T -t hash -f ftpuserlist ftpuserlist.db 以hash加密的形式,以ftpuserlist文件为基本建立ftpuserlist.db文件
rpm -qc pam 查看pam的配置文件,pam是执行认证策略的程序
rpm -qc vsftpd 查看vsftpd的配置文件,可发现vsftpd与pam有关
vim /etc/pam.d/ftpauth 建立一个认证策略文件
account required pam_userdb.so db=/etc/vsftpd/ftpuserlist(自动加.db所以不用手动写入) 用户帐号认证,用pam_userdb.so的方式读取/etc/vsftpd/ftpuserlist.db名单,该命令给文件自动加.db后缀,所以此处不需加后缀,若认证成功则继续,失败则拒绝
auth required pam_userdb.so db=/etc/vsftpd/ftpuserlist 用户密码认证,pam_userdb.so的方式读取/etc/vsftpd/ftpuserlist.db名单,成功则继续,失败则拒绝,编辑完成后退出保存
vim /etc/vsftpd/vsftpd.conf 修改配置文件
pam_service_name=ftpauth 读取的认证策略是ftpauth
guest_enable=YES 是否允许虚拟用户登陆
guest_username=ftp 虚拟用户以ftp用户的身份登陆
userlist_enable=YES 用户名单启用
#userlist_deny=NO 必须注释掉,否则无法成功,因为当该条存在时,存在用户白名单,修改完成后退出保存
systemctl restart vsftpd 重读配置文件,使修改立即生效

Linux中ftp协议详解_第7张图片

(6)不同虚拟用户指定不同的家目录

命令 功能
mkdir -p /ftphome/user{1…4} 递归建立虚拟用户家目录,此时家目录的名称要与虚拟用户名相同
touch /ftphome/user1/userfile1 建立虚拟用户1的测试文件1
touch /ftphome/user2/userfile2 建立虚拟用户2的测试文件2
touch /ftphome/user3/userfile3 建立虚拟用户3的测试文件3
touch /ftphome/user4/userfile4 建立虚拟用户4的测试文件4
mkdir -p /ftphome/user{1…4}/pub 递归建立家目录下的子目录pub
chmod 775 /ftphome/user(1…4}/pub 更改pub的权限为775
chgrp ftp /ftphome/user(1…4}/pub 更改pub的所属组为ftp
vim /etc/vsftpd/vsftpd.conf 修改配置文件
local_root=/ftphome/$USER 设定虚拟用户家目录为同名目录
user_sub_token=$USER 在本地root目录中插入用户名
systemctl restart vsftpd 重读配置文件,使修改立即生效

(7)不同虚拟用户如何独立配置

命令 功能
vim /etc/vsftpd/vsftpd.conf 修改配置文件
user_config_dir=/etc/vsftpd/user_conf 指定虚拟用户的单独配置文件目录
mkdir /etc/vsftpd/user_conf 建立虚拟用户的配置文件目录
vim /etc/vsftpd/user_conf/user1 建立user1的单独配置文件
anon_upload_enable=YES 添加想要单独设置给user1的权限
systemctl restart vsftpd 重读配置文件,使修改立即生效

Linux中ftp协议详解_第8张图片

你可能感兴趣的:(Linux)