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/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

 

 

 

 

 

 

 

 

 


 

你可能感兴趣的:(职场,休闲,rh131.基础练习)