Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐: 强烈推荐:Ylmf OS 3.0 正式版发布附迅雷高 XP系统下硬盘安装Fedora 14图文教程
搜索:
您的位置: Linux安全网 > Linux入门 > » 正文

基础练习

来源: 张婷520 分享至:


前提:
1、每位同学的IP地址为172.16.X.1, 子网掩码为255.255.0.0,网关为172.16.0.1,DNS服务器为172.16.0.1,主机名为stuX.example.com,其中X为你的座位号;
2、yum源为http://172.16.0.1/yum/{Server,Cluster,ClusterStorage,VT,errata};

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) 系统会莫名其妙地重启;

1.在安装操作系统时,在输入3)的内容时,一定不要忘记空格,也不要输错,否则系统就不能装上了,装上之后你就会发现系统不能启动,这时,就需要重启,按F2进入bios,把第一系统启动盘改为从光盘启动,然后按f10保存退出。你可以直接使用boot.iso,也可以换一张系统盘。
在boot: 输入 linux rescue 进入紧急救援模式,排除故障,
sh-3.2# choot /mnt/sysimage
sh-3.2#ls
sh-3.2#ls /boot/grub
这时你就会发现没有grub.conf这个配着文件
sh-3.2# grub-install /dev/sda  我们需要先安装grub
sh-3.2# cd /boot/grub  接着我们就要写grub.conf这个配置文件了
sh-3.2# vim grub.conf
      default=0
      timeout=3
      splashimage=(hd0,0)/grub/splash.xpm.gz
      title Redhat Linux 5.4
             root (hd0,0)
             kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/vol0/root quiet
      initrd /initrd-2.6.18-164.e15.img
然后保存退出。在配置文件时要特别注意不要把eL(为了区分l和1,我把l写为大写L)写为e1,还有不要把voL0写为vo10。
c)系统会莫名奇妙的重启,主要是/etc/inittab文件被改变了导致的,下面我们就去修改/etc/inittab 文件
sh-3.2#vim /etc/inittab
 修改为 l3:3:wait:/etc/rc.d/rc 3
        l5:5:wait:/etc/rc.d/rc 5
sh-3.2# vim /etc/rc.local    在这个文件还有一个错误也是导致关机的原因。就是在这个配置文件中有一行为shutdown -r now ,我们需要把这一行删除了
到这里我们就把所有的错误全部排除了
sh-3.2#passwd
因为root用户密码未知,所以我们在这里直接重新为它设置密码,密码为redhat
sh-3.2# sync
sh-3.2# exit
sh-3.2# reboot 重启
接下来在把启动顺序改为从硬盘启动

 
2、创建一个空间大小为2G的RAID5设备,并且此设备具有一个空闲的备份磁盘;要求此设备开机时可以自动挂载至/backup目录;

根据题意可知,RAID5需要3块磁盘,空间利用率为n%,所以每块盘的大小为1G,因为需要一个空闲盘,所以需4块盘
[root@linuxso.com ~]# fdisk /dev/sda
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Selected partition 4
First cylinder (5367-19581, default 5367):
Using default value 5367
Last cylinder or +size or +sizeM or +sizeK (5367-19581, default 19581):
Using default value 19581

Command (m for help): n
First cylinder (5367-19581, default 5367):
Using default value 5367
Last cylinder or +size or +sizeM or +sizeK (5367-19581, default 19581): +1G
Command (m for help): n
First cylinder (5490-19581, default 5490):
Using default value 5490
Last cylinder or +size or +sizeM or +sizeK (5490-19581, default 19581): +1G
Command (m for help): n
First cylinder (5613-19581, default 5613):
Using default value 5613
Last cylinder or +size or +sizeM or +sizeK (5613-19581, default 19581): +1G

Command (m for help): n
First cylinder (5736-19581, default 5736):
Using default value 5736
Last cylinder or +size or +sizeM or +sizeK (5736-19581, default 19581): +1G
Command (m for help): t
Partition number (1-8): 5
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-8): 6
Hex code (type L to list codes): fd
Changed system type of partition 6 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-8): 7
Hex code (type L to list codes): fd
Changed system type of partition 7 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-8): 8
Hex code (type L to list codes): fd
Changed system type of partition 8 to fd (Linux raid autodetect)
Command (m for help): w
[root@linuxso.com ~]# partprobe /dev/sda
[root@linuxso.com ~]# mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sda{5,6,7,8}  创建RAID5
mdadm: array /dev/md0 started.
[root@linuxso.com ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sda7[2] sda8[3](S) sda6[1] sda5[0]
      1975680 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
     
unused devices: <none>
[root@linuxso.com ~]# mke2fs -j -L RAID5 /dev/md0 格式化
[root@linuxso.com ~]# mkdir /backup
[root@linuxso.com ~]# vim /etc/fstab  在这个文件下写入,可以使它开机挂载
LABEL=RAID5             /backup                 ext3    defaults        0 0
[root@linuxso.com ~]# mount -a  挂载一下,然后再查看一下,确保挂载上了
[root@linuxso.com ~]# mount
/dev/mapper/vol0-root on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/mapper/vol0-home on /home type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /backup type ext3 (rw)

 

3、创建一个由两个物理卷组成的大小为3G的卷组myvg,要求其PE大小为16M;而后在此卷组中创建一个大小为2G的逻辑卷lv1,此逻辑卷要能在开机后自动挂载至/users目录;

根据题意可知,我们需要新建两个分区
[root@linuxso.com ~]# fdisk /dev/sda
Command (m for help): n
First cylinder (5859-19581, default 5859):
Using default value 5859
Last cylinder or +size or +sizeM or +sizeK (5859-19581, default 19581): +1G

Command (m for help): n
First cylinder (5982-19581, default 5982):
Using default value 5982
Last cylinder or +size or +sizeM or +sizeK (5982-19581, default 19581): +2G

Command (m for help): p

Disk /dev/sda: 161.0 GB, 161061273600 bytes
255 heads, 63 sectors/track, 19581 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        5235    41945715   8e  Linux LVM
/dev/sda3            5236        5366     1052257+  82  Linux swap / Solaris
/dev/sda4            5367       19581   114181987+   5  Extended
/dev/sda5            5367        5489      987966   fd  Linux raid autodetect
/dev/sda6            5490        5612      987966   fd  Linux raid autodetect
/dev/sda7            5613        5735      987966   fd  Linux raid autodetect
/dev/sda8            5736        5858      987966   fd  Linux raid autodetect
/dev/sda9            5859        5981      987966   83  Linux
/dev/sda10           5982        6225     1959898+  83  Linux

Command (m for help): t
Partition number (1-10): 9
Hex code (type L to list codes): 8e   
Changed system type of partition 9 to 8e (Linux LVM)

Command (m for help): t
Partition number (1-10): 10
Hex code (type L to list codes): 8e
Changed system type of partition 10 to 8e (Linux LVM)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@linuxso.com ~]# partprobe /dev/sda
下面就可以开始创建逻辑卷了
[root@linuxso.com ~]# pvcreate /dev/sda{9,10}
  Physical volume "/dev/sda9" successfully created
  Physical volume "/dev/sda10" successfully created
[root@linuxso.com ~]# vgcreate -s 16m myvg /dev/sda{9,10}
  /dev/hdc: open failed: Read-only file system
  /dev/cdrom: open failed: Read-only file system
  Attempt to close device '/dev/cdrom' which is not open.
  Volume group "myvg" successfully created
[root@linuxso.com ~]# vgdisplay
  --- Volume group ---
  VG Name               myvg
  System ID            
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               2.80 GB
  PE Size               16.00 MB
  Total PE              179
  Alloc PE / Size       0 / 0  
  Free  PE / Size       179 / 2.80 GB
  VG UUID               uy2ufI-PnCi-AF2X-U5Bg-tKsn-xTJb-QT9VT1

挂载
[root@linuxso.com ~]# mkdir /users
[root@linuxso.com ~]# vim /etc/fstab
LABEL=LV1               /users                  ext3    defaults        0 0
[root@linuxso.com ~]# mount -a
[root@linuxso.com ~]# mount

 


4、写一个小脚本,并执行;要求实现:
   (1)新建ID为3306的组mysql;新建ID为3306的用户mysql,要求其家目录为/users/mysql,shell为/bin/nologin;
   (2)新建组dba;新建用户gentoo,要求其家目录ers/gentoo,密码同用户名;
   (3)新建用户centos,其家目录为/users/centos,密码同用户名;
   (4)用户gentoo和centos均以dba为其附加组;
vim myuser.sh
#!/bin/bash
groupadd -g 3306 mysql
useradd -u 3306 -g mysql -d /users/mysql -s /bin/nologin mysql
groupadd dba
useradd -d /users/gentoo -G dba gentoo
echo "gentoo" | passwd --stdin gentoo
useradd -d /users/centos -G dba centos
echo "centos" | passwd --stdin centos

 


5、创建一个1G的分区,文件系统为ext3,卷标为DATA,块大小为1024,预留管理空间为磁盘分区的3%,要求开机后可以自动挂载至/data目录;
[root@linuxso.com ~]# fdisk /dev/sda

The number of cylinders for this disk is set to 19581.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): n
First cylinder (6226-19581, default 6226):
Using default value 6226
Last cylinder or +size or +sizeM or +sizeK (6226-19581, default 19581): +1G

Command (m for help): w
[root@linuxso.com ~]# partprobe /dev/sda
[root@linuxso.com ~]# mke2fs -j -L DATA -b 1024 -m 3 /dev/sda11
[root@linuxso.com ~]# mkdir /data
[root@linuxso.com ~]# vim /etc/fstab
LABEL=DATA              /data                   ext3    defaults        0 0
[root@linuxso.com ~]# mount -a
[root@linuxso.com ~]# mount
/dev/mapper/vol0-root on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/mapper/vol0-home on /home type ext3 (rw)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /backup type ext3 (rw)
/dev/mapper/myvg-lv1 on /users type ext3 (rw)
/dev/sda11 on /data type ext3 (rw)

 


6、缩减前面创建的逻辑卷lv1的大小至1G;要求gentoo的家目录等不能丢失;

[root@linuxso.com ~]# umount /users/
[root@linuxso.com ~]# e2fsck -f /dev/myvg/lv1
e2fsck 1.39 (29-May-2006)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
LV1: 32/262144 files (3.1% non-contiguous), 25428/524288 blocks
[root@linuxso.com ~]# resize2fs /dev/myvg/lv1 1G
resize2fs 1.39 (29-May-2006)
Resizing the filesystem on /dev/myvg/lv1 to 262144 (4k) blocks.
The filesystem on /dev/myvg/lv1 is now 262144 blocks long.

[root@linuxso.com ~]# lvreduce -L 1G /dev/myvg/lv1
  WARNING: Reducing active logical volume to 1.00 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv1? [y/n]: y
  Reducing logical volume lv1 to 1.00 GB
  Logical volume lv1 successfully resized
[root@linuxso.com ~]# mount -a
[root@linuxso.com ~]# df lh
df: `lh': No such file or directory
[root@linuxso.com ~]# df -lh
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vol0-root
                       29G  2.1G   25G   8% /
/dev/mapper/vol0-home
                      465M   11M  431M   3% /home
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 506M     0  506M   0% /dev/shm
/dev/md0              1.9G   35M  1.8G   2% /backup
/dev/sda11            950M   19M  902M   3% /data
/dev/mapper/myvg-lv1 1008M   67M  901M   7% /users

 


7、复制文件/etc/fstab至/data目录,其属主为root用户,属组为root组;要求此文件可以被任何人读取,可以被gentoo读写,但centos没有任何访问权限;
[root@linuxso.com ~]# umount /data
[root@linuxso.com ~]# cp /etc/fstab /data
[root@linuxso.com ~]# ls -l /data
total 8
-rw-r--r-- 1 root root 836 Dec  6 18:17 fstab
[root@linuxso.com ~]# setfacl -m u:gentoo:rw- /data/fstab
[root@linuxso.com ~]# setfacl -m u:centos:--- /data/fstab

 

8、配置centos用户能以root用户的身份执行useradd,userdelusermod命令,而后以centos的身份创建一个新用户opensuse;

visudo
centos ALL=(root) /usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin/usermod

su - centos
sudo /usr/sbin/useradd opensuse
password:centos
id opensuse
9、配置本地的yum源指向,而后安装mysql-server和httpd软件包;

cd /etc/yum.repos.d/
vim server.repo
[base]
name=Server
baseurl=http://172.16.0.1/yum/Servergpgcheck=0

yum install mysql-server httpd -y
rpm -q mysql-server
rpm -q httpd   检查是否安装好了

10、下载并编译安装axel;软件包所在的地址:ftp://172.16.0.1/pub/Sources/downloader;要求:
 1)软件的默认安装目录为/usr/local/axel;
 2)安装完成以后,所有用户可以直接执行axel命令,而不用输入命令的完整的路径;

lftp 192.168.0.254/pub/Sources/downloader
get axel
bye
tar xf axel
cd axel
./configure --prefix=/usr/local/axel
make
make install
vim /etc/profile
添加 PATH=$PATH:/usr/local/axel/bin
. /etc/profile
11、写一个脚本:
1)使用函数实现:
   判断一个用户是否存在,用户名通过参数传递而来;
   如果存在,就显示此用户的shell和UID
   如果不存在,就说此用户不存在;
2)主调函数中,一直提示用户输入用户名,并显示;直到用户输入q或Q退出;

vim myuseradd.sh
#!/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 alive"
    fi
}

read -p "Username:" MYUSER
until  [[ "$MYUSER" == [Qq] ]]; do
  SHOWUSER $MYUSER
   read -p "Username:" MYUSER
done

bash myuseradd.sh

12、新建目录/backup/test,其属组为dba,且此组具有读写权限,其它用户没有任何权限;dba组成员在此目录中创建的文件的属组都需要是dba,且dba组中每个成员在此目录中只能删除自己的文件;
mkdir /backup/test
cd !$
chown :dba test
chmod o=--- test/
chmod g+w test/
ll
chmod g+s o+t test/
cd


13、配置当前主机内核参数,以允许在不同的网络接口间转发数据包;要求此项配置在重新启动系统后不会失效。

vim /etc/sysctl.conf
把net.ipv4.ip_forward=0 改为 net.ipv4.ip_forward = 1
sysctl -p 立即生效
14、启用本机的VNC服务,并确保root可用可以使用redhat作为密码登录系统
vncserver &
vncpasswd
Password:redhat
vncserver
cd .vnc/
vim xstartup
把twm改为gnome-session  图形桌面
cd
vncserver -kill :1
vncserver


15、配置本机每隔两天在凌晨3点20备份一次/etc目录,备份文件存放至/backup目录,文件名形如:etc-2011-11-20.tar.bz2;

which tar
crontab -e
20 3 */3 * * /bin/tar jcf /backup/etc-`date +%F`.tar.bz2 /etc/*

16、找到/etc目录下属于root用户且至少7分钟没有访问过的普通文件,将它们复制到/tmp/test目录;/tmp/test目录需要自己事先创建;

mkdir /tmp/test
find /etc -user root -amin +7 -exec cp {} /tmp/test \;


17、为gentoo用户的家目录创建磁盘使用限额,要求其能够使用的磁盘空间最大为50M,软限制为30M;要求完成后验正其有效性;

finger gentoo 查找家目录
vim /etc/fstab
LABEL=LV1  /users  ext3 defaults,usrquota 0 0
保存退出
mount -o remount /users
quotacheck -cmu /users/  为用户的磁盘配额创建数据
ls /users/
aquota.user
quotaon /users 启动磁盘配额
edquota -u gentoo
soft       hard     hard  inodes soft hard
30720      51200      0     8      0   0
测试 su - gentoo
quota  查看磁盘配额
dd if=/dev/zero of=./bigfile.1 bs=1M count=29
dd if=/dev/zero of=./bigfile.2 bs=1M count=2
dm-2:warning ,userblock quota exceeded
接下来就是超过硬限了
dd if=/dev/zero of=./bigfile.3 bs=1M count=20
dm-2:write failed .user block limit reached
以下为选做题,至少选做其中一题;
 
18、(选做题)写一个脚本getinterface.sh,脚本可以接受参数(i,I,a),完成以下任务:
  (1)使用以下形式:getinterface.sh [-i interface|-I IP|-a]
  (2)当用户使用-i选项时,显示其指定网卡的IP地址;
  (3)当用户使用-I选项时,显示其后面的IP地址所属的网络接口;
  (4)当用户单独使用-a选项时,显示所有网络接口及其IP地址(lo除外);

vim getinterface.sh
#!/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
else
  return 12
fi
}
SHOWIF () {
 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)
     SHOWIP $OPTARG
     [ $? -eq 13 ] && echo "Wrong IP."
     ;;
  a)
    for ETH in `ifconfig -a | grep "^[^[:space:]]" | cut -d' ' -f1 | grep -E -v "lo|sit0"`; do
     echo "$ETH" `SHOWIP $ETH`"
     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 binup.sh
#!/bin/bash
 read -p "Please input a commnd :" I
until [ "$I" = "q" ] || [ "$I" = "Q" ]; do
    which $I &> /dev/null
  if [ ! $? -eq 0 ];then
    echo "this commnd is not alive " && read -p "INPUT" I
  else
     if [ ! -d /tmp/mylinux ]; then
      mkdir /tmp/mylinux
     else
    read -p "are you want delet y/n" SWITCH
      if [ "$SWITCH" == "y" ]; then
          mkdir -p /tmp/mylinux/{bin,sbin,usr/{bin,sbin}}
          echo " mkdir done"
     elif [ "$SWITCH" == "n" ]; then
          echo "quiting"
           exit 2
     else
          echo "wrong"
          exit 3
     fi
  fi
  CMD=`which $I | grep -o "/.*"`
  CMDPATH=`which $I | grep -o "/.*" | sed 's@\(.*\)/[^[:space:]]\{1,\}@\1@g'`
  [ -d /tmp/mylinux/$CMDPATH ] || mkdir -p /tmp/mylinux/$CMDPATH
  [ ! -e /tmp/mylinux/$CMD ] && cp $CMD /tmp/mylinux/$CMDPATH && echo "copy $CMD done
 fi
 read -p "please input a commnd:" I
done
exit
 

 


 


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史