文件传输协议ftp服务

1. ftp基本信息

ftp协议提供的软件(在rhel7中):vsftp : 非常安全的文件传输协议
软件安装包:vsftpd
匿名用户默认发布目录: /var/ftp
本地用户默认发布目录:/home/user 本地用户的家目录
协议接口:21/tcp接口
服务配置文件:/etc/vsftpd/vsftpd.conf
lftp与vsftp不同;lftp是连接ftp的一个软件,类似于浏览器
服务操作报错id解如下:
错误 解析
500 文件权限过大
530 用户登录认证失败
550 服务本身功能未开启
553 本地文件权限过小

2. 部署ftp服务

Server服务端:
搭建好本地yum源之后,yum install vsftpd lftp -y
systemctl start vsftpd
systemctl enable vsftpd
systemctl stop firewalld
systemctl disable firewalld
setenforce 0 #selinux设置为警告模式
ip:172.25.254.2
Desktop测试端:
搭建好本地yum源之后,yum install lftp -y
ip:172.25.254.1

3. ftp服务权限

(1)匿名用户权限

匿名用户:未指定用户身份,ftp身份实现从server服务器上传和下载文件。

  • 匿名用户登陆设定:
    server下:
    vim /etc/vsftpd/vsftpd.conf:
    12行: anonymous_anable=YES|NO
    systemctl restart vsftpd
  • 操作如图:NO表示禁止匿名用户登录
    在这里插入图片描述
  • 测试如图:desktop下:无法登录
    在这里插入图片描述
  • 匿名用户上传:
    server下
    一: vim /etc/vsftpd/vsftpd.conf:
    write_enable=YES
    anon_upload_enable=YES
    二:mkdir /var/ftp/upload #建立匿名用戶上傳的共享目錄
    ll -d
    chown ftp /var/ftp/upload 用户所有人改成ftp
    chmod 775 /var/ftp/upload 修改目錄权限才可以上傳
    或者用户所有组改成ftp,再给组权限。
    systemctl restart vsftpd
  • 操作如图:
    在这里插入图片描述
  • 測試如圖:
    Desktop下:fltp 172.25.254.11
    cd upload
    put /etc/passwd
    在这里插入图片描述
  • 匿名用户家目录修改
    Server:
    anon_root=/public #自己选一个目录
	mkdir /public
 	cd /public
	touch publicfile
	systemctl restart vsftpd
  • 操作如圖:
    在这里插入图片描述

  • 測試如圖:
    Desktop下:
    lftp 172.25.254.11
    ls #显示家目录/public的文件
    在这里插入图片描述

  • 匿名用户上传文件默认权限修改
    anon_mask=xxx

  • 操作如圖:
    在这里插入图片描述

  • 測試如圖:
    Desktop:put /etc/motd
    在这里插入图片描述

  • 匿名用户建立目录
    anon_mkdir_write_enable=YES|NO

  • 操作如圖:
    在这里插入图片描述

  • 測試如圖:
    Desktop:cd upload
    mkdir hello
    在这里插入图片描述

  • 匿名用户下载
    anon_world_readable_only=YES|NO #NO表示可以下载

  • 操作如圖:
    在这里插入图片描述

  • 測試如圖:
    Desktop:
    lftp 172.25.254.11
    cd upload
    get passwd
    在这里插入图片描述

下载命令含义
mirror目录的下载
get文件的单个下载
get group下载多个文件
get *下载所有文件
mget *下载所有目录
  • 匿名用户删除、重命名mv文件
    anon_other_write_enable=YES|NO
  • 操作如圖:
    在这里插入图片描述
  • 測試如圖:
    Desktop:
    lftp 172.25.254.11
    cd upload
    ls
    rm hello
    在这里插入图片描述
  • 匿名用户登陸使用的用户身份tfp修改成student(效果:上傳文件後改變了文件的所有者)
    chown_uploads=YES
    chown_username=student
    chown_uploads_mode=0644
    Desktop:
    lftp 172.25.254.11
    cd upload
    put /etc/fstab
    ls #id 从14(tfp)变为1000(student)
  • 測試如圖:
    在这里插入图片描述

    (2) 通用權限

  • 最大上传速率
    anon_max_rate=1024
    cd /var/ftp/upload
    dd if=/dev/zero of=share.txt bs=1M count=100 #建一个较大的文件,來限速
    Desktop:
    lftp 172.25.254.11
    cd upload
    ls
    get share.txt #下载速度很慢
  • 測試如圖:
    在这里插入图片描述
  • 最大链接数
    max_clients= 1 #desktop测试时只能打开1个shell去登陆
  • 測試如圖:第2個shell登陸出現錯誤
    在这里插入图片描述

(3)本地用户權限

本地用戶:-u指定,用户是server服务器端的用户

  • 本地用戶的登陸、是否可写
    local_enable=YES|NO #本地用户登陆限制
    write_enable=YES|NO #本地用户写权限限制(在ftp服务下是否能建立删除文件或目录)

  • 操作如圖:
    在这里插入图片描述

  • 測試如圖:
    Desktop:
    lftp 172.25.254.11 -u student
    cd upload
    ls #不可以列出
    %
    在这里插入图片描述

  • 本地用户家目录修改
    local_root=/mnt
    Desktop:lftp 172.25.254.11 -u student
    pwd #查看进去的当前目录

  • 測試如圖:
    在这里插入图片描述

  • 本地用户上传权限
    local_umask=xxx
    chown student 家目錄
    chmod 775 家目錄

  • 操作如圖:預留值爲077 775-077=600
    在这里插入图片描述

  • 測試如圖:
    在这里插入图片描述

  • 本地用户浏览/目录的權限
    chroot_local-user=YES # yes| 否 no|是
    chmod u-w /home/* #在建立用户家目录中去掉建立的用户的写权限

  • 測試如圖:
    Desktop:lftp 172.25.254.11 -u student
    pwd #查看进去的当前目录
    ls
    cd /
    ls #发现内容不是/下的内容
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

(4)黑白名單

一:浏览/目录的用户黑白名单建立

  • 黑名单
    chroot_local_user=NO #本地用户只能切换root==不是,表示可以切换到/目录
    #专门设置列表文件是不允许切换到/目录的:
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

  • 操作如图:
    在这里插入图片描述
    在这里插入图片描述
    黑名单:
    在这里插入图片描述

  • 测试如图:
    在这里插入图片描述
    除黑名单以外的用户可以浏览/目录:
    在这里插入图片描述

  • 白名单
    chroot_local_user=YES #只有白名单内的用户可以切换到/
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list

  • 测试如图:

  • 在这里插入图片描述
    在这里插入图片描述
    二:用户登陆黑白名单

  • 黑名单
    vim /etc/vsftpd/ftpusers ##用户永久黑名单
    vim /etc/vsftpd/user_list ##用户临时黑名单

  • 操作如图:永久黑名单下加入student
    在这里插入图片描述

  • 测试如图:
    在这里插入图片描述
    在这里插入图片描述

  • 白名单
    userlist_deny=NO
    /etc/vsftpd/user_list ##参数设定NO,此文件变成用户白名单,只在名单中出现的用户可以登陆ftp,root用户还需要查看文件vim /etc/vsftpd/ftpusers里面是否有root,有要删掉

  • 操作如图:
    在这里插入图片描述

  • 测试如图:
    在这里插入图片描述

(5)虚拟用户的设定及其权限

  • 虚拟用户的设定
    虚拟用户:-u指定,server服务器端不存在该用户。用一个文件存储用户信息,但用户没有创建,以本地用户身份使用。
    1)vim /etc/vsftpd/loginusers 编辑虚拟用户帐号与密码 文件名任意
    在这里插入图片描述
    二:对用户帐号和密码加密:db_load -T -t hash -f /etc/vsftpd/loginusers /etc/vsftpd/loginuser.db #以hash加密方式将 /etc/vsftpd/loginusers转换为数据库/etc/vsftpd/loginuser.db
    ll /etc/vsftpd/ #查看两个加密文件是否加密好
    chmod 600 /etc/vsftpd/loginusers*
    在这里插入图片描述
    三:vim /etc/pam.d/ckvsftpd #检测用户和密码是否正确,编辑帐号和密码处理的库文件,文件名称任意
    account required pam_userdb.so db=/etc/vsftpd/loginusers #这里的文件需要和先前编辑用户帐号与密码的文件对应
    auth required pam_userdb.so db=/etc/vdftpd/loginusers
    在这里插入图片描述
    四:配置配置文件
    vim /etc/vsftpd/vsftpd.conf
    pam_service_name=ckvsftpd #让配置文件知道检测文件,指定用户信息认证文件名称
    guest_enable=YES #开启虚拟用户登陆权限
    guest_username=ftp #指定虚拟用户ftpuser1登陆时以ftp登陆
    在这里插入图片描述
    五:useradd -s /nologin ftpuser #建立一个不能登陆的用户ftpuser。如果虚拟用户要以指定用户去访问,可执行此步骤,本次实验以ftp用户访问,无需此步骤。
    chmod u-w /home/ftpuser/ #去掉用户写权限
    六:systemctl restart vsftpd
  • 测试步骤如下:虚拟用户以student登陆: guest-username=student 虚拟用户默认登录到/var/ftp 目录下 若修改此参数 ,修改后登录到指定用户的家目录
    chmod u-w /home/XXX (如果不去掉user的w权限 将会报错500 ,写权限过大)
    Desktop:lftp localhost -u user1
    ls #不报错表示登陆成功
    在这里插入图片描述
  • 虚拟帐号家目录独立指定,不同虚拟用户去不同的家目录
    vim /etc/vsftpd/vsftpd.conf
    local_root=/ftpuserhome/$ USER#$ USER表示当前用户 该权限表示虚拟用户登录的身份 指定虚拟用户家目录在/ftpuserhome下
    user_sub_token=$ USER #让配置文件识别shell中的语法,获取值传入$USER
    在这里插入图片描述
    重新创建不同用户的家目录:mkdir /ftpuserhome
    chgrp ftpuser /ftpuserhome
    chmod g+s /ftpuserhome #此目录下的子目录所属组都在ftpuser中
    mkdir /ftpuserhome/ftpuser{1…3} #建立三个虚拟用户家目录
    touch /ftpuserhome/ftpuser1/1 #在3个虚拟用户的家目录中建立文件
    touch /ftpuserhome/ftpuser2/2
    touch /ftpuserhome/ftpuser3/3
    测试:可以看到建立的1
    desktop:
    lftp 172.25.254.101 -u ftpuser1
    ls
    在这里插入图片描述
  • 虚拟帐号配置独立,例如:只允许user1上传或user2限速
    一:vim /etc/vsftpd/vsftpd.conf:
    user_config_dir=/etc/vsftpd/conf.d #可以将虚拟用户的权限全部写入conf.d文件中(该文件任意命名),虚拟用户在登录时,系统首先会访问该文件,再访问vsftpd.conf配置文件
    二:mkdir /etc/vsftpd/conf.d #建立独立配置目录, 不用配置文件用户名是保持一致的
    vim /etc/vsftpd/conf.d/user1 #在虚拟用户user1的配置文件中编辑权限,虚拟用户的名字与编辑权限的配置文件名一致才可以识别
    vim /etc/vsftpd/conf.d/user2 #在虚拟用户user2的配置文件中编辑权限
    测试步骤:
    限速:
    cd /ftpuserhome/ftpuser1
    ls > hello1 文件
    dd if=/dev/zero of=hello1 bs=1M count=100
    上传:
    mkdir /ftpuserhome/ftpuser2/upload
    chgrp ftpuser /ftpuserhome/ftpuser2/upload
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值