感谢支持
我们一直在努力

红帽RHCE实验红宝石书(中)

注意:所有实验不涉及SElinux,请用命令关闭

1、对/etc/inittab默认值的修改

• 默认启动模式

• id:5:initdefault: 修改5为3之后,下次启动将不再引导到图形模式

• id:6:initdefault: 错误设置,开机就重启

• 取消热启动

• ca::ctrlaltdel:/bin/echo “you should use the command

to shutdown the system” &> /dev/console

• 当前按住ctrl+alt+delete键组合仍然会重启系统,但之后再按此三个键组合时,系统就会跳出以上的信息

• respawn的设置(监控唤醒) wait(一直等待执行完毕)

• my::respawn:/bin/echo “test respawn”> /dev/console

• 由于此指令很快就执行完毕,respawn会检测到马上再次启动它,由于过于频繁,系统会将其抑制5分钟再执行 修改设备自动识别加载的默认权限

2、定制cron任务

• 定义一个每天每隔5分钟周而复始的测试服务器的脚本,并将其作为计划任务执行

• crontab -e

0-59/5 * * * * /bin/testServer.sh 192.168.0.254

• 我们能可以在/var/spool/cron中找到一个与之相同的用户名,其权限为本人读写,再将其内容查看一下

• cat /var/spool/cron/root 内容和上面一致,当我们将这个文件删除,对于此人的cron任务也终止。

3、VNC服务器端的设置

• 当前用户在第一次使用vncserver 命令时,将会提示输入密码,此密码就是最为基本的图形连接保护机制

• 接着我们看到station1.example.com:1 的信息,此时:1就是我们远程端对此机器连接的端口。

• vncserver 命令可以运行多次,分别对每个端口做连接,这是每个连接都是一个虚拟的平台,所以我们称呼其为虚拟计算。用来实现瘦客户机在服务器上运算复杂应用的场景。

• 接着我们使用客户端连接工具

vncviewer station1.example.com:1 到此服务器。看到一个极其简化的X窗口(twm)。为了gnome的X窗口。我们需要重新启动vncserver

• vncserver -k :1 ; vim ~/.vnc/xstartup; 添加以下内容

• gnome-session & 添加的内容#twm 注释的内容

• 保存后再次启动vncserver,再尝试用客户端连接,可以看到熟悉的界面

4、多用户VNC服务器端的设置

• vim /etc/sysconfig/vncservers 修改服务级的VNCSERVER配置,首先还是需要以每个用户的身份运行一次vncserver,以便在每个用户的主目录下生成自己~/.vnc/xstartup 配置文件和设置vnc连接时输入的密码,否则vncserver无法启动。

• VNCSERVERS=”1:visitor 2:Oracle”1号端口是为visitor账户连接开放,2号为oracle用户,注意不要设置root账户的远程连接,VNC协议为明文的传送数据。除非客户机使用vncviewer -via 192.168.0.2:1 的安全的隧道连接方式

• VNCSERVERARGS[2]=”-localhost” 删除掉此选项,让远程用户可以连接到服务。

• 之后我们重启服务,分别用vncviewer 连接到不同的端口测试一下不同用户的远程桌面。

• chkconfig vncserver on 让服务随着系统启动而开启

5、批量增加用户两个方法

• 利用循环生成一些有规则的账户

for ID in {10..19}
 
do
 
useradd acc$ID ;
 
echo “RedHat”| passwd —stdin acc$ID
 
done

• 利用addusers命令根据清单生成没有规则性的账户

• 生成一个雷同于/etc/passwd格式的用户清单文件,而第二列是对其设置的密码,如下/root/users.lstjoe:redhat:1001:1000::/home/joe:/sbin/nologin

jane:password:1002:500:jane users:/home/jane:/bin/bash

• 最后运行newusers /root/users.lst

• 注意:newusers生成的账户没有用户的个人文件。我们需要从模板中复制一份出来cp -rv /etc/skel /home/{joe,jane}

6、手工建立账户

• vim /etc/passwd 按照规则添加一个账户

• userman:x:507:507:manual created:/home/userman:/bin/bash

• vim /etc/group 按照规则添加一个组

• userman:x:507:

• 创建用户的主目录,该目录只运行本用户访问

• mkdir /home/userman; chmod 700 /home/userman ; chown userman:userman/home/userman

• 最后拷贝模板文件到用户目录

• cp -rv /etc/skel/ /home/userman

• 最后为该用户设置密码

7、用户,组,权限设置

• 切换到普通用户之前请记录id指令的结果

• 修改用户主要组/etc/passwd 第四列的组ID; 修改用户附属组/etc/group最后一列添加用户名

• 再此使用该账户的id命令对比不同

• 密码老化时间的更改,默认系统用户密码永不过期

• vim /etc/login.defs

• PASS_MAX_DAYS 30 30天之后需要更改密码

• UID_MIN 2000 新建账户的UID从2000开始递增

• GID_MIN 2000 起始GID

• CREATE_HOME yes 建立账户的同时创建用户的主目录

8、SUID和粘贴位以及用户的默认权限

• SUID 用户特殊位,当使用chmod u+s设置文件的SUID位时,如果其他用户执行改文件将临时具有所有者的权限,知道退出程序为止。

• ls /usr/bin/passwd -l

• -rwsr-xr-x 1 root root 37084 2009-04-04 13:49 /usr/bin/passwd

• 我们以其他用户的身份登录到其他的控制台执行passwd不退出

• su – user01;接着在其他控制台以root身份查看进程的所有者我们可以看到对应的tty为root用户(passwd程序的所有者)执行

• 当我们设置完密码后,使用id查看,返回原来的角色

• 保存后新建一个账户,分别查看/etc/passwd 和/etc/shadow

9、对目录夹设置SGID位

• 建立一个空的文件夹,改变其组所有者为account

• 分别以三个用户acc01,acc02,acc03在这个目录下建文件

• 观察文件的组和用户信息,默认情况依用户创建的文件属于用户本身的用户和用户的主要组,如果要实现一个共享的文件夹。我们可以通过设置文件夹组的的特殊位来实现。

• chmod g+x ./account; ls ./account -ld

• 再在这几个目录中创建文件,我们可以看到每个文件的所有者还是文件的创建者,而文件的组已经成为了公共组account了。这样只要是account组的成员都可以互相访问其他组的成员创建的文件了。

10、使用/etc/sudoers下放权限

• 建立两个用户test01,test02。要求test01可以使用管理网络的命令,同时也可以安装新的软件,test02则只能管理软件包

• 我们先使用test01和test02用户登录尝试

• /sbin/ifconfig eth0 down; /sbin/rpm -ivh ftp://server1.example.com/pub/Server/zsh*.rpm

• 会显示权限不够,遭拒绝的相关提示,请记录

• User_Alias 定义一组相同权限的用户别名

• Cmnd_Alias 定义一组可操作的指令集合

• 修改/etc/sudoers,添加两个用户别名

• User_Alias NETADMIN=test01 注意别名要顶行书写

• User_Alias PACKAGEADMIN=test01,test02

• Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date,

/usr/bin/yum

• Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping,/sbin/dhclient,/usr/bin/net, /sbin/iptables, /usr/bin/rfcomm,/usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

• 在尾部添加

• NETADMIN ALL=SOFTWARE 等号前后不要加空格

• PACKAGEADMIN ALL=NETWORKING

• 修改配置文件保存退出后以test01 再做尝试,仍然不可以执行之前我们执行的命令, 执行方法应该为

• sudo /sbin/ifconfig eth0 down;

• sudo /sbin/rpm -ivh …. 此处略

• 这时提示输入密码,输入对应的账户名密码就可以看到指令生效了

• PASSWD:执行sudo指令需要输入密码

• NOPASSWD:与上面相反

• 修改配置文件让我们可以不需要密码执行sudo 指令

• vim /etc/sudoers;

• 将之前我们设置的两个用户对应的执行加上

• NETADMIN ALL=PASSWD:SOFTWARE

• PACKAGEADMIN ALL=NOPASSWD:NETWORKING

• 保存后在使用test01 账户分别执行之前的指令,那么test01在操作网络指令时需要密码,而对软件包的管理时不需要密码就可以执行了。

11、openssh基于密钥的验证方式

• 当一个网络中存在多台Linux服务器,多个管理员时。为了实现n:m 多对多的复杂管理关系。我们可以不再使用密码验证,而是基于管理主机的密钥验证。

• 首先需要在管理客户端的主机上生成公钥和私钥对。ssh-keygen 可以不用passphrase 密码短语保护

• 这样可以在当前的用户目录下生成~/.ssh/id_rsa(私钥) 和~/.ssh/id_rsa.pub(公钥)的一对密钥

• 接着可以把自己的公钥传给被管理的服务器[root@station2 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub

root@server1.example.com

• 我们登录到服务器时已经不再需要密码了。

• 观察细节:在服务器上对应的用户的主目录下

• [root@server1 ~]# cat ~/.ssh/authorized_keys 中可以看到自己传给

服务器的密钥存储在这个文件中。一行一个主机密钥。当管理员离职时可以删除对应的主机密钥。同时更改所有的服务器的密码即可。

12、xen虚拟化的实现

• 实现Linux下安装Linux的半虚拟化

• 首先为domain 0做准备,安装xen的核心,xen的后台进程以及虚拟化的管理设置工具

• yum install kernel-xen xen* virt-*

• 请指定正确的VT目录作为安装虚拟化所用的仓库

[VT]
baseurl=http://server1.example.com/pub/VT
name=Install Virtualization Environment
enabled=1

• 之后确保新的核心为默认的核心,修改/boot/grub/grub.conf配置文件。

• 重启系统后选择了支持xen的内核再次启动

• 要安装新的虚拟化,需要新建一个大小适合的分区,建议30G

• virt-manager 图形安装一次,安装时需要给定kickstart脚本,分区,内存大小,虚拟CPU数量和网络安装源(xen唯一的安装方式)kickstart → http://server1.example.com/workstation.cfg

• 请确保xend服务开启

• chkconfig xend on;service xend start;

• virt-install 可以实现命令行的方式安装-n 名称,-r 内存大小,—vcpus=虚拟CPU数量-f 安装到的空间-l安装源-x 额外的参数—force 自动回答yes,强制安装。

• virt-install -n RHCE -r 348 -f /dev/sda6 -l http://server1.example.com/pub -x ks=http://server1.example.com/workstation.cfg

• 当建立一个虚拟域但没有成功的安装完的时候,我们需要

删除了此文件后才能建立一个相同名字的虚拟域。

• rm /etc/xen/RHCE -f 所有的域配置文件都放在

/etc/xen目录下

• 如果想让特定的虚拟域随着系统的启动而启动,我们只要简单的在/etc/xen/auto 中为其创建一个快捷方式指向所对应的虚拟域的配置文件即可。

• ln -s /etc/xen/RHCE /etc/xen/auto/RHCE

13、xen虚拟化的实现的管理

• virsh进入到虚拟域的指令管理平台

• list 子命令列举虚拟域的名字; shutdown; start; 都针对list看到的虚拟域的名字操作

• 我们使用virt-viewer 连接到虚拟域

• virt-viewer RHCE

• 如果要切换其他的控制台,请点击菜单上的热键,CTRL+ALT+Fn,要想释放鼠标到Domain 0,同时按

键CTRL+ALT即可。

• virsh shutdown RHCE

• xm top查看系统的资源

14、核心开关控制

• /proc/sys目录下都是核心控制的可改写的属性

cat /proc/sys/net/ipv4/ip_forward 路由转发功能

cat /proc/sys/net/ipv4/icmp_echo_ignore_all

ICMP ping测试

• ping 127.0.0.1 可以测试ping结果

• 修改ICMP echo回应属性

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

• ping 127.0.0.1 测试ping结果

• sysctl -a | grep icmp

• sysctl -p net.ipv4.icmp_echo_ignore_all=1

• 同时我们也可以让其在启动后生效

• vim /etc/sysctl.conf

–在扩张模式中读取进vim中将适当的值修改

–:read !sysctl -a | grep icmp

• 重启系统ping 测试

14、本机syslog系统日志配置

• vim /etc/syslog.conf

–验证测试,在配置文件最后,添加

–authpriv.* /var/log/mylog.log

• 重启syslog服务

• 在其他控制台做几次错误登陆

• tail /var/log/mylog.log

• logger “message” 命令的方式产生日志

• 再次查看日志

15、发送日志到远程主机

• 远程主机上修改/etc/sysconfig/syslog

–SYSLOGD=”-r -m 0”

• 把远程主机上的syslog服务重启

• 本地主机修改/etc/syslog.conf

–authpriv.* @remotehost 这里是远程主机IP的名称

• 在本地主机上启动syslog服务,确保可以连接remotehost

• ping remotehost 最后产生登录错误做测试

• 如果无法解析主机,可以通过vim /etc/hosts

192.168.0.254 remotehost 添加主机与IP地址的对应

16、Apache安装与测试

• 通过yum网络安装httpd,httpd-doc

• yum install http*

• chkconfig —list | grep httpd

• chkconfig —level 2345 httpd on

• service httpd restart

• netstat -tpln | grep httpd 检查默认端口80

• ps aux | grep httpd 查看由apache用户执行的进程有多少个

17、修改Apache默认配置

• Listen 8080 监听端口

• StartServers 30 启动Apache进程

MaxSpareServers 100 最大启动的进程

MaxRequestPerChild 6000 每个进程的并发

请求数量

• service httpd restart

ps aux | grep httpd 查看多少个apache进程

18、Apache设置基于用户的站点

• 修改httpd.conf配置文件

UserDir disable —注释这句,

UserDir myweb — 这个为要添加在每个用户帐户下的目

录,比如mkdir /home/user01/myweb/,用户user01自

己设计的网页放在这个目录下,而用户user02的网页放在

/home/user02/myweb/

由于每个用户的主目录缺省只有自己的读权限,我们要给apache

读权限,并设定用户目录为特定的权限

chgrp apache /home/user01 -R

chmod 711 /home/user01 -R

chmod 751 /home/user01/myweb -R

restorecon ~/myweb 将目录夹的SELinux属性还原

19、Apache虚拟子目录(子目录的别名)

• 默认我们的网站的内容都放在DocumentRoot

/var/www/html之下,如果你的网页放在别的目录之下,让其变成网站下的子目录,只有定义了别

名的目录Apache才可以访问

• mkdir /www 假设新的页面放在/www之下

• <Directory /www>

……

</Directory>

• Alias /sub “/www”

测试elinks http://127.0.0.1/sub/

20、apache虚拟主机

• 在httpd.conf文件中找到VirtualHost这段复制后去掉注释,

每个虚拟主机包含一段

NameVirtualHost *:80
<VirtualHost *:80>
  ServerName domain1.com 这里是domain1
  DocumentRoot /www/domain1.com
</VirtualHost>
<VirtualHost *:80>
ServerName domain2.com 这里是domain2
DocumentRoot /www/domain2.com
</VirtualHost>

• 在修改主配置文件以后,针对配置建立目录夹

–mkdir /www/domain1.com; echo “welcome

domain1” > /www/domain1.com/index.html

–mkdir /www/domain2.com;与上面雷同生成测试页面

• 为了测试的方便,不用建立DNS对应的区域,可以在本机中修

改/etc/hosts

–127.0.0.1 www.domain1.com www.domain2.com

–将IP地址都对应自己本机,修改SELinux文件夹属性

–chcon —reference=/var/www/ /www -R

• 最后测试这两个虚拟主机

–ping www.domain1.com

–elinks http://www.domain1.com

21、apache基于目录文件的验证

• 在每个文件夹中添加隐藏文件.htaccess

• 通过http://127.0.0.1/manual文档中复制一段代码如下

AuthType Basic 基本验证方式

AuthName “Password Required” 提示信息

AuthUserFile /etc/httpd/.htpasswd 设置基于用户名验证时的数据库,此文件的生成见后

AuthGroupFile /etc/httpd/.htgroup 设置基于组验证时的组信息

Require User user01 user02 开启基于用户的认证或者

Require Group account 开启基于组的验证

l 生成AuthUserFile /etc/httpd/.htpasswd 中的文件,并添

加多个用户

htpasswd -cm /etc/httpd/.htpasswd user01

htpasswd -m /etc/httpd/.htpasswd user02

• 注意-c 用在创建文件,之后不用这个开关,否

则覆盖原来创建的帐户

• 同时在httpd.conf文件中修改对应的目录属性

<Directory /www> 你想做验证的文件夹

• AllowOverride all 不能为none,否则.htaccess文件失效

</Directory>

• 使用浏览器验证

–elinks http://127.0.0.1/www/

• 创建AuthGroupFile /etc/httpd/.htgroup 中的组文件,格式

–account: user01 user02

–组名称: 用户1 用户2 ……用户N组名称对应之前.htaccess文件中的

Require Group account

注意:基于用户验证可以不用组信息,基于组验证一定要用户AuthUserFile

赞(0) 打赏
转载请注明出处:服务器评测 » 红帽RHCE实验红宝石书(中)
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏