兄弟们,明天就要考试了,今天练的肿么样了,吼吼,我终于搞定了.现在共享一下答案.希望大家都能拿100分.加油,同时也希望大家帮忙纠正下错误.
前提:
一、每位同学的IP地址为172.16.X.1, 子网掩码为255.255.0.0,网关为172.16.0.1,DNS服务器为172.16.0.1,主机名为stuX.magedu.com,其中X为你的座位号;
二、yum源为http://172.16.0.1/yum/{Server,Cluster,ClusterStorage,VT,errata};
1、安装操作系统,要求:
1)新建一个虚拟机,要求内存大于等于512M,虚拟SCSI磁盘大小为320G,有两块网卡:第一块网卡为桥接模式,第二块网卡为仅主机模式;
2)下载ftp://172.16.0.1/pub/p_w_picpaths/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) 系统会莫名其妙地重启;
解答:
#挂载光盘 linux rescue
# chroot /mnt/sysp_w_picpath
# passwd 改root的密码
# mv /var/tmp/grub.test /boot/grub/grub.conf
# grub
# root (hd0,0)
# setup (hd0)
# quit
# vi /etc/rc.d/rc.local 删除最后一行
2、创建一个空间大小为10G的RAID5设备;其chuck大小为32k;要求此设备开机时可以自动挂载至/backup目录;
# mdadm -C /dev/md1 -l 5 -n 3 -x 1 -c 32 -a yes /dev/sda{5,6,7,8}
# mkfs.ext3 /dev/md1
# mkdir /backup
# echo "/dev/md1 /backup ext3 defaults 0 0" >>/etc/fstab
3、创建一个由两个物理卷组成的大小为8G的卷组myvg,要求其PE大小为8M;而后在此卷组中创建一个大小为4G的逻辑卷lv1,此逻辑卷要能在开机后自动挂载至/users目录;
解答:
# fdisk /dev/sda
# partprobe
# pvcreate /dev/sda{9,10}
# vgcreate /dev/myvg -s 8M /dev/sda{9,10}
# lvcreate -L 4G /dev/myvg -n lv1
# mke2fs -j /dev/myvg/lv1
# echo "/dev/myvg/lv1 /users ext3 defaults 0 0" >>/etc/fstab
4、完成以下任务:
(1)新建系统组mysql;新建系统用户mysql,要求其没有家目录且shell为/sbin/nologin;
# useradd -r -s /sbin/nologin mysql
(2)新建GID为600的组magedu;新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
# groupadd -g 600 magedu
# useradd gentoo -d
# useradd -d /users/gentoo gentoo && echo "gentoo"|passwd --stdin gentoo
(3)新建用户centos,其家目录为/users/centos,密码同用户名;
# useradd -d /users/centos centos && echo "centos"|passwd --stdin centos
(4)新建用户www,其家目录为/users/www;
# useradd -d /users/www www
(5)用户gentoo和centos均以magedu为其附加组;
# usermod -a -G magedu gentoo && usermod -a -G magedu centos
5、创建一个2G的分区,文件系统为ext3,卷标为DATA,块大小为1024,预留管理空间为磁盘分区的3%,要求开机后可以自动挂载至/data目录,并且自动挂载的设备要使用卷标进行引用;
解答:
# fdisk /dev/sda
# partprobe
# mke2fs -L DATA -b 1024 -m3 -j /dev/sda11
# echo "LABEL=DATA /data ext3 defaults 0 0" >>/etc/fstab
6、缩减前面创建的逻辑卷lv1的大小至2G;要求gentoo的家目录等不能丢失;缩减完成后以gentoo用户下载http://172.16.0.1/pub/Sources/new_lamp/httpd-2.2.19.tar.bz2至gentoo自己的家目录;
解答:
# e2fsck -f /dev/myvg/lv1
# resize2fs /dev/myvg/lv1 2G
# lvreduce -L 2G /dev/myvg/lv1
# mount /dev/myvg/lv1 /users/
# su - gentoo
# wget http://172.16.0.1/pub/Sources/new_lamp/httpd-2.2.19.tar.bz2
7、复制文件/etc/rc.d/rc.sysinit至/data目录,其属主为root用户,属组为root组;要求此文件可以被任何人读取,可以被gentoo用户和magedu组读写,但centos没有任何访问权限;
解答:
# mount -o remount,acl /dev/sda11 /data
# cp /etc/rc.d/rc.sysinit /data/
# chown root.root rc.sysinit
# chmod o=w rc.sysinit
# setfacl -m u:gentoo:rw rc.sysinit
# setfacl -m g:magedu:rw rc.sysinit
# setfacl -m u:centos:--- rc.sysinit
8、配置centos用户能以root用户的身份执行useradd,userdel、usermod和passwd命令(但不能修改root用户的密码)且命令执行时不需要输入密码;而后以centos的身份删除用户www,但不要删除其家目录;
解答:
# visudo 在最后新增如下一行
centos ALL=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd, ! /usr/bin/passwd root
# su - centos
# sudo /usr/sbin/userdel www
9、配置本地的yum源指向,而后安装mysql-server和httpd软件包;
解答:
[Server]
name=Server
baseurl=http://172.16.0.1/yum/Server
gpgcheck=0
[Cluster]
name=Cluster
baseurl=http://172.16.0.1/yum/Cluster
gpgcheck=0
[ClusterStorage]
name=ClusterStorage
baseurl=http://172.16.0.1/yum/ClusterStorage
gpgcheck=0
[VT]
name=VT
baseurl=http://172.16.0.1/yum/VT
gpgcheck=0
[errata]
name=errata
baseurl=http://172.16.0.1/yum/errata
gpgcheck=0
# yum install mysql-server httpd
10、下载并编译安装axel;软件包所在的地址:ftp://172.16.0.1/pub/Sources/downloader;要求:
1)软件的默认安装目录为/usr/local/axel;
2)安装完成以后,所有用户可以直接执行axel命令,而且不用输入命令的完整的路径;
解答:
# wget ftp://172.16.0.1/pub/Sources/downloader/axel.2.4.tar.gz
# tar xf axel.2.4.tar.gz
# cd axel.2.4
# ./configure --prefix=/usr/local/exel
# make
# make install
echo "export PATH=$PATH:/usr/local/axel/bin" >>/etc/profile
12、新建目录/backup/test,其属组为magedu,且此组具有读写权限,其它用户没有任何权限;magedu组成员在此目录中创建的文件的属组都需要是magedu,且magedu组中每个成员在此目录中只能删除自己的文件;
解答:
# mkdir /backup/test
# cd /backup
# chown :magedu test
# chmod g=rwx,o=,g+s,o+t test
13、配置当前主机内核参数,以允许在不同的网络接口间转发数据包;要求此项配置即刻生效并且在重新启动系统后不会失效。
解答:
# vi /etc/sysctl.conf 把net.ipv4.ip_forward = 0 改为net.ipv4.ip_forward = 1
# sysctl -p
14、启用本机的VNC服务,并确保root可用可以使用redhat作为密码登录系统;
# yum install vnc-server
# vncpasswd
redhat
redhat
# vncserver &
vi /root/.vnc/xstartup
去年注释
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
twn改成gnome-session
# vncserver -kill :1
# vncserver &
15、配置本机每隔两天在凌晨3点20备份一次/etc目录,备份文件存放至/backup目录,文件名形如:etc-2011-11-20.tar.bz2;
# 20 3 */3 * * tar -cjf /backup/etc-`date +%F`.tar.bz2 /etc/
16、使用find命令完成如下任务:
(1)找到/etc目录下属于root用户且至少7分钟没有访问过的普通文件,并将它们复制到/tmp/test目录;
要求:/tmp/test目录需要自己事先创建,并且为其创建符号链/users/test;
(2)找到/users目录下所有没有属主且没有属组的文件,并将其属组修改为gentoo,将其属组修改为magedu;
# mkdir /tmp/test && ln -s /tmp/test /users/test
# find /etc/ -user root -amin +7 -type f -exec cp {} /tmp/test/ \;
# find /users/ -nouser -nogroup -exec chown gentoo:magedu {} \;
17、为centos用户的家目录创建磁盘使用限额,要求其能够使用的磁盘空间最大为100M,软限制为120M;要求完成后验正其有效性;
# mount -o remount,usrquota,grpquota /users/
# quotacheck -cmug /users/
# setquota -u centos 102400 122880 0 0 -a /users/
# su - centos
# dd if=/dev/zero of=./centos.quota bs=30M count=1
# dd if=/dev/zero of=./centos.quota.1 bs=30M count=1
# dd if=/dev/zero of=./centos.quota.2 bs=30M count=1
# dd if=/dev/zero of=./centos.quota.3 bs=30M count=1
18、为逻辑卷lv1创建快照卷lv1_snap,要求此卷只读,且大小为1G;而后通过此卷将数据备份至/backup目录归档压缩存放;
# lvcreate -s -L 1G -n lv1_snap -p r /dev/myvg/lv1
# mount /dev/myvg/lv1_snap /mnt/
# tar -cjf /backup/lv1_snap.tar.bz2 /backup/
19、写一个脚本analyzelog.sh,完成日志分析:
说明:此脚本可以接受选项(i,d,t,a),使用格式:analyzelog <-i IP|-d DATE|-t TYPE|-a> LOG_FILE :
(1)当用户使用选项-i时,统计出LOG_FILE文件中指定IP地址的访问次数(通常每一行为一次);
(2)当用户使用选项-d时,统计出LOG_FILE文件中指定日期(某一天,如:16/Feb/2012)内每个IP地址访问的次数;如:
192.168.0.1:33
192.168.0.195:17
...
(3)当用户使用选项-t时,统计出LOG_FILE文件中以后缀后指定类型的文件(如.png表示png格式的图片)被访问的次数;
(4)当用户使用选项-a时,统计出LOG_FILE文件中每个IP地址访问的次数;
样例日志文件为access_log、access_log.1、access_log.2,下载地址为:ftp://172.16.0.1/pub/docs
#!/bin/bash
# Author: Honway.Liu
# Date: 2012-03-02
# Description:
###########################################
########## Script Start #################
###########################################
#Part 1: Define some function
###########################################
ACCESS_COUNT()
{
echo "The $OPTARG access count: `grep $OPTARG $FILENAME | wc -l`"
}
DATE_COUNT()
{
echo "The $OPTARG access count list:"
cat $FILENAME | grep $OPTARG | cut -d' ' -f1 | sort | uniq -c | sort -n | awk -F ' ' '{print $2 ":\t"$1 }'
}
TYPE_COUNT()
{
T=`cat $FILENAME | cut -d' ' -f7 | grep ${OPTARG}$ | wc -l`
echo "The $OPTARG access aount: $T"
}
ALL_IP_COUNT()
{
cat $FILENAME | cut -d' ' -f1 |sort|uniq -c| sort -n|awk -F ' ' '{print $2 ":\t"$1 }'
}
Usage()
{
cat <
Usage :$0 <-i IPADDR|-d DATE|-t FILETYPE|-a> FILENAME"
Accept date type: 01/Mar/2012
#######################################################
EOF
}
# Part 2: Please give a option else whill exit
if [ $# -le 1 ]; then
Usage
exit
fi
########################################################
# Part 3: Main script.
while getopts ":i:d:t:a" OPT ; do
shift $[$OPTIND-1]
FILENAME=$1
if [ -z $FILENAME ]; then
Usage
exit 0
fi
case $OPT in
i) ACCESS_COUNT ;;
d) DATE_COUNT ;;
t) TYPE_COUNT ;;
a) ALL_IP_COUNT ;;
*) Usage ;;
esac
done