感谢支持
我们一直在努力

RHCE认证培训+考试七天实录(六)

第六天(12月1日)

今天是课程学习的最后一天,主要内容是关于增强用户安全性、编写shell脚本以及故障排错。

RHCE认证培训+考试七天实录 系列文章 http://www.linuxidc.com/search.aspx?where=nkey&keyword=15815

1、增强用户安全性

Linux系统中的root用户权限过大,所以在实际使用中一般都是以普通用户的身份登录,当需要时可以切换到root用户身份。切换用户身份使用su命令。

但是我们可能并不希望所有用户都能切换到root身份,而是只想指定某个用户可以切换,比如只允许zhangsan用户使用su命令切换身份。

首先修改配置文件/etc/pam.d/su,然后将zhangsan加入到wheel组(只有该组的成员可以切换)。

RHCE认证培训+考试

利用su命令切换到root用户,必须要输入root用户的密码,这样也不利于系统安全性,所以更常被使用的是sudo命令。

sudo命令的作用主要在于能够允许经过授权的个别普通用户以root权限执行一些授权使用的管理命令。

RHCE认证培训+考试

如以普通用户zhangsan的身份创建用户,会提示没有权限:

[zhangsan@localhost ~]$ useradd test

-bash: /usr/sbin/useradd: 权限不够

下面使用sudo命令以root权限去执行命令。注意,普通用户使用sudo执行命令时会要求提供自己的密码进行验证。

[zhangsan@localhost ~]$ sudo useradd test

[sudo] password for zhangsan:

zhangsan is not in the sudoers file. This incident will be reported.

zhangsan使用sudo命令仍然无法创建用户,这是因为在RHEL中只有被授权的用户才能执行sudo命令,而且使用sudo也只能执行那些被授权过的命令。

所以要使用sudo命令首先必须要经过管理员的授权设置,需要修改配置文件“/etc/sudoers”。

例如授权普通用户zhangsan可以通过sudo方式执行所有的命令:

zhangsan ALL=ALL

授权zhangsan只能执行useradd和userdel命令:

zhangsan ALL=/usr/sbin/useradd,/usr/sbin/userdel

为了省去普通用户执行sudo命令时需要输入密码的麻烦,可以这样设置:

zhangsan ALL=NOPASSWD:/usr/sbin/useradd,/usr/sbin/userdel

例题:设立组帐号“managers”,授权组内的各成员用户可以添加、删除、更改用户帐号。

操作步骤:

(1)首先创建managers组,并向组中添加2个用户:natasha和harry。

[root@localhost ~]# groupadd managers

[root@localhost ~]# useradd natasha

[root@localhost ~]# passwd natasha

[root@localhost ~]# gpasswd -a natasha managers

[root@localhost ~]# useradd harry

[root@localhost ~]# passwd harry

[root@localhost ~]# gpasswd -a harry managers

(2)配置/etc/sudoers文件。

 # vim /etc/sudoers

RHCE认证培训+考试

在组名的前面要加上%。

(3)以natasha用户身份进行测试。

[root@localhost ~]# su – natasha

[natasha@localhost ~]$ useradd user1

-bash: /usr/sbin/useradd: 权限不够

[natasha@localhost ~]$ sudo useradd user1    可以执行useradd命令

[natasha@localhost ~]$ sudo touch test.txt    不可以执行touch命令

Sorry, user natasha is not allowed to execute ‘/bin/touch test.txt’ as root on localhost.localdomain.

2、编写shell脚本
 
shell脚本是Linux中非常重要的一项应用,但是也比较难以掌握。
 
在编写shell脚本时的一些基本问题:
 
(1)文件的第一行必须是“#!/bin/bash”,表示用bash shell解释执行脚本。
 
(2)脚本编写完之后,必须使文件可执行,可以用chmod命令赋予其可执行权限。
 
(3)脚本文件名一般以“.sh”结尾。
 
(4)如何执行脚本程序。一种方法是将脚本文件所在目录添加进路径变量PATH中,另一种方法是指定脚本文件路径,如要执行当前目录下的一个名为test.sh的脚本可以使用“./test.sh”的形式。一般习惯采用后一种方式。
 
shell脚本中的一些基本概念:
 
(1)变量,变量名一般用大写字母。显示变量的值用$,如果变量名中有空格,应该“${变量名}”。如:
 
NAME=VBird
 
echo $name        结果:VBird
 
(2)双引号、单引号、倒引号
 
双引号表示弱引用,单引号表示强引用,倒引号里的命令会被执行。如:
 
MYNAME=”$NAME its me”
 
echo $MYNAME      结果:VBird its me
 
MYNAME=’$NAME its me’
 
echo $MYNAME      结果:$NAME its me
 
双引号里的变量会被执行,单引号里的变量成了字符本身。
 
TODAY=`date`
 
echo $TODAY
 
2012年 11月 08日 星期四 01:17:49 CST
 
倒引号里的命令会被执行。
 
TODAY=`date +%F`      指定只显示日期
 
echo $TODAY
 
2012-11-08
 
touch aa.$TODAY    创建以当前日期结尾的文件
 
ll aa.*
 
-rw-r–r–. 1 root root 0 11月 8 01:21 aa.2012-11-08
 
 
 
例题:创建一个名为/root/script.sh的脚本,让其提供以下特性:
 
当运行/root/script.sh all时,输出none。
 
当运行/root/script.sh none时,输出all。
 
当没有任何参数或者参数不是all或none时,其向stderr产生以下的输出:/root/script.sh all | none
 
操作步骤:
 
首先生成脚本文件:
 
# vim /root/script.sh
 


case是多分支选择语句,$1表示执行脚本时后面跟的第一个参数。
 
保存退出,赋予执行权限:
 
# chmod 755 script.sh
 
测试:
 
[root@localhost ~]# ./script.sh none
 
all
 
[root@localhost ~]# ./script.sh all
 
none
 
[root@localhost ~]# ./script.sh afdadfda
 
/root/script.sh all | none

3、Linux引导过程

(1)启动模式与引导流程

Linux默认有7种运行模式:

0:关机状态

1:单用户模式

2:字符界面的多用户模式(不支持网络)

3:字符界面的完整多用户模式

4:未分配使用

5:图形界面的多用户模式

6:重新启动查看运行模式

其中最常用的是1、3、5三种模式。将启动模式设为5,开机自动进入图形界面;设为3,开机自动进入字符界面;设为0,进入单用户模式,用于密码破解或故障修复。

执行runlevel命令可以查看当前工作模式:

[root@localhost rc5.d]# runlevel

N 5

修改配置文件“/etc/inittab”可以改变启动模式(修改Id后面的数字):

id:5:initdefault:

Linux系统的引导流程:

RHCE认证培训+考试

在读取/etc/inittab文件确定启动模式之后,会依次执行三个脚本文件:

/etc/rc.d/rc.sysinit:由init进程调用执行,完成设置网络、主机名、加载文件系统等初始化工作。

/etc/rc.d/rc:选择哪种启动模式,就执行哪个目录中的脚本文件,用于加载或终止系统服务。

/etc/rc.local:由rc脚本调用执行,保存用户定义的需开机后自动执行的命令。

(2)grub引导程序

微软的引导程序ntldr不兼容Linux,如果要安装Windows和Linux双系统,应该先装Windows,此时Windows会将ntldr写入MBR主引导扇区,然后再装Linux,Linux会将grub写入MBR主引导扇区,并覆盖ntldr。由于grub兼容Windows,这样就可以让双系统共存。而如果先安装Linux,再装Windows,MBR主引导扇区里最后存放的是ntldr,这样就只能启动Windows系统。

在RHSCA的课程中介绍过,在系统启动时可以通过设置grub进入单用户模式对系统进行修复,如破解root用户密码等。但这样任何人都可以修改root用户密码,会降低系统安全性,所以可以为grub设置密码,这样只有输入grub密码才能设置进入单用户模式。

设置grub密码需要修改配置文件/etc/grbu.conf

# vim /etc/grub.conf

RHCE认证培训+考试

在title行的上面增加一行:

password=abc123,

如果像上面这样将密码用明文存放,也会降低安全性,所以这里一般都是设置的MD5加密后的密码。

在Linux中可以执行“grub-md5-crypt”命令对字符串进行MD5加密:

[root@localhost ~]# grub-md5-crypt

Password:

Retype password:

$1$sb.zu0$654EV43pY35h6a9BVnaBH0

在系统启动时选择进入grub就要按p键后输入密码:

RHCE认证培训+考试

正确输入密码之后才可以按e键设置进入单用户模式:

RHCE认证培训+考试

(3)利用救援模式修复系统

救援模式类似于Windows中的WinPE,可以不依赖硬盘而用别的介质启动系统,从而对系统进行修复,可以通过系统安装光盘或者是网络来进入救援模式。

例:利用救援模式修复inittab文件错误。

这里先人为地造成一个故障:将/etc/inittab文件中的启动模式改为9,这样就会导致系统无法启动。下面利用系统安装光盘进入救援模式来进行修复。

放入光盘,并在BIOS中设置从光盘引导,进入光盘引导界面,选择“Rescue Installed System”:

RHCE认证培训+考试

介质类型选择“Local CD/DVD”:

RHCE认证培训+考试

进入救援模式后还无法直接修改配置文件,因为此时的系统根目录是由救援模式生成的,而不是真正的根目录(类似于WinPE中生成的虚拟C盘),真正的系统根目录被挂载到了/mnt/sysimage目录中,所以需要执行“chroot /mnt/sysimage”命令切换到真正的系统根目录,然后就可以修改配置文件了。修改完成后,重启系统即可。

赞(0) 打赏
转载请注明出处:服务器评测 » RHCE认证培训+考试七天实录(六)
分享到: 更多 (0)

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

支付宝扫一扫打赏

微信扫一扫打赏