RHCE7-NOTE(红帽工程师--题库详细笔记)

重置练习环境:
rht-vmctl  reset  classroom
rht-vmctl  reset  server
rht-vmctl  reset  desktop


RHCE 核心考点列表
####################################################

一、安全策略配置 ——
1. 配置SELinux
SELinux,Security-Enhanced Linux
美国NSA国家安全局提供的一套基于内核的增强的强制安全保护机制
主要针对用户、进程、文档做了一些安全标签及相关限制

安全策略谁来提供:NSA、RedHat
如何查看安全标签:ls  -Z、ps  -Z、……

如何让SELinux生效:
# vim  /etc/selinux/config
SELINUX=enforcing 

SELinux的类型 ——
enforcing  强制
permissive  宽松
disabled  禁用

查看/切换SELinux的状态 ——
getenforce 
setenforce  1|0

2. 配置SSH访问(+防火墙)
SSH,Secure  SHell,为远程客户机提供一个安全的命令行环境
服务端:sshd
客户端:ssh、xshell、SecureCRT、Putty
SSH的访问控制:
    防火墙规则 —— (后续)
    用户ACL —— # vim  /etc/ssh/sshd_config
    AllowUsers  用户名@客户机地址 .. ..
    DenyUsers  用户名@客户机地址 .. ..

3. 自定义用户环境(别名设置)
命令别名:为一个复杂的命令行建立一个简短的命令字
如何定义别名:alias  别名='复杂的命令行'
如何查看别名:alias、alias  别名
如何取消别名:unalias  别名、unalias  -a

用户初始化文件:
    /etc/bashrc、~/.bashrc、/etc/profile、~/.bash_profile

4.  配置防火墙端口转发

netfilter:Linux内核集成的一种基于包过滤的自主保护机制
主要针对网络访问实现访问控制
系统服务:iptables --》firewalld
管理工具:iptables --》firewall-cmd、firewall-config
防火墙预设的区域:
block:阻止所有数据包
drop:丢弃所有数据包
public:公共区域,允许SSH等极个别服务,默认区域
trusted:信任区域,允许任何访问
work:办公区域,允许SSH、Samba少数几个服务

防火墙预设的服务:http、https、dns……

查看/修改默认区域:
firewall-cmd  --get-default-zone
firewall-cmd  --set-default-zone=trusted

防火墙规则的作用范围:
运行配置 —— 当前有效,重启firewalld服务后失效
永久配置 —— 当前无效,重启firewalld服务后有效
--permanent

如何设置具体的防火墙规则:
firewall-cmd  --add-service=服务名  --zone=区域名
firewall-cmd  --add-source=源地址  --zone=区域名

firewall-config图形配置 ——
修改默认区域、修改永久配置、添加规则、添加转发规则

端口转发(5423-->80) ——
从客户机访问 http://server0:5423 时,与访问 http://server0/ 等效

firewall-cmd --permanent  --add-forward-port=port=源端口:proto=tcp:toport=目标端口 

二、网络连接配置 ——
5. 配置链路聚合
聚合连接(team):网络连接的捆绑、组团(多个网卡组成一个连接)
成员网卡(team-slave):构建聚合连接的实际网卡设备
聚合连接的类型 ——
    热备份 activebackup
    轮询负载均衡 roundrobin
定义聚合连接的类型时,采用JSON语法标记 ——
    JavaScript Object Notation
    标记一个对象 —— { 对象 }
    每一个对象 —— 名称:值
    每一个字符串 —— "字符串"
热备份配置:  { "runner":{ "name":"activebackup" }  }
轮询配置:    { "runner":{ "name":"roundrobin" }  }

建立聚合连接的思路 ——
1)创建新的聚合连接(聚合类型)
# nmcli  con  add  con-name  team0  type  team  ifname team0  config  '{ "runner":{ "name":"activebackup" }  }'
2)为聚合连接指定成员网卡
# nmcli  con  add  con-name  team0-p1  type  team-slave ifname  eno1  master  team0
# nmcli  con  add  con-name  team0-p2  type  team-slave ifname  eno2  master  team0
3)为聚合连接配置IP地址
# nmcli  con  modify  team0  ipv4.method  manual ipv4.addresses  "172.16.3.20/24"
4)激活聚合连接(及成员网卡)
# nmcli  con  up  team0
# nmcli  con  up  team0-p1
# nmcli  con  up  team0-p2
5)确认状态
# teamdctl  team0  state


6. 配置IPv6地址

系统服务:network --》NetworkManager
nmcli 命令行工具
nm-connection-editor 图形配置工具

连接名称 —— 逻辑上软件定义的一个名称
接口名称 —— 物理上硬件设备的一个名称

确认网卡的连接名称:
nmcli  conn  show
或者
nmcli device status

如何表示一个IP地址:
IPv4地址(32位) —— 点 分隔 十进制,172.25.0.11
IPv6地址(128位)—— 冒号 分隔 十六进制,fe80::5054:ff:fe00:b
fe80:0:0:0:5054:ff:fe00:b
fe80::5054:ff:fe00:b

system1和system2的IPv4地址,默认为DHCP获取


三、配置邮件服务器 ——
7. 配置本地邮件服务
用途:为邮箱用户向外发送邮件、存储及投递邮件
    zhsan@example.com

邮件服务器的类型 ——
    普通邮件服务器:向外发送邮件、存储及投递邮件
    空客户端邮件服务器:向外发送邮件,不存储不投递邮件

邮箱用户 ---> 普通邮件服务器 

邮箱用户 ---> 空客户端邮件服务器 ---> 后端邮件服务器


软件包:postfix
系统服务:postfix
配置文件:/etc/postfix/main.cf

nullclient

考试环境:
     system1(空客户端) ---》考官的后端邮件服务器
     system2(空客户端) ---》考官的后端邮件服务器

练习环境:
    server0(空客户端)
    desktop0(后端邮件服务器)

测试方法:
    在server0,发一封邮件给本机的student用户
echo  '邮件正文'  |  mail  -s  邮件标题  收件人地址

    在desktop0上的student用户能收到这封邮件
mail  -u  用户名

四、配置文件服务器/客户端 

8. 通过Samba发布共享目录
用途:为客户机提供共享文件夹、共享打印机资源
软件包(S):samba
软件包(C):samba-client、cifs-utils
协议和端口:
    CIFS,Common Internet File System,通用网际文件系统 —— TCP 445
    SMB,Server Message Block,服务消息块 —— TCP 139
系统服务:smb
用途:提供共享文件夹
协议:SMB(TCP 139)、CIFS(TCP 445)
软件包(S):samba
软件包(C):samba-client、cifs-utils
系统服务:smb
配置文件 /etc/samba/smb.conf: 【man  smb.conf】
[global]
      共享服务器的全局设置。。。
      workgroup  =  工作组名
[homes]
      本地用户家目录的隐藏共享。。。
      browseable = no
[printers]
      打印机共享设置
[共享名]
     配置语句 =  值
     path  =  文件夹路径
     comment = 说明文字
     browseable = yes|no
     public = no|yes
     read only = yes|no
     valid  users =  用户1  用户2  .. ..
     write list = 用户1  用户2
     hosts  allow  =  客户机1  网段1  .. ..
     hosts  deny  =  客户机1  网段1  .. ..

系统账号:/etc/passwd记录的用户账号
共享账号:存放在独立的账号数据库文件里的用户账号,必须有同名的系统账号(方便给权限)
pdbedit  -a  用户名
pdbedit  -L  [用户名]
pdbedit  -x  用户名
smbpasswd  用户名


SELinux预设策略的开关控制(布尔值):
getsebool  -a  | grep  samba_ex
setsebool  -P  samba_export_all_rw=on

测试Samba共享资源:
smbclient  -L  服务器地址     【密码为空(直接回车)】
smbclient  -U  用户名  //服务器地址/共享名 【需要密码】


9. 配置多用户Samba挂载
客户端multiuser挂载技术 ——
multiuser含义:在客户端支持切换Samba用户名,但不需要重新挂载共享资源

# vim  /etc/fstab
.. ..
被挂载的设备    挂载点   文件系统类型   挂载参数  0  0
//172.25.0.11/devops    /mnt/dev        cifs    username=kenji,password=atenorth,multiuser,sec=ntlmssp,_netdev 0 0

# su - chihiro
# cifscreds  add  server0
Password: 共享账号chihiro的密码
# touch  /mnt/dev/a.txt

10. 配置NFS共享服务

用途:Network File System 提供共享文件夹
软件包(S):nfs-utils
软件包(C):nfs-utils
共享配置文件:/etc/exports
文件夹路径    客户机1(权限,ro)  客户机2(rw)....

重新读取配置:exportfs  -rv


配置普通NFS共享(只支持客户机访问控制) ——
系统服务(S):nfs-server
系统服务(C):--
# vim  /etc/exports
/public         172.25.0.0/24(ro)


配置安全NFS共享(增加了对用户验证和加密的支持):
系统服务(S):nfs-secure-server
系统服务(C):nfs-secure

# vim  /etc/exports
/protected      *(rw,sec=krb5p)

Kerberos认证/加密:一次认证(获取通行证),多次免密登录
客户机密钥部署位置:/etc/krb5.keytab

测试用户:ldapuser0、ldapuser1
密码:kerberos

11. 挂载NFS共享

列出有哪些NFS共享:
showmount  -e  [服务器地址]

如何访问NFS共享目录:
mount   服务器地址:文件夹路径   本地挂载点


# vim  /etc/fstab
172.25.0.11:/protected    /mnt/nfssecure    nfs sec=krb5p,_netdev 0 0


19. 配置iSCSI服务端
20. 配置iSCSI客户端

iSCSI,网络磁盘        千兆以太网
软件包(S):targetcli
软件包(C):iscsi-initiator-utils

后端存储 backstore:
    服务端实际提供的存储设备(磁盘、分区、文件.. ..)
ISCSI 存储对象:
    软件逻辑上定义的一个网络磁盘target
LUN 逻辑单元:
    软件逻辑上定义的到后端存储的一个映射
IQN名称(ISCSI Qualified Name):
     iqn.yyyy-mm.反序区域名:自定义标记

如何发布一个ISCSI磁盘 ——
1. 定义一个后端存储设备
2. 创建一个ISCSI对象(IQN名称)
        iqn.2016-02.com.example:server0
3. 为ISCSI对象添加LUN对应到后端存储 【luns】
4. 为ISCSI对象指定允许访问的客户机标识(IQN名称) 【acls】
        iqn.2016-02.com.example:desktop0
5. 为ISCSI对象指定监听的地址、端口 【portals】

如何访问一个ISCSI磁盘 ——
1. 准备工作(初始化、引爆)
1)为客户机标识IQN名称
    # vim  /etc/iscsi/initiatorname.iscsi
    InitiatorName=本机的IQN名称
    # systemct  restart  iscsi
2)查找ISCSI磁盘
    iscsiadm  -m  discovery  -t  st  -p  服务器地址
3)连接ISCSI磁盘
    iscsiadm  -m  node  -T  ISCSI磁盘的IQN名称  -l
            【-l、-u、-o  delete】
2. 使用磁盘
识别、分区、格式化、挂载


iSCSI磁盘的开机自动连接:
# vim  /var/lib/iscsi/nodes/..../default
//查找startup
node.conn[0].startup = automatic

# systemctl  enable  iscsi   iscsid


问题(当前版bug):iSCSI客户机配好之后,重启或关机会卡死
解决:sync ;  poweroff  -f

# vim  /etc/bashrc
.. ..
alias  reboot='sync ; reboot -f'


五、配置网站服务器 ——
12.实现一个web服务器

用途:基于B/S架构提供网页的服务端程序
应用层协议:HTTP(TCP 80)
软件包(S):httpd
软件包(B):firefox、IE、elinks
快速构建一个网站服务器 ——
# yum  -y  install  httpd
# systemctl  restart  httpd

如何访问一个网站(URL) ——
Uniform  Resource  Locator,网址
http://www.baidu.com/
http://music.baidu.com/mp3/huluwa.mp3
协议名://服务器地址:端口/目录路径/文件

服务器默认网页从哪来 ——
网页根目录: /var/www/html/

配置文件:/etc/httpd/conf/httpd.conf    【Include】
                 /etc/httpd/conf.d/*.conf

默认首页:index.html

虚拟Web主机 ——
含义:在一台httpd服务器上提供多个不同的站点
基于域名的虚拟主机:
http://www.tedu.cn
http://www.tmooc.cn
http://tts8.tedu.cn

基于端口
基于IP地址

获取httpd配置手册:
# yum  -y  install  httpd-manual
# systemctl  restart  httpd
# firefox  http://server0/manual/

<VirtualHost  *:80>
      ServerName   www0.example.com
      DocumentRoot  /var/www/virtual
</VirtualHost>

一旦启用虚拟Web主机以后 ——
1. 全局配置当中的DocumentRoot和ServerName会被忽略
2. 如果客户机请求的URL不属于任何一个已知的虚拟站点,那么使用第一个虚拟站点做回应


恢复目录正常的SELinux属性:
# restorecon -R /var/www/html/

13.配置安全web服务
HTTP:明文的
HTTPS:加密的,TLS/SSL

CA:第三方的证书颁发机构(数字证书中心)

实现HTTPS加密通信需要的素材:
服务器的电子证书(cert):服务器基本信息、颁发机构、有效期、加密用的公钥 ……、颁发机构的签名
     /etc/pki/tls/certs/server0.crt
服务器私钥(key):用来解密,包括服务器的信息、解密素材
     /etc/pki/tls/private/server0.key
根证书(CA):第三方机构的证书
     /etc/pki/tls/certs/example-ca.crt

14.配置虚拟主机

15.配置web内容的访问
访问控制(目录)
<Directory  目录路径>
    Require  ip  IP地址.. ..
</Directory>


16.实现动态WEB内容

静态网页:.html,服务端的文件是固定的,客户端显示的结果也是固定的
动态网页:.php、.wsgi、.jsp,服务端的文件是固定的,但是客户端显示的结果是动态变化的


如何支持PHP网页 ——
# yum  -y  install  php  httpd
# systemctl  restart  httpd

如何支持Python网页 ——
# yum  -y  install  mod_wsgi
# vim  .....conf
WSGIScriptAlias    /    /实际WSGI程序的存放路径
# systemctl  restart  httpd

当httpd需要使用非标准端口的时候,会受到SELinux限制

semanage  port  -l  |  grep  http
semanage  port  -a  -t  http_port_t  -p  tcp  8909

SELinux排错:
1. less  /var/log/messages
2. sealert

Web服务可能受SELinux限制的几个地方:
1. 不要先get到/root目录,然后再mv到网页目录
    wget  URL  -O  /网页目录
2. 万一 ,题目要求的网站目录不在/var/www下
    !! 注意在httpd配置中添加目录权限
<Directory /webroot>
    Require all granted
</Directory>
 
    !! 标准网页目录有哪些:/var/www/.. ..、/src/*/www*、.. ..
    !! 如何将非标准的目录作为网页目录
    1)修改目录的安全属性
    # chcon  -R  /webroot  --reference=/var/www
    2)修改系统的SELinux策略,将指定的目录添加为标准目录
    # semanage  fcontext  -a  -t httpd_sys_content_t  '/webroot(/.*)?'
    # restorecon   -R   /webroot


六、Shell脚本编程 —— 
17. 创建一个脚本
Shell脚本:能够完成特定任务的一批命令行的集合

设计脚本需要考虑:
1. 每一个步骤的操作怎么实现
2. 这些步骤的顺序
3. 代码的优化(简化、免交互、执行效率、界面友好度)
     变量(不变的名称调用变化的值) 
     流程控制(if、for、while、case)

任务示例:
1. 添加一个可登录的用户 zhsan
    useradd  zhsan
    passwd  zhsan
2. 报告系统信息的脚本
    红帽版本、CPU信息、内存信息
    cat  /etc/redhat-release
    cat  /proc/cpuinfo ...
    cat  /proc/meminfo ...

变量的使用 ——
变量名=变量值
${变量名}

环境变量(定制用户环境参数):USER、PATH、HOME、PWD、SHELL、LOGNAME、……
位置变量(提供命令行参数):$1、$2、……、${10}、……
预定义变量:$#、$*、$?、$0


条件测试操作 ——
依据 $?:表示前一条命令退出的状态值(0 成功,非0 失败)

测试的方式:
    任何一条命令行
    test  测试表达式
    [  测试表达式  ]

常见的测试选项:
    文件状态检测  -f、-d、-e、-r、-w、-x
    整数值比较  -gt、-ge、-eq、-ne、-lt、-le
    字符串比较  ==、!=
    取反操作  !


命令组合:
cmd1   &&  cmd2  ||  cmd3


重定向输出 ——
1 标准输出(/dev/stdout):命令行执行成功的显示信息
2 标准错误(/dev/stderr):命令行执行出错的显示信息

重定向标准输出:
     命令行  >  文件、命令行  >>  文件、
重定向标准错误:
     命令行  2>  文件、命令行  2>>  文件、
混合重定向:
     命令行  &>  文件
将标准输出变成标准错误:
     命令行  >&2
将标准错误变成标准输出:
     命令行  2>&1


单分支if选择结构 ——
if  条件测试操作 
then
     命令序列....
fi


双分支if选择结构 ——
if  条件测试操作 
then
     命令序列1....
else
     命令序列2....
fi


三分支if选择结构 ——
if  条件测试操作1
then
     命令序列1....
elif  条件测试操作2
then
     命令序列2....
else
     命令序列3....
fi

根据一个变量的值等于不同结果做不同处理(红绿灯)
case分支结构 ——

case  "$变量名"   in
值1)
     命令序列1.. ..
     ;;
值2)
     命令序列2.. ..
     ;;
.. ..
*)
     默认命令序列
esac


18. 创建一个添加用户的脚本

脚本的退出状态值 ——
      退出之前最后一条命令的 $? 值
      exit  整数值

列表式for循环 ——          买票、采血车
for  变量名  in  值1  值2  值3 .. ..
do
        命令序列($变量名)
done

for  第一个献血人  in  张三  李四  王五 .. ..
do
        为第一个献血人采血
done


命令替换(提取命令结果) ——
$(命令行)

for  用户名  in  $(cat  $1)
do
    添加用户账号
done


七、配置及管理数据库 ——
21. 配置一个数据库
22. 数据库查询(填空)

数据表:存放关系型的一些记录(很多属性)
    一个实体:每一行(记录)、不同列(属性)
数据库:存放存在相互关系的大量的数据表
数据库系统(服务器):提供数据库存储和相关管理的一套软件


常见的数据库系统软件:
    甲骨文:Oracle、MySQL
    MicroSoft:SQL Server
    DB2、PostgreSQL
    MariaDB:mariadb-server、mariadb

SQL:结构化查询语言


阿里巴巴:去IOE运动(IBM、Oracle、EMC)

如何访问数据库系统 ——
mysql  
mysql  -u  用户名  -p
mysql  -u  用户名  -h  服务器 -p

数据库操作语句的特点:
1) 不区分大小写
2.)每一条语句需要以 ; 表示结束
    
数据库操作 ——
查看库:SHOW  DATABASES;
创建库:CREATE  DATABASE  数据库名;
删除库:DROP  DATABASE  数据库名;
选择库:USE  数据库名;

数据表操作 ——
查看表:SHOW  TABLES;
创建表:CREATE  TABLE  表名(字段1 类型(长度), 字段2 类型(长度), .. .. );
删除表:DROP  TABLE  表名;
描述表(查看表字段):DESCRIBE  表名;

数据库的导入、导出 ——
mysqldump  -u 用户名  -p  数据库名  >  备份.sql
mysql  -u  root  数据库名  < 备份.sql

数据库用户的授权 ——
GRANT  权限列表  ON  数据库名.表名  TO  用户名@客户机地址  IDENTIFIED BY  '密码字串';
GRANT  select ON  Contacts.*  TO  Raikon@localhost  IDENTIFIED BY 'atenorth';

修改数据库用户的密码 ——
mysqladmin  -u  用户名  -p  password  '新密码'


数据记录的增删改查 ——
查询:SELECT  *  FROM  [数据库.]表名;
          SELECT  字段1,字段2,....  FROM  [数据库.]表名;
          SELECT  .. ..   WHERE  字段1='值'  and|or  字段2='值';
增加:INSERT  INTO  [数据库.]表名  VALUES(1,"Tom","123");
删除:DELETE  FROM  [数据库.]表名 WHERE .. ..;
修改:UPDATE [数据库.]表名 SET  字段名=""  WHERE .. ..;

统计查询结果的数量 ——
SELECT  count(*)  .. ..

删除空密码账号(!!注意:设好root密码后再做) ——
DELETE FROM mysql.user WHERE Password='';


多表查询 ——
select count(*) from base,location where base.name="Barbara" and location.city="Sunnyvale" and base.id=location.id;

建表练习 ——
MariaDB [Contacts]> CREATE TABLE base(id int, name varchar(20), password varchar(24));
MariaDB [Contacts]> INSERT INTO base VALUES(1,'Tom','123');
MariaDB [Contacts]> INSERT INTO base VALUES(2,'Barbara','456');
MariaDB [Contacts]> INSERT INTO base VALUES(3,'James','solicitous');
MariaDB [Contacts]> INSERT INTO base VALUES(4,'Smith','tarena');
MariaDB [Contacts]> INSERT INTO base VALUES(5,'Barbara','pwd123');

MariaDB [Contacts]> CREATE TABLE location(id int, city varchar(20));
MariaDB [Contacts]> INSERT INTO location VALUES(1,'Beijing');
MariaDB [Contacts]> INSERT INTO location VALUES(2,'Paris');
MariaDB [Contacts]> INSERT INTO location VALUES(3,'Sunnyvale');
MariaDB [Contacts]> INSERT INTO location VALUES(4,'Berlin');
MariaDB [Contacts]> INSERT INTO location VALUES(5,'Sunnyvale');


####################################################

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

English太次郎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值