web服务高级使用 Samba共享

試著忘記壹切 提交于 2019-12-18 02:28:48
首先将防火墙改为trusted模式

前提案例:
为虚拟机 server 配置以下虚拟Web主机

  • 实现三个网站的部署
  • 实现客户端访问server0.example.com网页内容为 卖女孩的小火柴
  • 实现客户端访问www0.example.com网页内容为 奔跑吧骆驼
  • 实现客户端访问webapp0.example.com网页内容为 20里春风不如你
服务端:
[root@server0 ~]# yum  -y  install  httpd
root@server0 ~]# vim /etc/httpd/conf.d/zz.conf
<virtualhost  *:80>
servername   server0.example.com
documentroot   /var/www/abc01
</virtualhost>
<virtualhost  *:80>
servername   www0.example.com
documentroot   /var/www/abc02
</virtualhost>
<virtualhost  *:80>
servername   webapp0.example.com
documentroot   /var/www/abc03
</virtualhost>
[root@server0 ~]# cd  /var/www
[root@server0 www]# mkdir  abc01  abc02   abc03
[root@server0 www]# echo  ' < h1 >卖女孩的小火柴 '  > abc01/index.html
[root@server0 www]# echo  '< h1>奔跑吧骆驼'  > abc02/index.html
[root@server0 www]# echo  '< h1>20里春风不如你'  > abc03/index.html
[root@server0 www]# systemctl  restart  httpd
客户端:
[root@desktop0 ~]# firefox  server0.example.com
[root@desktop0 ~]# firefox  www0.example.com
[root@desktop0 ~]# firefox  webapp0.example.com
配置目录文件

文件夹权限:
针对documentroot网页目录权限
httpd运行身份(用户/组):apache

客户机地址权限:
使用< directory >配置区段
每个文件夹自动继承其父目录的ACL访问权限
除非针对子目录有明确设置

<Directory "目标的绝对路径">
    ......
      Require all granted | denied   #允许或拒绝所有人访问
    Require   IP  IP地址或网段        #仅允许某IP或网段访问
</Directory>

案例:
在web网站http://server0.example.com的documentroot目录下创建private子目录
要求:
1)从http://classroom/pub/materials/private.html下载一个文件副本到这个目录,重命名为index.html
2)不要对文件index.html的内容有任何修改
3)从server0上任何人都可以浏览private的内容,但从其他系统上不可以访问这个目录的内容

[root@server0 ~]# cat  /etc/httpd/conf.d/zz.conf    #先查看当前web的存放路径
  virtualhost  *:80>
servername   server0.example.com
documentroot   /var/www/abc01
[root@server0 ~]# mkdir  /var/www/abc01/private     #在当前web路径下创建private子目录
[root@server0 ~]# echo '<h1>wo   shi  private'  >   /var/www/abc01/index.html
[root@server0 ~]# cat  /var/www/abc01/index.html

[root@server0 ~]# vim  /etc/httpd/conf.d/xxx.conf      #修改调用配置文件,只能让本机访问
<Directory "/var/www/abc01/private">
    Require ip  172.25.0.11
</Directory>
[root@server0 ~]# systemctl  restart  httpd           #重起服务
[root@server0 ~]# firefox  server0.example.com/private    #本机访问(其他系统是无法访问的!!!)

案例2:使用自定Web根目录
调整 Web 站点 http://server0.example.com 的网页目录,要求如下:
1)新建目录 /webroot,作为此站点新的网页目录
2)从http://classroom/pub/materials/private.html下载一个文件副本到这个目录,重命名为index.html
3)不要对文件index.html的内容有任何修改
4)确保站点hhtp://server0.example.com仍然可以访问

[root@server0 ~]# mkdir  /webroot      #创建目录
[root@server0 ~]# echo  '<h1>wo shi webroot' >  /webroot/index.html
[root@server0 ~]# cat  /webroot/index.html         
<h1>wo shi webroot
[root@server0 ~]# vim  /etc/httpd/conf.d/xx.conf       #针对/webroot网页进行访问控制
<Directory "/webroot">
    Require all granted                               #允许所有人访问
</Directory>
[root@server0 ~]# vim  /etc/httpd/conf.d/zz.conf      #修改调用配置文件
<virtualhost  *:80>
servername  server0.example.com
documentroot  /webroot
</virtualhost>
[root@server0 ~]# systemctl  restart  httpd           #重起服务(此时服务无法启动,显示没有权限)
[root@server0 ~]# ls  -Zd  /webroot                    #查看该目录的上下文信息
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /webroot
[root@server0 ~]# ls  -Zd  /var/www                     #查看目录的上下文信息
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www
[root@server0 ~]# chcon  -R  --reference=/var/www  /webroot    #重新设置目录属性
[root@server0 ~]# ls  -Zd  /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www
[root@server0 ~]# ls  -Zd  /webroot
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /webroot
[root@server0 ~]# systemctl restart  httpd            #重起服务

SELinux策略:布尔值 安全上下文值 非默认端口的开放

安全上下文值:非默认端口开放,类似于标签,起标识作用
chcon -R --reference=模板目录 新目录

部署动态网站

静态网站的运行

• 服务端的原始网页 = 浏览器访问到的网页
– 由Web服务软件处理所有请求
– 文本(txt/html)、图片(jpg/png)等静态资源

动态网站的运行

• 服务端的原始网页 ≠ 浏览器访问到的网页
– 由Web服务软件接受请求,动态程序转后端模块处理
– PHP网页、Python网页、JSP网页…

一、下载Python页面文件
为站点 webapp0.example.com 配置提供动态Web内容

[root@server0 ~]# cat   /etc/httpd/conf.d/zz.conf    #查看当前网页文件默认路径
[root@server0 ~]# cd  /var/www/qwe                   #切换到默认网页路径
[root@server0 qwe]# wget  http://classroom.example.com/pub/materials/webinfo.wsgi   #下载Python页面文件
[root@server0 qwe]# cat  webinfo.wsgi 
#!/usr/bin/env python
import time
def application (environ, start_response):
  response_body = 'UNIX EPOCH time is now: %s\n' % time.time()
  status = '200 OK'
  response_headers = [('Content-Type', 'text/plain'),
                      ('Content-Length', '1'),
                      ('Content-Length', str(len(response_body)))]
  start_response(status, response_headers)
  return [response_body]
[root@server0 qwe]# vim  /etc/httpd/conf.d/zz.conf        #修改调用配置文件
<VirtualHost  *:80>
  ServerName  webapp0.example.com
  DocumentRoot  /var/www/abc03
  Alias  /  /var/www/abc03/webinfo.wsgi
                         #当客户端直接访问 网页文件根目录时,呈现/var/www/abc03/webinfo.wsgi
</VirtualHost>

[root@server0 qwe]# systemctl restart  httpd
[root@server0 ~]# yum  -y  install  mod_wsgi       #安装mod_wsgi软件,可以翻译执行Python页面的代码
[root@server0 ~]# vim  /etc/httpd/conf.d/zz.conf     #修改调用配置文件
Listen  8909                                   #设置httpd程序监听8909端口
<VirtualHost  *:8909>                           #设置本虚拟Web主机将在8909端口呈现
  ServerName  webapp0.example.com               
  DocumentRoot  /var/www/abc03
  WsgiScriptAlias / /var/www/abc03/webinfo.wsgi

</VirtualHost>

[root@server0 ~]# semanage   port  -a  -t  http_port_t  -p  tcp  8909    #修改非默认端口的开放策略     -a  添加    -t  类型   -p   协议
[root@server0 ~]# systemctl restart httpd      #重起服务

页面跳转:Alias 网络路径 实际呈现的网页文件路径
网络路径 /:网页文件的根目录,匹配客户端浏览器中直接输入域名

安全Web服务

http:超文本传输协议
https:安全的超文本传输协议

PKI公钥基础设施
• Public Key Infrastructure,公钥基础设施
– 公钥:主要用来加密数据
– 私钥:主要用来解密数据(与相应的公钥匹配)
– 数字证书:证明拥有者的合法性/权威性(单位名称、有效期、公钥、颁发机构及签名、…)
– Certificate Authority,数字证书授权中心:负责证书
的申请/审核/颁发/鉴定/撤销等管理工作
虚拟机server:构建安全的Web,以www0.example.com为例
1.下载网站证书(营业执照)

[root@server0 ~]# cd  /etc/pki/tls/certs/
[root@server0 certs]# wget   http://classroom/pub/tls/certs/server0.crt 

2.下载根证书(工商局信息)

[root@server0 certs]# wget    http://classroom/pub/example-ca.crt

3.下载私钥(解密数据)

[root@server0 certs]# cd ..
[root@server0 tls]# cd  private/
[root@server0 private]# wget   http://classroom/pub/tls/private/server0.key 

4.下载软件,支持安全的加密通信

[root@server0 ~]# yum  remove   mod_ssl

5.修改配置文件

[root@server0 ~]# vim  /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/pki/tls/certs/server0.crt
SSLCertificateKeyFile /etc/pki/tls/private/server0.key
SSLCACertificateFile /etc/pki/tls/certs/example-ca.crt

6.重起服务

[root@server0 ~]# systemctl  restart  httpd

7.客户端访问

[root@desktop0 ~]# firefox  www0.example.com

Samba共享(共享文件)

Samba共享服务,专门用于Windows和Linux跨平台的共享
NFS共享,专门用于Linux和Linux之间的共享

服务端:
1.安装Samba软件

[root@server0 ~]# yum  -y  install  samba
建立Samba共享用户(账号):专用于访问Samba共享的时候,验证的用户,基于本地用户,需要设置Samba共享独立的密码

2.创建用户,将其加入Samba共享用户,为其设置密码

[root@server0 ~]# useradd  zzz
[root@server0 ~]# pdbedit  -a  zzz
new password:
retype new password:
[root@server0 ~]# pdbedit  -L    #查看该用户是否存在
zzz:1001:

3.创建Samba共享的目录

[root@server0 ~]# mkdir  /asd
[root@server0 ~]# echo  1233465 > /asd/a.txt

4.修改配置文件

[root@server0 ~]# vim  /etc/samba/smb.conf
[haha]         #在文件末尾书写
path =  /asd
[root@server0 ~]# systemctl  restart  smb

5.修改SELinux策略:布尔值(功能的开关)

[root@server0 ~]# getsebool  -a  | grep samba    #查看当前布尔值 
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
[root@server0 ~]# setsebool samba_export_all_ro  on   #修改布尔值
[root@server0 ~]# getsebool  -a  | grep samba   #再次查看布尔值
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> on

6.重起服务

[root@server0 ~]# systemctl  restart  smb

客户端:
1.安装软件

[root@desktop0 ~]# yum  -y  install  cifs-utils

2.挂载访问
NFS格式: mount IP地址:/共享的路径 挂载点目录
Samba格式:mount -o user=xxxxx,pass=xxxxx //IP地址/共享名 挂载点目录

[root@desktop0 ~]# mount  -o  user=zzz,pass=123   //172.25.0.11/haha  /mnt

3.设置开机自启

[root@desktop0 ~]# vim /etc/fstab
//172.25.0.11/haha    /mnt  cifs  defaults,user=zzz,pass=123,_netdev  0  0
[root@desktop0 ~]# umount  /mnt
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df  -h
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!