rh131.基礎練習


前提:
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

 

 

 

 

 

 

 

 

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章