Linux基础知识(FTP服务)

一、 FTP的部署

  1. 安装vsftpd
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)

  2. 安装 lftp
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)

  3. 开启vsftpd服务,并设置开机自启动
    Linux基础知识(FTP服务)

  4. 查看火墙状态,当火墙关闭时开启火墙,并添加lftp服务到火墙白名单
    Linux基础知识(FTP服务)

  5. 重新加载
    Linux基础知识(FTP服务)

  6. 查看,ftp服务已经添加到火墙白名单中
    Linux基础知识(FTP服务)

  7. 使用ftp访问主机(当ls有内容显示,则代表登录成功,否则表示不成功)
    Linux基础知识(FTP服务)

  8. 关闭selinux
    编辑getenforce 当显示Enforcing,则代表没有关闭,需要关闭
    Linux基础知识(FTP服务)
    编辑selinux配置文件
    Linux基础知识(FTP服务)
    将selinux的状态改为disabled
    Linux基础知识(FTP服务)
    重新启动虚拟机
    reboot
    编辑getenforce查看
    Linux基础知识(FTP服务)

二、FTP服务的信息

  1. 软件安装包:vsftpd
    协议接口:21/tcp
    服务配置文件:/etc/vsftpd/vsftpd.conf
    默认发布目录:/var/ftp
  2. 报错id的解析:
    550 服务本身功能未开启
    553 本地文件系统权限过小
    530 用户认证失败
    500 文件系统权限过大

三、FTP命令运用

编辑/etc/vsftpd/vsftpd.conf 进行设置
在服务端新建一个用户,并设置密码
Linux基础知识(FTP服务)

  1. 匿名用户
    anonymous_enable=YES|NO 匿名用户是否可以登陆
    编辑 vim /etc/vsftpd/vsftpd.cof
    编辑结束后重新启动服务
    Linux基础知识(FTP服务)
    将YES 改成NO
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  2. 本地用户
    local_enable=YES|NO   本地用户是否可以登陆
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  3. write_enable=YES|NO   ftp是否对登陆用户可写
    Linux基础知识(FTP服务)
    write_enable=YES 可写
    Linux基础知识(FTP服务)
    若改为write_enable=NO,则不可写。
    测试:
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)

  4. 匿名用户上传
    默认情况下,匿名用户是不能上传的
    Linux基础知识(FTP服务)
    编辑配置文件
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    修改匿名用户目录的所有组并给组添加可写的权限
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  5. 匿名用户家目录修改
    anon_root=/目录
    新建一个目录/off
    Linux基础知识(FTP服务)
    添加anon_root=/off
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  6. 匿名用户上传文件默认权限的修改
    anon_umask=xxx
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  7. 匿名用户建立目录
    anon_mkdir_write_enable=YES|NO
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  8. 匿名用户下载
    anon_world_readable_only=YES|NO NO表示匿名用户可以下载YES表示不可以下载
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  9. 匿名用户删除
    anon_other_write_enable=YES|NO
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)

  10. 匿名用户使用的用户身份和权限的修改
    编辑配置文件
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  11. 最大上传速率
    anon_max_rate=102400
    截取文件
    Linux基础知识(FTP服务)
    编辑配置文件
    Linux基础知识(FTP服务)
    添加(最大上传速率为102400)
    Linux基础知识(FTP服务)
    测试:上传速率很慢
    Linux基础知识(FTP服务)

  12. 最大链接数
    max_clients=2 表示最多有2个可以连接
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  13. 本地用户家目录修改
    local root=/directory
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  14. 本地用户上传文件权限
    local umask=xxx
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

  15. 限制本地用户登陆
    vim  /etc/vsftpd/ftpusers   用户永久黑名单
    Linux基础知识(FTP服务)
    测试:无法登录
    Linux基础知识(FTP服务)

  16. 特殊情况下用户白名单设定
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)
    编辑该文件
    Linux基础知识(FTP服务)
    在这个文件内并且不在 /etc/vsftpd/ftpusers 文件内的用户为可登陆用户
    Linux基础知识(FTP服务)
    测试:
    Linux基础知识(FTP服务)

四、FTP虚拟用户的管理

一、ftp建立虚拟用户
建立虚拟用户的原因: 因为系统用户登陆ftp服务,同时也可以登陆系统,这样很不安全,所以我们要建立ftp虚拟用户,使这些用户只能登陆ftp

  1. 建立方式:
    vim /etc/vsftpd/loginusers
    Linux基础知识(FTP服务)
    写入
    westos1 用户
    123 密码
    westos2 用户
    123 密码
    westos3 用户
    123 密码
    退出
    Linux基础知识(FTP服务)
    注意:编辑的时候不要有空格
  2. 对文件进行hash加密
    执行 db_load -T -t hash -f loginusers loginusers.db
    Linux基础知识(FTP服务)
  3. 编辑文件(验证密码与用户是否一致的文件) 文件名称任意
    vim /etc/pam.d/ftpauth
    Linux基础知识(FTP服务)
    写入
    account required pam_userdb.so db=/etc/vsftpd/loginusers
    auth required pam_userdb.so db=/etc/vsftpd/loginusers
    退出
    Linux基础知识(FTP服务)
  4. 编辑配置文件 vim /etc/vsftpd/vsftpd.conf退出后重新启动服务
    Linux基础知识(FTP服务)
    修改 pam_service_name=ftpauth
    添加 guest_enable=YES
    Linux基础知识(FTP服务)
  5. 在另一台主机进行测试:可以看到虚拟用户创建成功,可以登录
    Linux基础知识(FTP服务)
  6. 创建虚拟用户后,本地用户就不能正常登陆了,但是仍然可以指定本地用户身份登陆
    再次编辑配置文件vim /etc/vsftpd/vsftpd.conf
    Linux基础知识(FTP服务)
    添加guest_username=tom退出tom用户必须存在
    Linux基础知识(FTP服务)
    查看tom用户家目录下的东西,如果虚拟用户登录时可以看到以下文件,则证明虚拟用户登录身份修改成功
    Linux基础知识(FTP服务)
    cd /home/
    执行 chmod 555 tom/减小权限
    Linux基础知识(FTP服务)
  7. 在另一台主机测试:
    Linux基础知识(FTP服务)

二、虚拟用户独立家目录设置

  1. 首先在这三个家目录中分别建立文件
    mkdir -p /ftphome/westos{1…3}
    mkdir -p /ftphome/westos1/westos1date
    mkdir -p /ftphome/westos2/westos2date
    mkdir -p /ftphome/westos3/westos3date
    Linux基础知识(FTP服务)

  2. 编辑配置文件vim /etc/vsftpd/vsftpd.conf退出后重新启动服务
    Linux基础知识(FTP服务)
    添加:
    Linux基础知识(FTP服务)
    注意:
    $ USER 相当于c语言中的变量,给不同的值,输出不同的值
    user_sub_token=$ USER (将shell中$USER的用法移到ftp服务中来用)
    重新启动服务systemctl restart vsftpd
    给该文件满权限chmod 777 /ftphome/westos*/*
    Linux基础知识(FTP服务)

  3. 在令外一台主机测试:
    Linux基础知识(FTP服务)

三、虚拟用户权限单独设置
原理:虚拟用户使用的是匿名用户的参数控制,如果我们想让不同的虚拟用户有不同的权利,就必须给每个虚拟用户设置自己的次配置文件。

  1. 首先建立虚拟用户的次目录和次配置文件
    mkdir /etc/vsftpd/user_conf
    touch /etc/vsftpd/user_conf/westos1
    Linux基础知识(FTP服务)
  2. 编辑次配置文件 vim /etc/vsftpd/user_conf/westos1
    Linux基础知识(FTP服务)
    写入允许虚拟用户执行的动作anon_upload_enable=YES退出保存(注意:虚拟用户的上传参数为NO,或默认)
    Linux基础知识(FTP服务)
  3. 编辑配置文件vim /etc/vsftpd/vsftpd.conf
    Linux基础知识(FTP服务)
    写入user_config_dir=/etc/vsftpd/user_conf
    Linux基础知识(FTP服务)
    重新启动服务systemctl restart vsftpd
    Linux基础知识(FTP服务)
  4. 在另一台主机测试:
    虚拟用户westos1可以实现上传功能,而westos2和westos3不行
    Linux基础知识(FTP服务)
    Linux基础知识(FTP服务)