博主于2018年9月25日刚考完RHCSA和RHCE并成功通过,好记性不如烂笔头,并分享一下。
参考模板博主围着火炉跳舞的熊猫
RHCE 共22个考点
考点:rhcsa考过的 不重复 考试时也就是要求会操作
-----操作步骤如下------
setenforce 1
setenforce 1表示将当前selinux状态修改成enforcing
vim /etc/sysconfig/selinux
将SELINUX=permissive 修改为SELINUX=enforcing
将permissive 永久修改为enforcing
补充说明:
permissive就是Selinux中有效,但是即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来
enforcing就是违反了策略,你就无法继续操作下去
disable 取消、关闭selinux
考点:1.systemctl enable firewalld(开机自运行firewalld服务)
2.关键一步 firewall-cmd --permanent --add-serivce=ssh (防火墙放行ssh服务)
3.firewall-cmd reload(加载防火墙配置)
考试时还会要求 设定某个Ip 允许ssh访问。
----------操作步骤如下---------
systemctl enable firewalld
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent -add-rich-rule 'rule family="ipv4' source address="IP或IP网段" service name=ssh accept'
考点:vim /etc/bashrc alias qstat=' ’考试没有变动,熟练就行。
(知识点:alias qstat='/bin/ps -Ao pid,tt,user,fname,rsz' bash )
vi /etc/bashrc
再最下面按考试题目添加下面这条alias
alias qstat='/bin/ps -Ao pid,tt,user,fname,rsz'
wq保存后执行bash,立即生效
/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)
~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件.
~/.bash_profile 是交互式、login 方式进入bash 运行的;
~/.bashrc 是交互式 non-login 方式进入bash 运行的;
考点:熟记firewall-cmd 相关命令
将来自源于172.24.8.0/24网段的5423请求转发转发至80
-------操作步骤如下-----------
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="172.24.8.0/24" forward-port port="5423" protocol="tcp" to-port="80"'
firewall-cmd --reload
firewall-cmd --list-all
考点:考试熟记下面的命令,注意考试时 两台机器给的Ip不一样。
----------操作步骤如下-------------
链路聚合参数 '{"runner":{"name":"activebackup"}}' 可以直接 man 5 teamd.config (个人建议还是不要死记硬背,多man多动脑经)
nmcli connection add con-name team0 ifname team0 type team config '{"runner":{"name":"activebackup"}}'
nmcli connection modify team0 ipv4.addresses "172.16.3.40/24" connection.autoconnect yes ipv4.method manual
nmcli connection add con-name team0-slave1 ifname eth1 type team-slave master team0
nmcli connection add con-name team0-slave2 ifname eth2 type team-slave master team0
nmcli connection up team0
teamdctl team0 state
考点:会用nmcli配置Ipv6,粗体字部分手工设置要加上。配置eth0 ipv6地址以及开机自动连接
----------操作步骤如下-----------
nmcli connection modify eth0 ipv6.addressses "ipv6地址/32" ipv6.method manual connection.autoconnect yes
nmcli connection reload
nmcli connection down eth0 && nmcli connection up eth0
考点:postconf -e 设置内容跟着要求来,
1.本地发送的任何邮件自动路由到某个域名(看题目要求)
2.从本地系统上发送的邮件都显示来自于固定某个地址(看题目要求)
3.可能会添加一条要求设置信任网络:mynetworks=
-----------操作步骤如下----------
考试熟记命令,这题没啥好说的 实战基本用不上。
postconf -e inet_interfaces=loopback-only #只在本地还回接口接受邮件:也就是说不接受外部发送的邮件
postconf -e mydestindation= #把接受到的任何邮件都当作外部邮件
postconf -e local_transport=error:err #禁止本地分发邮件到本地用户邮箱
postconf -e relayhost=[mail.group8.example.com] #设定中心邮件服务器
postconf -e myorigin=server.group8.example.com #设定发信人的域
这条没考,有可能考,简单看一下 * postconf -e mynetworks=172.0.0.0/8[;:1]/128 信任网络*
systemctl enable postfix #开机自启动postfix邮件服务
systemctl restart postfix #重启postfix服务
测试发送邮件
echo "hello" | mail -s testmail dave
验证 :curl http://
考点:1.firewall添加samba服务
2/etc/samba/smb.conf配置 通常设置固定客户端可否访问 ,浏览和写权限(hosts allow,browseable,writable);
3.安全上下文semanage fcontext “samba_share_t”
4.设置samba帐号 smbpasswd -a
5.客户端验证 sambaclient -L //ip -U
-----------操作步骤如下------------
yum install samba samb-client -y --nogpgcheck
systemctl enbale smb.service nmb.service
设定防火墙
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload
vi /etc/samba/smb.conf #配置文件
[global]
workgroup = STAFF
说明:设定 Samba Server 所要加入的工作组或者域。(下面会集中描述)
[common]
path = /common
hosts allow = 172.24.8. #允许指定域的客户端可以使用
browseable = yes #允许被浏览
按要求创建目录设定安全上下文 (所有关于安全上下文 参考笔记RHCSA2 笔记7.2 7.3)
mkdir common
semanage fcontext -a -t "samba_share_t" '/common(/.*)?'
restore -Rv /common/
smbpasswd -a andy
systemctl restart smb nmb
验证 系统2上
yum install samba-cilent -y --nogpgcheck
smbclient -L //172.24.8.11/ -U andy
--------------
补充相关配置说明
server string = Samba Server Version %v
说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
netbios name = smbserver
说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了。
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
说明:设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
hosts allow = 127. 192.168.1. 192.168.10.1
说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反。
例如:hosts allow=172.17.2.EXCEPT172.17.2.50
表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50
hosts allow=172.17.2.0/255.255.0.0
表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
[共享名]
comment = 任意字符串
说明:comment是对该共享的描述,可以是任意字符串。
path = 共享目录路径
说明:path用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。例如:如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成:path = /home/share/%u; 。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写:path = /home/share/%m 。
browseable = yes/no
说明:browseable用来指定该共享是否可以浏览。
writable = yes/no
说明:writable用来指定该共享路径是否可写。
available = yes/no
说明:available用来指定该共享资源是否可用。
admin users = 该共享的管理者
说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。
例如:admin users =bobyuan,jane(多个用户中间用逗号隔开)。
valid users = 允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
例如:valid users = bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)
invalid users = 禁止访问该共享的用户
说明:invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
write list = 允许写入该共享的用户
说明:write list用来指定可以在该共享下写入文件的用户。
例如:write list = bobyuan,@bob
public = yes/no
说明:public用来指定该共享是否允许guest账户访问。
guest ok = yes/no
说明:意义同“public”。
为何samb 中配置指定/devops/不允许有写权限(writable),而需要setfacl来设置用户对指定目录有读写rwx权限??
考点:
1./etc/samba/smb.conf配置 通常设置固定客户端可否访问 ,浏览和写权限(hosts allow,browseable,writable);
2..安全上下文semanage fcontext “samba_share_t”
3..设置samba帐号 smbpasswd -a
4..客户端验证 sambaclient -L //ip -U
-------操作步骤如下-----------
vim /etc/samba/smb.conf
[devops]
path= /devops
hosts allow = 172.24.8. #允许指定域的客户端可以使用
browseable = yes # 允许被浏览
writable = no #不允许写权限
write list = akira # write list用来指定可以在该共享下写入文件的用户
设定目录
mkdir /devops
semanage fcontext -a -t "samba_share_t" '/devops(/.*)?'
restorecon -Rv /devops
setfacl -m u:akira:rwx /devops/ #设置akira 对指定目录下的文件/devops/有读写权限
#建立samba账户
smbpasswd -a silene
redhat #密码:
smbpasswd -a akira
redhat #密码
systemctl restart smb nmb #重启服务
系统2
yum install cifs-utils -y --nogpgcheck #安装软件
mkdir /mnt/dev #建立挂载点
smbclient -L //172.24.8.11/ -U silene #查看共享
vim /etc/fstab #挂载
//172.24.8.11/devops /mnt/dev cifs defaults,multiuser,username=silene,password=redhat,sec=ntlmssp 0 0
mount -a
df -h
su - silene #验证
cd /mnt/dev
cifscreds add 172.24.8.11
touch testfile #结果被否
su - akir
cd /mnt/dev
cifscreds add 172.24.8.11
touch testfile
考点:1.防火墙firewall添加服务nfs,rpc-bind,mountd,nfs服务依赖这两个rpc-bind,mountd.
2安全上下文 semanage public_content_t
3.在/etc/exports下配置 指定系统1共享目录
4在/etc/sysconfig/nfs 下修改nfs启动参数,并重启服务 restart nfs-server nfs-secure
注意:nfs的主要配置文件是/etc/exports,辅助配置文件是/etc/sysconfig/nfs
简单说一下rpc,rpc服务的主要功能就是指定每个nfs功能所对应的端口号,并通知给客户端,让客户端连接正确的端口号,因为nfs启动时端口号不固定,nfs服务启动时会随机选择一个可用的端口,然后向rpc服务报告,说明nfs服务现在所占用的端口,所以,rpc必须在nfs启动前启动,没有rpc,nfs服务无法正常使用
------操作步骤如下----------
yum install nfs-utils -y --nogpgcheck
systemctl enable nfs-server nfs-sercure-server #服务开机启动
设定防火墙规则
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload
设定目录及安全上下文
mkdir -p /public /protected/project
chown andres /protected/project
semanage fcontext -a -t "public_content_t" '/protected(/.*)?'
semanage fcontext -a -t "public_content_rw_t" '/protected/project(/.*)?'
restore -Rv /protected/
vim /etc/exports
/public *.group8.example.com(ro,sec=sys,sync)
/protected *.group8.example.com(rw,sec=krb5p,sync)
ro:该主机对该共享目录有只读权限
rw:该主机对该共享目录有读写权限
sync:资料同步写入到内存与硬盘中
vim /etc/sysconfig/nfs
RPCNFSDARGS="-v 4.2"
systemctl restart nfs-server.service nfs-secure-server.service
刷新并导出资源
exportfs -ra
exportfs
考点:
1./etcfstab 的共享目录挂载
2.验证挂载成功
3.客户端:在挂载时声明版本:v4.2
---------操作步骤如下-------------
系统2上
mkdir /mnt/nfsmount /mnt/nfssecure
下载用于认证的keytab,并将密钥存入/etc/krb5.keytab
wget -o /etc/krb5.keytab http://keytab的url
vim /etc/fstab
system1:/public /mnt/nfsmount nfs defaults,sec=sys 0 0
system1:/protected /mnt/nfssecure nfs defaults,sec=krb5p,v4.2 0 0
测试:
mount -a
df -h
su - andres
kinit
cd /mnt/nfssecure/project/
touch testfile
ls -l
考点:
1.apache的默认目录/var/www/html相关配置
2.wget -O /var/www/html/index.html
3.
-------操作步骤如下-----------
yum install httpd -y --nogpgcheck
vim /etc/httpd/conf.d/httpd-vhosts.conf
DocumentRoot "/var/www/html" 注意 “ ” 默认为/var/www/html
ServerName system1.group8.example.com 指定配置的站点
Require all granted 匹配所有访问请求,并授权访问
Require not hosts .my133t.org 不匹配.my133t.org访问请求,并拒绝访问
wget -O /var/www/html/index.html http://server.group8.example.com/pub/system1.html
systemctl enable httpd
systemctl start httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
系统2
curl system.group8.example.com
考点:
1.安装模块mod_ssl
2.https端口443
3.SSL下相关证书下载到对应的路径必须一致
SSL Engine on /etc/pki/tls/...
SSL Protocol all
SSL CertificateFile
SSL CertificateKeyFile
SSL CACertificateFile------操作步骤如下-------
yum install mod_ssl -y
vim /etc/httpd/conf.d/httpd-vhosts.conf
DocumentRoot "/var/www/html"
ServerName system1.group8.example.com
Require all granted 匹配所有访问请求,并授权访问
Require not hosts .my133t.org 不匹配.my133t.org访问请求,并拒绝访问
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCertificateFile /etc/pki/tls/certs/system1.crt
SSLCertificateKeyFile /etc/pki/tls/private/system1.key
SSLCACertificateFile /etc/pki/tls/certs/ssl-ca.crt
wget -O /etc/pki/tls/certs/system1.crt http://server.group8.example.com/pub/tls/certs/system1.crt
wget -O /etc/pki/tls/private/system1.key http://server.group8.example.com/pub/tls/private/system1.key
wget -O /etc/pki/tls/certs/ssl-ca.crt http://server.group8.example.com/pub/tls/certs/ssl-ca.crt
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
systemctl restart httpd
curl -k https://system1.group8.example.com #-k 忽略证书
===========================
14.配置虚拟主机
考点: 1./var/www/virtual 虚拟主机的相关配置
2.安全上下文 httpd_sys_content—t
------操作步骤如下-------
mkdir /var/www/virtual
wget -O /var/www/virtual/index.html http://server.group8.example.com/pub/www8.html
setfacl -m u:andy:rwx /var/www/virtual/
semanage fcontext -a -t "httpd_sys_content_t" '/var/www/virtual(/.*)?'
restorecon -Rv /var/www/virtual/
vim /etc/httpd/conf.d/httpd-vhosts.conf
DocumentRoot "/var/www/virtual"
ServerName www8.group8.example.com
Require all granted 匹配所有访问请求,并授权访问
systemctl restart httpd
系统2
curl http://www.8.group8.example.com
考点:1.Document “/var/www/html/private” "/var/www/virtual/private"相关配置
------操作步骤如下------
mkdir /var/www/html/private
mkdir /var/www/virtual/private
wget -O /var/www/html/private/index.html http://server.group8.example.com/pub/private.html
wget -O /var/www/virtual/private/index.html http://server.group8.example.com/pub/private.html
vim /etc/httpd/conf.d/httpd-vhosts.conf
DocumentRoot "/var/www/html"
ServerName system1.group8.example.com
Require all granted 允许所有的访问
Require all denied 匹配所有访问请求,并拒绝访问
Require local 匹配本机
DocumentRoot "/var/www/vitual"
ServerName www8.group8.example.com
Require all granted 匹配所有访问请求,并授权访问
Require all denied 匹配所有访问请求,并拒绝访问
Require local 匹配只允许本地访问
systemctl restart httpd
验证
系统1:
curl http://system1.group8.example.com/private/
系统2:
curl http://system1.group8.example.com/private/
考点:
1.WSGIScriptAlias / /var/www/html/webinfo.wsgi
2.安装模块mod_wsgi
3.防火墙添加监听端口firewall
4.apache添加监听端口 semanage port -a http_port_t -p tcp
-----操作步骤如下----
vim /etc/httpd/conf.d/httpd-vhosts.conf
Listen 8909
ServerName wsgi.group8.example.com
WSGIScriptAlias / /var/www/html/webinfo.wsgi ----------凡是访问路径/下的URL都使用/var/www/html/webinfo.wsgi 来解析
yum install mod_wsgi -y --nogpgcheck --------------安装模块mod_wsgi
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" port port=8909 protocol=tcp accept' ------防火墙添加端口
firewall-cmd --reload
semanage port -a -t http_port_t -p tcp 8909 -------apache添加监听端口号
systemctl resstart httpd
curl http://wsgi.group8.example.com:8909
vim /root/foo.sh
#! /bin/bash
case $1 in
redhat)
echo "fedora"
;;
fedora)
echo "redhat"
;;
*)
echo "/root/foo.sh redhat | fedora"
;;
esac
chmod 755 /root/foo.sh
vim /root/batchusers
if[ $# = 1 ];then ----$# 表示提供到shell脚本或者函数的参数总数;意思就是脚本中有参数的时候,就。。没有就显示 “Usage:/root/barchusers userfile”
if [ -f "$1" ];then -----将一个文件普通名传给传给$1,并判断这个文件是否存在.$1“位置参数”,表示传入第1个参数。
#!/bin/bash
if [ $# = 1 ] ; then
if [ -f $1 ] ; then
for i in $(cat $1 )
do
useradd -s /bin/false $i
done
else
echo "Input file not found"
exit 1
fi
else
echo "Usage: /root/batchusers userfile"
exit 2
fi
chmod 755 /root/batchusers
wget -O /root/userlist http://server.group8.example.com/pub/userlist
/root/batchusers userlist
考点:
1.yum安装包targetcli,systemctl firewall添加服务端口
2.fdisk分区
3.逻辑卷pvcreate vgcreate lvcreate -n -l
4.targetcli 定义本地块设备
-----操作步骤如下-------
yum install targetcli -y --nogpgcheck
systemctl enable target
systemctl start target
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="172.24.8.12/32" port port=3260 protocol=tcp accept'
firewall-cmd --reload
fdisk /dev/sda
n p 3 +3G t 8e w
partprobe
pvcreate /dev/sda3
vgcreate iscsi_vg /dev/sda3
lvcreate -n iscsi_store -l 100%VG iscsi_vg
targetcli
>backstores/block create name=iscsi_store dev=/dev/iscsi_vg/iscsi_store #定义本地块设备
>cd iscsi
>create iqn.2014-08.com.example.group8:system1 #定义一个iscsi
>cd iqn.2014-08.com.example.group8:system1/tpg1/
>luns/ create /backstores/block/iscsi_store #将定义好的块设备共享出去
>acls/ create iqn.2014-08.com.example.group8:system2 #创建基于iqnde acl:允许该名字的客户端访问本地Iscsi的target
>portals/ create 172.24.8.11 3260 #定义target的入口
>set attribute authentification = 0 #关闭帐号验证
>set attribute generate_node_acls=0 #使用自定义的acl实现节点访问限制 >saveconfig
>exit
考点:
1.yum安装iscsi-initiator-utils
2.vim /etc/iscsi/initiatorname.iscsi 设置
InitiatorName这个单词必须注意大小写,同时,必须顶格写,xxxx代表要设 置的initiator名称,请遵循iqn命名规范。
iqn规范定义的InitiatorName格式为iqn.domaindate. reverse.domain.name:optional name,例如:iqn.2006-11.com.h3c:dbserver。
3.发现target
iscsiadm -m discovery -t st -p 172.24.8.11
iscsiadm -m node -l
----------操作步骤如下------
yum install iscsi-initiator-utils -y
vim /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2014-08.com.example.group8:system2
systemctl enable iscsid iscsi
systemctl restart iscsid iscsi
iscsiadm -m discovery -t st -p 172.24.8.11
iscsiadm -m node -l
lsblk 查看本地多了一个3G 的硬盘
fdisk /dev/sdb
n p +2100M w partporbe
mkfs.ext4 /dev/sdb1
mkdir /mnt/data
vim /etc/fstab
/dev/sda1 /mnt/data ext4 defaults,_netdev 0 0
mount -a
df -h
考点:
1.mariadb的安装 2.mysql—secure_installation安装 3.创建题目要求数据库,可能有要求数据库包括需要复制的内容,该部分的内容会给出下载地址,通过wget下载到指定文件,然后在创建数据库后source恢复 4.设置指定某个账户本地访问数据库
-------操作步骤-----------
yum install mariadb* -y --nogpgcheck
systemctl enable mariadb
systemctl restart mariadb
mysql_secure_installation (y redhat y)
wget -O /root/users.mdb http://server.group8.example.com/pub/users.mdb
mysql -u root -predhat
create database Contacts; (创建数据库以后use进入该数据库使用命令source恢复)
use Contacts;
source /root/users.mdb;
grant select on Contacts.* to Mary@localhost identified by 'redhat'; (Contacts.* 指的是:数据库contact下的所有表)
quit
考点:查询sql语句、授权某账户相关权限允许账户本地访问数据库
也可能会要求针对某帐户设置插入、 更新、筛选、 删除权限
mysql -u root -predhat
use Contacts;
show databases;
desc ...
SELECT u_name.firstname FROM u_name, u_passwd WHERE u_name.userid = u_passwd.uid AND U_psswd.password = 'fadora';
SELECT COUNT(*) FROM u_name, u_loc WHERE u_name.userid = u_loc.uid AND u_name.firstname = 'John' AND U_loc.location = 'Santa Clara';
补:1.数据库建立用户
create user john@'localhost' indentified by 'password';
2.针对某表设置本地用户权限
grant insert,update,delete,selecte on inventory.* to john@'localhost'; (john@% 不匹配localhost)
补充说明
create 创建
drop 删除数据库
alter 修改
select 查询
insert 插入
update 更新
delete 删除记录
grant 赋予权限
revoke 从当前用户或组中取消权限
grant补充说明
一次grant只能指定一个对象,例如:grant select, update, insert on 数据库 to 指定用户;
可以设置多种操作权限,但是只能指定一张表。
===================================