兄弟們,明天就要考試了,今天練的腫麼樣了,吼吼,我終於搞定了.如今共享一下答案.但願你們都能拿100分.加油,同時也但願你們幫忙糾正下錯誤.
前提: 1、每位同窗的IP地址爲172.16.X.1, 子網掩碼爲255.255.0.0,網關爲172.16.0.1,DNS服務器爲172.16.0.1,主機名爲stuX.magedu.com,其中X爲你的座位號; 2、yum源爲http://172.16.0.1/yum/{Server,Cluster,ClusterStorage,VT,errata}; 一、安裝操做系統,要求: 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 刪除最後一行 二、建立一個空間大小爲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 三、建立一個由兩個物理卷組成的大小爲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 四、完成如下任務: (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 五、建立一個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 六、縮減前面建立的邏輯卷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 七、複製文件/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 八、配置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 九、配置本地的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 十、下載並編譯安裝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 十二、新建目錄/backup/test,其屬組爲magedu,且此組具備讀寫權限,其它用戶沒有任何權限;magedu組成員在此目錄中建立的文件的屬組都須要是magedu,且magedu組中每一個成員在此目錄中只能刪除本身的文件; 解答: # mkdir /backup/test # cd /backup # chown :magedu test # chmod g=rwx,o=,g+s,o+t test 1三、配置當前主機內核參數,以容許在不一樣的網絡接口間轉發數據包;要求此項配置即刻生效而且在從新啓動系統後不會失效。 解答: # vi /etc/sysctl.conf 把net.ipv4.ip_forward = 0 改成net.ipv4.ip_forward = 1 # sysctl -p 1四、啓用本機的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 & 1五、配置本機每隔兩天在凌晨3點20備份一次/etc目錄,備份文件存放至/backup目錄,文件名形如:etc-2011-11-20.tar.bz2; # 20 3 */3 * * tar -cjf /backup/etc-`date +%F`.tar.bz2 /etc/ 1六、使用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 {} \; 1七、爲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 1八、爲邏輯卷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/ 1九、寫一個腳本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.一、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 <<EOF ####################################################### 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