前提:
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/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) 系統會莫名其妙地重啓;
先裝系統,所有的操作在緊急救援模式做,用boot實現,把boot.iso倒進來,調整啓動順序,把光盤調在上邊,在boot:界面輸入linu rescue進入緊急救援模式,
chroot /mnt/sysp_w_picpath
grub-install /dev/sda
cd /boot/grub/
vim grub.cnf
default=0
timeout=3
splashp_w_picpath=(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