前提:
1、IP地址为172.16.6.1, 子网掩码为255.255.0.0,网关为172.16.0.1,DNS服务器为172.16.0.1,主机名为stu6.example.com
2、yum源为http://172.16.0.1/yum/{Server,Cluster,ClusterStorage,VT,errata};或自己的光盘挂载
系统上有两块硬盘,下面用的的均以/dev/sdb为例
1、安装操作系统,要求:
1)新建一个虚拟机,要求内存大于等于512M,虚拟磁盘大小为150G,网卡为桥接模式;
2)下载ftp://172.16.0.1/pub/images/boot.iso文件至物理机,并以之作为启动盘启动安装过程;
3)在安装启动界面boot:提示符后面输入(引号里面的内容):"linux ip=172.16.X.1 netmask=255.255.0.0 gateway=172.16.0.1 dns=172.16.0.1 ks=http://172.16.0.1/exam.cfg"
4)安装完成后需在事先排除系统故障,而后继续后面的题目;
a) root用户密码未知,需要修改为你所需要的密码;
b) grub损坏;
c) 系统会莫名其妙地重启;
先装系统,所有的操作在紧急救援模式做,用boot实现,把boot.iso倒进来,调整启动顺序,把光盘调在上边,在boot:界面输入linu rescue进入紧急救援模式,
chroot /mnt/sysimage
grub-install /dev/sda
cd /boot/grub/
vim grub.cnf
default=0
timeout=3
splashimage=(hd0.0)/grub/splash.xpm.gz
title RHEL 5.4
root (hd0,0)
kernel /vmlinux-2.6.18-164.e15 ro root=/dev/vol0/root quiet
initrd /initrd-2.6.18-164.e15.img
vim /etc/inittab
该对应的级别
vim /etc/rc.loacl
#shutdown -r now
passwd 更该管理员的密码
sync
exit
reboot
切换启动顺序
2、创建一个空间大小为2G的RAID5设备,并且此设备具有一个空闲的备份磁盘;要求此设备开机时可以自动挂载至/backup目录;
分析:RAID5设备至少要有3块,再加一块空闲的共4块,新建4个分区,改变类型为fd
fdisk -l
fdisk /dev/sdb
n
+1G
t
5
fd
w
partprobe /dev/sdb
mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb{5,6,7,8}创建
cat /proc/mdstat 查看状态
mdadm -D /dev/md0 查看详细信息
mkdir /backup 创建目录
mke2fs -j /dev/md0 格式化
vim /etc/fstab开机自动挂载
/dev/md0 /backup ext3 default 0 0
mount -a 挂载
mount 查看
ls /backup
3、创建一个由两个物理卷组成的大小为3G的卷组myvg,要求其PE大小为16M;而后在此卷组中创建一个大小为2G的逻辑卷lv1,此逻辑卷要能在开机后自动挂载至/users目录;
分析:两个物理卷之和为3G,可以任意分配,类型为8e
fdisk /dev/sdb
n
2G
n
1G
t
9
8e
t
10
8e
w
partprobe /dev/sdb
pvcreate /dev/sdb{9,10}
vgcreate -s 16m myvg /dev/sdb{9,10}
vgdisplay
lvcreate -L 2G -n lv1 myvg
lvdisplay 查看
mke2fs -j -L LV1 /dev/myvg/lv1
mkdir /users
vim /etc/fstab
LABEL=LV1 /users ext3 defaults 0 0
mount -a
mount
4、写一个小脚本,并执行;要求实现:
(1)新建ID为3306的组mysql;新建ID为3306的用户mysql,要求其家目录为/users/mysql,shell为/bin/nologin;
(2)新建组dba;新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
(3)新建用户centos,其家目录为/users/centos,密码同用户名;
(4)用户gentoo和centos均以dba为其附加组;
vim myuser.sh
#!/bin/bash
groupadd -g 3306 mysql
useradd -u 3306 -d /users/mysql -s /sbin/nologin mysql
groupadd dba
useradd -G dba -d /users/gentoo
echo gentoo | passwd --stdin gentoo
useradd -G dba -d /users/centos
echo centos | passwd --stdin centos
bash -n myuser.sh 检查语法
bash myuser.sh
id mysql 验证
id centos
5、创建一个1G的分区,文件系统为ext3,卷标为DATA,块大小为1024,预留管理空间为磁盘分区的3%,要求开机后可以自动挂载至/data目录;
fdisk /dev/sdb
n
+1G
w
partprobe /dev/sdb
mke2fs -j -L DATA -b 1024 -m 3 /dev/sdb11
tune2fs -l /dev/sdb11 查看
mkdir /data
vim /etc/fstab
LABEL=DATA /data ext3 defaults 0 0
mount -a
mount
6、缩减前面创建的逻辑卷lv1的大小至1G;要求gentoo的家目录等不能丢失;
df -lh 查看
umount /users 卸载
df -lh
e2fsck -f /dev/myvg/lv1 做强制性检查
resize2fs /dev/myvg/lv1 1G 缩减逻辑边界
lvreduce -L 1G /dev/myvg/lv1 缩减物理边界
mount -a 挂载
mount
df -lh
7、复制文件/etc/fstab至/data目录,其属主为root用户,属组为root组;要求此文件可以被任何人读取,可以被gentoo读写,但centos没有任何访问权限;
umount /data/
cp /etc/fstab /data
ls -l /data
setfacl -m u:gentoo:rw- /data/fstab
setfcal -m u:centos:--- /data/fstab
8、配置centos用户能以root用户的身份执行useradd,userdel和usermod命令,而后以centos的身份创建一个新用户opensuse;
visudo
centos ALL=(root) /usr/sbin/useradd,/usr/sbin/usrmod,/usr/sbin/userdel
su - centos
sudo /usr/sbin/useradd opensuse
tail /etc/passwd验证
9、配置本地的yum源指向,而后安装mysql-server和httpd软件包;
说明:用自己的光盘挂载当yum源
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom
vim /etc/yum.repos.d/service.repo
[base]
name=Server
baseurl=file:///media/cdrom/Server
gpgcheck=0
enable=1
yum list all
yum install mysql-server
yum install httpd
10、下载并编译安装axel;软件包所在的地址:ftp://172.16.0.1/pub/Sources/downloader;要求:
1)软件的默认安装目录为/usr/local/axel;
2)安装完成以后,所有用户可以直接执行axel命令,而不用输入命令的完整的路径;
lftp 172.16.0.1
cd /pub/Sources/downloader/
ls
get axel-2.4.tar.gz
bye
tar xf axel-2.4.tar.gz
ls
cd axel-2.4
./configure --prefix=/usr/local/axel
make
make install
vim /etc/profile
PATH=$PATH:/usr/local/axel/bin
source /etc/profile重读文件
11、写一个脚本:
1)使用函数实现:
判断一个用户是否存在,用户名通过参数传递而来;
如果存在,就显示此用户的shell和UID
如果不存在,就说此用户不存在;
2)主调函数中,一直提示用户输入用户名,并显示;直到用户输入q或Q退出;
#!/bin/bash
SHOWUSER() {
if grep "${1}:" /etc/passwd &> /dev/null; then
echo "SHELL: `grep "^${1}:" /etc/passwd | cut -d: -f7`"
echo "UID: `grep "^${1}:" /etc/passwd | cut -d: -f3`"
else
echo "$1 is not exits"
fi
}
read -p "Username: "MYUSER
until [[ "$MYUSER" == [qQ] ]];do
SHOWUSER $MYUSER
read -p "Username: " MYUSER
done
12、新建目录/backup/test,其属组为dba,且此组具有读写权限,其它用户没有任何权限;dba组成员在此目录中创建的文件的属组都需要是dba,且dba组中每个成员在此目录中只能删除自己的文件;
mkdir /backup/test
cd /backup
chown :dba test
chmod g+w test/
chmod o=--- test/
chmod 3770 test/
cd
su centos 验证
cd /backup/test
touch q.centos
ll
13、配置当前主机内核参数,以允许在不同的网络接口间转发数据包;要求此项配置在重新启动系统后不会失效。
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
cat /proc/sys/net/ipv4/ip_forward
14、启用本机的VNC服务,并确保root可用可以使用redhat作为密码登录系统;
yum install vnc-server安装软件包
vncserver & 启动服务
vncpasswd 配置密码
redhat
vncserver &
cd .vnc/ 显示桌面
vim xstartup
twm &改为gnome-session &
vncserver -kill :1
vncserver &
chkconfig vncserver on开机自动启动
15、配置本机每隔两天在凌晨3点20备份一次/etc目录,备份文件存放至/backup目录,文件名形如:etc-2011-11-20.tar.bz2;
which tar
crontab -e
20 3 */3 * * /bin/tar jcf /backup/etc-`data +%F`.tar.bz2 /etc/*
16、找到/etc目录下属于root用户且至少7分钟没有访问过的普通文件,将它们复制到/tmp/test目录;/tmp/test目录需要自己事先创建;
mkdir /tmp/test
find /etc -user root -amin +7
find /etc -user root -amin +7 -exec cp {} /tmp/test \;
17、为gentoo用户的家目录创建磁盘使用限额,要求其能够使用的磁盘空间最大为50M,软限制为30M;要求完成后验正其有效性;
finger gentoo 查看下家目录
vim /etc/fstab
LABEL=LV1 /users ext3 default,usrquota 0 0
mount -o remount /users
quotacheck -cmu /users/
ls /users/
quotaon /users
edquota -u gentoo
soft hard
30720 51200
su - gentoo
quota 查看软硬限额
dd if=/dev/zero of=./binfile.1 bs=1M count=29
以下为选做题,至少选做其中一题;
18、(选做题)写一个脚本getinterface.sh,脚本可以接受参数(i,I,a),完成以下任务:
(1)使用以下形式:getinterface.sh [-i interface|-I IP|-a]
(2)当用户使用-i选项时,显示其指定网卡的IP地址;
(3)当用户使用-I选项时,显示其后面的IP地址所属的网络接口;
(4)当用户单独使用-a选项时,显示所有网络接口及其IP地址(lo除外);
#!/bin/bash
SHOWIP() {
if ifconfig -a | grep "^[^[:space:]]" | cut -d' ' -f1 | grep "$1" &> /dev/null; then
ifconfig $1 | grep "inet addr:" | cut -d: -f2 | cut -d' ' -f1
[ $? -eq 0 ] && return 0
else
return 12
fi
}
SHOWNETWORK() {
if ifconfig -a | grep -B 2 $1 &> /dev/null; then
ifconfig -a | grep -B 2 $1 | head -1 | cut -d' ' -f1
[ $? -eq 0 ] && return 0
else
return 13
fi
}
while getopts ":i:I:a" OPT; do
case $OPT in
i)
SHOWIP $OPTARG
[ $? -eq 12 ] && echo "Device error"
;;
I)
SHOWNETWORK $OPTARG
[ $? -eq 13 ] && echo "Wrong ip"
;;
a)
for END in `fconfig -a | grep "^[^[:space:]]" | cut -d' ' -f1 | grep -E -v "lo|sit0"`; do
echo "$END: `SHOWIP $END`"
done
;;
*)
echo "Usage: getinterface.sh {-i interface|-I IP|-a"
exit 5
;;
esac
done
19、(选做题)写一个脚本,完成以下功能:
(1)此脚本能反复地提示用户输入一个二进制命令的名字,如mount、cp等,用户每输入一个命令,则按照后面的要求将其复制到指定的目录;如果命令不存在,则提示用户命令不存在,请继续输入;如果用户输入的为q或者Q,则退出脚本;
说明:这些文件位于/bin, /sbin, /usr/bin, /usr/sbin目录中,但具体哪个命令在哪个目录中,可以使用which命令查看到。
(2)如果不存在,则创建空目录/tmp/mylinux,否则,提示用户删除y/n;如果用户选择不删除,则退出;如果用户选择了删除,则在/tmp/mylinux中创建子目录bin, sbin, usr, usr/bin, usr/sbin
(3)将对应的二进制文件复制至相应的/tmp/mylinux目录的某个子目录中去。比如,将/bin/cut复制到/tmp/mylinux/bin目录,把/sbin/mke2fs复制到/tmp/mylinux/sbin目录中;
vim com.sh
#!/bin/bash
read -p "please input command: " COMM
untl [ "$COMM" = "q"] || [ "$COMM" = "Q" ]; do
DPATH=`which $COMM | grep -o "/.*"`
APATH=`which $COMM | grep -o "/.*" | sed 's@\(.*\)/[^[:space:]]\{1,\}@\1@g'`
if [ -d /tmp/mylinux ];then
read -p "please your choice: " CHOICE
if [ "$CHOICE" = "y" ];then
mkdir -p /tmp/mylinux/{bin,sbin,usr,usr/{bin,sbin}}
cp $DPATH /tmp/mylinux/$APATH
else
exit 3
fi
fi
[ -d /tmp/mylinux$APATH ] && cp $DPATH /tmp/mylinux/$APATH
read -p "please input command: " COMM
done