学习Linux课程第十二天
已经无力吐槽了,先回顾一下所学知识
一、Apache服务部署静态网站
1、安装httpd服务
主要是配置yum仓库 vim /etc/yum.repos.d/rhel.repo
[rhel]
name=rhel
baseurl=file:///media/cdrom
enable=1
gpgcheck=0
安装服务 yum install httpd
2、配置服务文件参数
主配置文件路径 : /etc/sshd/conf/sshd.conf
3、配置完后进行重启服务并且加入开机启动项
systemctl restart httpd
systemctl enable httpd
二、SELinux 安全子系统
SELinux服务有三种配置模式,具体如下。
enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
permissive:遇到服务越权访问时,只发出警告而不强制拦截。
disabled:对于越权的行为不警告也不拦截。
命令: 查看模式:getenforce
设置模式:setenforce 0 关闭 setenforce 1 开启
三、SELinux安全上下文
查看数据目录上安全下文值 ls -Zd 目录
1、semanage命令
用于管理SELinux的策略 格式为“semanage [选项] [文件]”
-l参数用于查询;-a参数用于添加;-m参数用于修改;-d参数用于删除。
添加一条安全上下文 semanage -a -t httpd_sys_content_t 目录(目录路径,目录后面不加/)
semanage -a -t httpd_sys_content_t 目录/*
使安全上下文生效 restorecon -Rv 目录/
四、个人主页功能
1、开启个人主页
第1步:在httpd服务程序中,默认没有开启个人用户主页功能。为此,我们需要编辑下面的配置文件,然后在第17行的UserDir disabled参数前面加上井号(#),表示让httpd服务程序开启个人用户主页功能;同时再把第24行的UserDir public_html参数前面的井号(#)去掉(UserDir参数表示网站数据在用户家目录中的保存目录名称,即public_html目录)。最后,在修改完毕后记得保存。
vim /etc/httpd/conf.d/userdir.conf
第2步:在用户家目录中建立用于保存网站数据的目录及首页面文件。另外,还需要把家目录的权限修改为755,保证其他人也有权限读取里面的内容。
[root@doopli home]# su - doopli Last login: Fri May 22 13:17:37 CST 2017 on :0 [doopli@doopli ~]$ mkdir public_html [doopli@doopli ~]$ echo "This is doopli's website" > public_html/index.html [doopli@doopli ~]$ chmod -Rf 755 /home/doopli
第3步:重新启动httpd服务程序
第4步:开启个人用户上的httpd服务,在浏览器的地址栏中输入网址,其格式为“网址/~用户名”
查看该服务是否开启 getsebool -a | grep http
开启服务 setsebool -P httpd_enable_homedirs=on
2、添加用户身份验证
第1步:先使用htpasswd命令生成密码数据库。-c参数表示第一次生成;后面再分别添加密码数据库的存放文件,以及验证要用到的用户名称(该用户不必是系统中已有的本地账户)。
htpasswd -c /etc/httpd/passwd doopli
第2步:编辑个人用户主页功能的配置文件。把第31~35行的参数信息修改成下列内容,其中井号(#)开头的内容为刘遄老师添加的注释信息,可将其忽略。随后保存并退出配置文件,重启httpd服务程序即可生效。然后登陆
[root@doopli ~]# vim /etc/httpd/conf.d/userdir.conf 27 # 28 # Control access to UserDir directories. The following is an example 29 # for a site where these directories are restricted to read-only. 30 # 31 <Directory "/home/*/public_html"> 32 AllowOverride all #刚刚生成出来的密码验证文件保存路径 33 authuserfile "/etc/httpd/passwd" #当用户尝试访问个人用户网站时的提示信息 34 authname "My privately website" 35 authtype basic #用户进行账户密码登录时需要验证的用户名称 36 require user doopli 37 </Directory> [root@doopli ~]# systemctl restart httpd
五、虚拟主机功能
1、基于IP地址
第1步:给网卡配置三个IP地址,检查是否正常ping通;分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。
(1)vim /etc/sysconfig/network-scripts/ifcfg-eno16777728
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777728"
UUID="c9bb8fc7-9b62-4227-97b4-34489bde20b2"
ONBOOT="yes"
IPADDR0=192.168.10.10
IPADDR1=192.168.10.20
IPADDR2=192.168.10.30
PREFIX0=24
GATEWAY0=192.168.10.1
HWADDR=00:0C:29:5B:BC:2A
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
(2)创建数据目录
[root@doopli ~]# mkdir -p /home/wwwroot/10 [root@doopli ~]# mkdir -p /home/wwwroot/20 [root@doopli ~]# mkdir -p /home/wwwroot/30 [root@doopli ~]# echo "IP:192.168.10.10" > /home/wwwroot/10/index.html [root@doopli ~]# echo "IP:192.168.10.20" > /home/wwwroot/20/index.html [root@doopli ~]# echo "IP:192.168.10.30" > /home/wwwroot/30/index.html
第2步:在httpd服务的配置文件中大约113行处开始,分别追加写入三个基于IP地址的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。
[root@doopli ~]# vim /etc/httpd/conf/httpd.conf ………………省略部分输出信息……………… 113 <VirtualHost 192.168.10.10> 114 DocumentRoot /home/wwwroot/10 115 ServerName www.doopli.com 116 <Directory /home/wwwroot/10 > 117 AllowOverride None 118 Require all granted 119 </Directory> 120 </VirtualHost> 121 <VirtualHost 192.168.10.20> 122 DocumentRoot /home/wwwroot/20 123 ServerName bbs.doopli.com 124 <Directory /home/wwwroot/20 > 125 AllowOverride None 126 Require all granted 127 </Directory> 128 </VirtualHost> 129 <VirtualHost 192.168.10.30> 130 DocumentRoot /home/wwwroot/30 131 ServerName tech.doopli.com 132 <Directory /home/wwwroot/30 > 133 AllowOverride None 134 Require all granted 135 </Directory> 136 </VirtualHost>
第3步:此时访问网站,则会看到httpd服务程序的默认首页面。大家现在应该立刻就反应过来—这是SELinux在捣鬼。由于当前的/home/wwwroot目录及里面的网站数据目录的SELinux安全上下文与网站服务不吻合,因此httpd服务程序无法获取到这些网站数据目录。我们需要手动把新的网站数据目录的SELinux安全上下文设置正确(见前文的实验),并使用restorecon命令让新设置的SELinux安全上下文立即生效,这样就可以立即看到网站的访问效果了,
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/* [root@doopli ~]# restorecon -Rv /home/wwwroot restorecon reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/10 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/10/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/20 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/20/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/30 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/30/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t
2、基于主机域名
第1步:手工定义IP地址与域名之间对应关系的配置文件,保存并退出后会立即生效。可以通过分别ping这些域名来验证域名是否已经成功解析为IP地址。
[root@doopli ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.10.10 www.doopli.com bbs.doopli.com tech.doopli.com
第2步:分别在/home/wwwroot中创建用于保存不同网站数据的三个目录,并向其中分别写入网站的首页文件。
[root@doopli ~]# mkdir -p /home/wwwroot/www [root@doopli ~]# mkdir -p /home/wwwroot/bbs [root@doopli ~]# mkdir -p /home/wwwroot/tech [root@doopli ~]# echo "WWW.doopli.com" > /home/wwwroot/www/index.html [root@doopli ~]# echo "BBS.doopli.com" > /home/wwwroot/bbs/index.html [root@doopli ~]# echo "TECH.doopli.com" > /home/wwwroot/tech/index.html
第3步:在httpd服务的配置文件中大约113行处开始,分别追加写入三个基于主机名的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。
[root@doopli ~]# vim /etc/httpd/conf/httpd.conf ………………省略部分输出信息……………… 113 <VirtualHost 192.168.10.10> 114 DocumentRoot "/home/wwwroot/www" 115 ServerName "www.doopli.com" 116 <Directory "/home/wwwroot/www"> 117 AllowOverride None 118 Require all granted 119 </directory> 120 </VirtualHost> 121 <VirtualHost 192.168.10.10> 122 DocumentRoot "/home/wwwroot/bbs" 123 ServerName "bbs.doopli.com" 124 <Directory "/home/wwwroot/bbs"> 125 AllowOverride None 126 Require all granted 127 </Directory> 128 </VirtualHost> 129 <VirtualHost 192.168.10.10> 130 DocumentRoot "/home/wwwroot/tech" 131 ServerName "tech.doopli.com" 132 <Directory "/home/wwwroot/tech"> 133 AllowOverride None 134 Require all granted 135 </directory> 136 </VirtualHost>
第4步:因为当前的网站数据目录还是在/home/wwwroot目录中,因此还是必须要正确设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合。最后记得用restorecon命令让新配置的SELinux安全上下文立即生效,这样就可以立即访问到虚拟主机网站了,
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech/* [root@doopli ~]# restorecon -Rv /home/wwwroot reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/www context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/www/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/bbs context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/bbs/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/tech context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/tech/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
3、基于端口号
第1步:分别在/home/wwwroot中创建用于保存不同网站数据的两个目录,并向其中分别写入网站的首页文件。每个首页文件中应有明确区分不同网站内容的信息,方便我们稍后能更直观地检查效果。
[root@doopli ~]# mkdir -p /home/wwwroot/6111 [root@doopli ~]# mkdir -p /home/wwwroot/6222 [root@doopli ~]# echo "port:6111" > /home/wwwroot/6111/index.html [root@doopli ~]# echo "port:6222" > /home/wwwroot/6222/index.html
第2步:在httpd服务配置文件的第43行和第44行分别添加用于监听6111和6222端口的参数。
[root@doopli ~]# vim /etc/httpd/conf/httpd.conf ………………省略部分输出信息……………… 33 #34 # Listen: Allows you to bind Apache to specific IP addresses and/or35 # ports, instead of the default. See also the <VirtualHost>36 # directive.37 #38 # Change this to Listen on specific IP addresses as shown below to 39 # prevent Apache from glomming onto all bound IP addresses.40 #41 #Listen 12.34.56.78:8042 Listen 80 43 Listen 6111 44 Listen 6222
第3步:在httpd服务的配置文件中大约113行处开始,分别追加写入两个基于端口号的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。
[root@doopli ~]# vim /etc/httpd/conf/httpd.conf ………………省略部分输出信息……………… 113 <VirtualHost 192.168.10.10:6111> 114 DocumentRoot "/home/wwwroot/6111" 115 ServerName www.doopli.com 116 <Directory "/home/wwwroot/6111"> 117 AllowOverride None 118 Require all granted 119 </Directory> 120 </VirtualHost> 121 <VirtualHost 192.168.10.10:6222> 122 DocumentRoot "/home/wwwroot/6222" 123 ServerName bbs.doopli.com 124 <Directory "/home/wwwroot/6222"> 125 AllowOverride None 126 Require all granted 127 </Directory> 128 </VirtualHost>
第4步:因为我们把网站数据目录存放在/home/wwwroot目录中,因此还是必须要正确设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合。最后记得用restorecon命令让新配置的SELinux安全上下文立即生效。
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222/* [root@doopli ~]# restorecon -Rv /home/wwwroot/ restorecon reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/6111 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/6111/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/6222 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/6222/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 [root@doopli ~]# systemctl restart httpd Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
第5步:SELinux允许的与HTTP协议相关的端口号中默认没有包含6111和6222,因此需要将这两个端口号手动添加进去。该操作会立即生效,而且在系统重启过后依然有效。设置好后再重启httpd服务程序,然后就可以看到网页内容了,
[root@doopli ~]# semanage port -a -t http_port_t -p tcp 6111 [root@doopli ~]# semanage port -a -t http_port_t -p tcp 6222 [root@doopli ~]# semanage port -l| grep http http_cache_port_t tcp 8080, 8118, 8123, 10001-10010 http_cache_port_t udp 3130 http_port_t tcp 6222, 6111, 80, 81, 443, 488, 8008, 8009, 8443, 9000 pegasus_http_port_t tcp 5988 pegasus_https_port_t tcp 5989 [root@doopli ~]# systemctl restart httpd
转载于:https://www.cnblogs.com/doopli/p/10055859.html
学习Linux课程第十二天相关推荐
- Linux课程第十二天学习笔记
######################### ####### 2.用户权限列表 ####### ######################### ################### ...
- 【LINUX计算机大白平凡学习linux之路】
@计算机大白平凡学习 之路 千里之行,始于足上.只有基础扎实+思路清析,写脚本才没有问题.多看一些牛人大咖写的脚本.看人家的思路与结构,会收益良多, 一起努力学习吧! Linux是Torvalds先生 ...
- Linux 学习笔记(借鉴黑马程序员Linux课程)
Linux视频课程 简介 Linux诞生于1991年,由林纳斯·托瓦兹在21岁时完成.此后成为最为流行的服务器操作系统之一. Linux内核和系统发行版 由Linux系统内核和系统级应用程序两部分组成 ...
- 瑞吉外卖:linux课程学习(软件安装、项目部署)
Linux-Day02 课程内容 软件安装 项目部署 1. 软件安装 1.1 软件安装方式 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式 特点 二进制发布包安装 ...
- 2019最新Linux云计算学习教程(学习路线+课程大纲+面试题+视频教程+网盘下载)
没有相关的视频教程及相关的学习线路,学起来是一件很费劲的事情,还有很多人从网上及其它渠道购买视频,这些视频资料大多是盗版,上当受骗的人不在少数.为此千锋小编呕心沥血整理了这套零基础全套Linux云计算 ...
- 瑞吉外卖:linux课程学习
Linux-Day01 课程内容 Linux简介 Linux安装 Linux常用命令 1. 前言 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统.说到操作系统,大家比较熟知的应 ...
- 凡人学习Linux之路
近期Windows 11的信息频频出现在各个公众平台上,对它的评价好坏参半,我的关注点是它取消了任务栏移动功能,只能靠着屏幕底边,不能移动到顶部或左右两侧,而且有人喊话说准备撤了,换Linux.其实现 ...
- 当代大学生对学习Linux的一点拙见
我在大一那一年里除了怕挂科外,做什么兼职,什么比较赚钱这俩个问题,成为最困扰的事情,我是个很矫情很俗的人,高中的时候需求小,大家都一样,所以也并没有觉得父母给的生活费少,可等我进入大学后,大家都是来自 ...
- 嵌入式linux设计报告,嵌入式linux课程设计报告
嵌入式linux课程设计报告 重庆科技学院 课程设计成果 院(系):_电气与信息工程学院_ 班 级: 计科普0802 学生姓名: 庄桐泉 学 号: 2008441067 设计地点(单位)___ _I3 ...
最新文章
- 搭建nexus后,进入首页的时候出现warning: Could not connect to Nexus.错误
- moosefs mysql_moosefs搭建与应用
- Python 生成器 和 yield 关键字
- SAP License:请教一个SD和FM基金预算集成的问题
- 用Log Explorer恢复数据的基本操作
- Python实现温度转换
- 通过共享文件夹来进行前后端独立开发
- 将几个常用网站页面保存为PDF并删除网页无用部分
- 一起来全面解析5G网络领域最关键的十大技术
- FSG压缩壳和ImportREC的使用 - 脱壳篇05
- 桌面扫码点餐系统(小程序+Java后台)
- Stata: 协整还是伪回归?
- CCRC信息安全服务资质。
- Mockplus Cloud Crack,项目管理顺畅
- bable转换html里面的js,如何使用babel,把写好的es6代码,转化为es5,让ie8兼容。...
- 以安全为重,利尔达推出燃气表报警器联动解决方案
- 朱有鹏-3.linux应用编程和网络编程-第3部分-3.3.获取系统信息
- 【Linux】主函数的三个形参
- Office2007 PPT 宏修改文字颜色
- 浅谈电缆行业MES系统解决方案