1.1 任务概要
1.1.1 业务场景与需求
某公司有一台Web服务器,需要安装FTP服务器对网站目录的资源进行上传、建目录、修改等管理。有两个部分分别通过team1和team2帐号进行管理。具体要求:
- team1/team2仅允许登录ftp服务,不能登录本地系统;
两个帐号的根目录限制在 /web/www/html,不能进入除它之外的目录。
1.1.2 教学内容与目标
结合需求,涉及到的知识、能力和素养目标要求为:
能通过shell正确创建本地非登录属性的用户;
- 能正确配置,使得FTP用户限制在特定目录内
- 能正确配置权限,增强系统的安全性
1.1.3 教学组织与评价
pass1.2 知识导学
1.2.1
1.3 组织实施
1.3.1 子任务1,软件安装
搭建软件仓库
[root@ ]# mkdir -p /media/CentOS
[root@ ]# vim /etc/yum.repos.d/CentOS-Media.repo
baseurl=file:///media/CentOS
[root@w ~]# yum list installed |grep vsftpd
[root@w ~]# yum install vsftpd ftp -y
[root@w ~]#
1.3.2 子任务1 本地用户访问FTP服务器
一、让ftp服务软件来识别本登录shell
vsftpd默认会检查用户的Shell环境。如果用户的shell在/etc/shells没有注册,则无法登录ftp。
team1和team2用户的shell是/sbin/nologin,要注册到文件/etc/shells中。
[root@w ~]# vim /etc/shells
''' 追加一行
/sbin/nologin
'''
其中/etc/shells文件的作用:提供给系统的服务判断用户是否合法
二、创建本地非交互登录的用户
本地用户,不能登录本地系统, 在创建用户时,需增加 -s /sbin/nologin
选项
[root@w ~]# groupadd team
[root@w ~]# useradd -g team -s /sbin/nologin team1
[root@w ~]# useradd -g team -s /sbin/nologin team2
[root@w ~]# passwd team1
[root@w ~]# echo 12345678 | passwd --stdin team2
三、创建本地目录,并修改权限
[root@w ~]# mkdir -p /web/www/html ## FTP服务的数据目录
[root@w ~]# echo 111 > /web/www/html/test ## 创建一个文件供浏览或下载
[root@w ~]# ll -d /web/www/html ## 查看目录或文件本身的属性, 不是内容
[root@w ~]# chown team1:team /web/www/html -R ## 转让所有者
[root@w ~]# chmod 775 /web/www/html -R ## 增加组成员的写权限,与所有者一致
四、修改vsftp配置文件,启动本地用户登录
主配置文件在 /etc/vsftpd
目录下
[root@w ~]# cd
[root@w vsftpd]# cd /etc/vsftpd
[root@w vsftpd]# cp vsftpd.conf vsftpd.conf.bak_0 ## 备份,做好有备无患
[root@w vsftpd]# vim vsftpd.conf
''' 按配置修改
anonymous_enable=NO # 禁止匿名登录
local_enable=YES # 启用本地用户登录
local_root=/web/www/html # 指定本地用户的根目录
chroot_local_user=NO # 例外列表内的用户是不限制吗?
chroot_list_enable=YES # 启用chroot例外列表
chroot_list_file=/etc/vsftpd/chroot_list # 设置例外列表的用户
allow_writeable_chroot=YES #只要启用chroot,就要加
[root@w vsftpd]# vim /etc/vsftpd/chroot_list
''' add
team1
team2
'''
当vsftpd配置多主机多用户, chroot_local_user
和chroot_list_enable
的组合效果
(一)当chroot_local_user=YES
和chroot_list_enable=YES
时
- 所有本地用户都被限制在其主目录下
- 使用
chroot_list_file=/etc/vsftpd/chroot_list
,这些用户作为“例外”,不受限制
(二)当chroot_local_user=NO
和chroot_list_enable=YES
时:
1.所有用户都不被限制其主目录下
2.使用chroot_list_file=/etc/vsftpd/chroot_list
,这些用户作为“例外”,受到限制
(三)当chroot_local_user=YES
和chroot_list_enable=NO
时:
1.所有用户都被限制在其主目录下
2.不使用chroot_list_file=/etc/vsftpd/chroot_list
,没有任何“例外”用户
(四)当chroot_local_user=NO
和chroot_list_enable=NO
时:
1.所有用户都不被限制其主目录下
2.不使用chroot_list_file=/etc/vsftpd/chroot_list
,没有任何“例外”用户
五、启动FTP服务,放火墙放行
[root@w ~]# cd
[root@w ~]# systemctl start vsftpd
[root@w ~]# firewall-cmd --list-all # 查看放行的服务中是否有ftp,如无,则添加
[root@w ~]# firewall-cmd --permanent --add-service=ftp
[root@w ~]# firewall-cmd --reload
[root@w ~]# setenforce 0
六、客户端连接测试
[root@w ~]# ftp 127.0.0.1 ## 要连ftp服务器的IP。127.0.0.1,是本机服务器
220 (vsFTPd 3.0.2)
Name (127.0.0.1:root): team1 ## 输入用户名
Password: ## 输入密码
ftp> ls ##
227 Entering Passive Mode (127,0,0,1,36,106).
150 Here comes the directory listing.
drwxrwxr-x 2 1008 2002 18 Jun 03 09:46 .
drwxrwxr-x 2 1008 2002 18 Jun 03 09:46 ..
-rw-rw-r-- 1 1008 2002 4 Jun 03 09:46 test
226 Directory send OK.
「可选拓展」本地非登录用户访问FTP服务
[]# groupadd team
[]# useradd -m -d /web/www/html -g team -s /sbin/nologin team1