1.1 任务概要

1.1.1 业务场景与需求

某公司有一台Web服务器,需要安装FTP服务器对网站目录的资源进行上传、建目录、修改等管理。有两个部分分别通过team1和team2帐号进行管理。具体要求:

  1. team1/team2仅允许登录ftp服务,不能登录本地系统;
  2. 两个帐号的根目录限制在 /web/www/html,不能进入除它之外的目录。

    1.1.2 教学内容与目标

    结合需求,涉及到的知识、能力和素养目标要求为:

  3. 能通过shell正确创建本地非登录属性的用户;

  4. 能正确配置,使得FTP用户限制在特定目录内
  5. 能正确配置权限,增强系统的安全性

    1.1.3 教学组织与评价

    pass

    1.2 知识导学

    1.2.1

1.3 组织实施

1.3.1 子任务1,软件安装

搭建软件仓库

  1. [root@ ]# mkdir -p /media/CentOS
  2. [root@ ]# vim /etc/yum.repos.d/CentOS-Media.repo
  3. baseurl=file:///media/CentOS
  1. [root@w ~]# yum list installed |grep vsftpd
  2. [root@w ~]# yum install vsftpd ftp -y
  3. [root@w ~]#

1.3.2 子任务1 本地用户访问FTP服务器

一、让ftp服务软件来识别本登录shell

vsftpd默认会检查用户的Shell环境。如果用户的shell在/etc/shells没有注册,则无法登录ftp。
team1和team2用户的shell是/sbin/nologin,要注册到文件/etc/shells中。

  1. [root@w ~]# vim /etc/shells
  2. ''' 追加一行
  3. /sbin/nologin
  4. '''

image.png
其中/etc/shells文件的作用:提供给系统的服务判断用户是否合法

二、创建本地非交互登录的用户

本地用户,不能登录本地系统, 在创建用户时,需增加 -s /sbin/nologin选项

  1. [root@w ~]# groupadd team
  2. [root@w ~]# useradd -g team -s /sbin/nologin team1
  3. [root@w ~]# useradd -g team -s /sbin/nologin team2
  4. [root@w ~]# passwd team1
  5. [root@w ~]# echo 12345678 | passwd --stdin team2

三、创建本地目录,并修改权限

  1. [root@w ~]# mkdir -p /web/www/html ## FTP服务的数据目录
  2. [root@w ~]# echo 111 > /web/www/html/test ## 创建一个文件供浏览或下载
  3. [root@w ~]# ll -d /web/www/html ## 查看目录或文件本身的属性, 不是内容
  4. [root@w ~]# chown team1:team /web/www/html -R ## 转让所有者
  5. [root@w ~]# chmod 775 /web/www/html -R ## 增加组成员的写权限,与所有者一致


四、修改vsftp配置文件,启动本地用户登录

主配置文件在 /etc/vsftpd目录下

  1. [root@w ~]# cd
  2. [root@w vsftpd]# cd /etc/vsftpd
  3. [root@w vsftpd]# cp vsftpd.conf vsftpd.conf.bak_0 ## 备份,做好有备无患
  4. [root@w vsftpd]# vim vsftpd.conf
  5. ''' 按配置修改
  6. anonymous_enable=NO # 禁止匿名登录
  7. local_enable=YES # 启用本地用户登录
  8. local_root=/web/www/html # 指定本地用户的根目录
  9. chroot_local_user=NO # 例外列表内的用户是不限制吗?
  10. chroot_list_enable=YES # 启用chroot例外列表
  11. chroot_list_file=/etc/vsftpd/chroot_list # 设置例外列表的用户
  12. allow_writeable_chroot=YES #只要启用chroot,就要加
  13. [root@w vsftpd]# vim /etc/vsftpd/chroot_list
  14. ''' add
  15. team1
  16. team2
  17. '''

当vsftpd配置多主机多用户, chroot_local_userchroot_list_enable的组合效果
(一)当chroot_local_user=YESchroot_list_enable=YES

  1. 所有本地用户都被限制在其主目录下
  2. 使用chroot_list_file=/etc/vsftpd/chroot_list,这些用户作为“例外”,不受限制

(二)当chroot_local_user=NOchroot_list_enable=YES时:
1.所有用户都不被限制其主目录下
2.使用chroot_list_file=/etc/vsftpd/chroot_list,这些用户作为“例外”,受到限制

(三)当chroot_local_user=YESchroot_list_enable=NO时:
1.所有用户都被限制在其主目录下
2.不使用chroot_list_file=/etc/vsftpd/chroot_list,没有任何“例外”用户

(四)当chroot_local_user=NOchroot_list_enable=NO时:
1.所有用户都不被限制其主目录下
2.不使用chroot_list_file=/etc/vsftpd/chroot_list,没有任何“例外”用户

五、启动FTP服务,放火墙放行

  1. [root@w ~]# cd
  2. [root@w ~]# systemctl start vsftpd
  3. [root@w ~]# firewall-cmd --list-all # 查看放行的服务中是否有ftp,如无,则添加
  4. [root@w ~]# firewall-cmd --permanent --add-service=ftp
  5. [root@w ~]# firewall-cmd --reload
  6. [root@w ~]# setenforce 0

六、客户端连接测试

  1. [root@w ~]# ftp 127.0.0.1 ## 要连ftp服务器的IP。127.0.0.1,是本机服务器
  2. 220 (vsFTPd 3.0.2)
  3. Name (127.0.0.1:root): team1 ## 输入用户名
  4. Password: ## 输入密码
  5. ftp> ls ##
  6. 227 Entering Passive Mode (127,0,0,1,36,106).
  7. 150 Here comes the directory listing.
  8. drwxrwxr-x 2 1008 2002 18 Jun 03 09:46 .
  9. drwxrwxr-x 2 1008 2002 18 Jun 03 09:46 ..
  10. -rw-rw-r-- 1 1008 2002 4 Jun 03 09:46 test
  11. 226 Directory send OK.

image.png

「可选拓展」本地非登录用户访问FTP服务

  1. []# groupadd team
  2. []# useradd -m -d /web/www/html -g team -s /sbin/nologin team1