注意:如果题目中用到的目录没有就要自己手动去建立。

场景一:某公司要新建一个项目,此项目文档,必须要符合以下要求,

你是其请来的一个系统管理员,要按照如下要求去设计项目的框架,你该如何建立。

1.此项目叫program1

2.该项目的主要管理员叫tom,该项目的管理组织叫project

3.该项目的管理员拥有对此项目所有的权限。组织的人员对此项目有读取,修改的权力。

为保证项目的安全运作,此组织的以为的一律不能对此项目有读写执行的权力。


所以有操作均由rootroothome文件夹下完成,当然也可以换其它不同的文件夹。(因权限问题建议在根目录下进行)

创建项目组和项目目录

[root@www ~]#groupadd project

[root@www ~]#mkdir program1

添加管理员tom账号

[root@www ~]#useradd tom

因管理员对这个项目有所有的权限,设置这个项目所有者为tom项目要支持组织project的读取和修改,设置项目的groupproject

                  [root@www~]# chown -R tom:project program1                    #参数-R为递归,表示这个文件下面的所有都是所有者为tom,groupproject

设置项目为为管理员和这个组织都有r,w,x的权限

                  [root@www~]# chmod -R 770 program1/

最后将这个项目的人员加入到这个组中。以添加xpl这个账号为例:

                  [root@www~]# usermod -G project xpl

查看/etc/group如果最后的:后面有刚才加入的账号名说明添加成功了。

[root@www ~]# cat /etc/group | grep project

project:x:1007:xpl

【完成】

测试下看看是不是符合要求。

Tom管理员的测试:

[tom@www program1]$ pwd

/root/program1

[tom@www program1]$ mkdir program-test

[tom@www program1]$ ls

program-test

更换成project这个组中的xpl看看

[xpl@www program1]$ pwd

/root/program1

[xpl@www program1]$ ls

program-test

[xpl@www program1]$ mkdir program-test-xpl

[xpl@www program1]$ ls

program-test  program-test-xpl

更换与项目无关的人员看看


[xupanlong@www ~]$ cd /root/program1

-bash: cd: /root/program1: Permission denied

测试完成没有问题,正确的。

场景二:某大学的计算机应用专业的教授,分配给某个班级一项作业。把班级分成四个小组。

1.分成ABCD四组。四个组同做一个项目,带项目完成,有教授打分。

2.A组由班长(monitor)为第一个组的领导。管理第一个组(group1)的项目(program1)。

3.B组由副班长(vicemonitor)为第二组的领导,管理第二个组(group2)的项目(program2)。

4.C组由学习委员(CISOS)为第三个组的领导,管理第三个组(group3)的项目(program3)。

5.D组有纪律委员(CICOD)为第四个组的领导,管理第四个组(group4)的项目(program4)。

6.教授必须要能对他们四个组的内容进行可读可写,可修改的权限。组与组之间一律不能干扰或查看对方的项目的内容。

和场景一类似,不再细说1234四个组的情况和上面的一样,只是最后教授要看这四个全部的东西要有全部的修改权限用ACLaccess control list)来实现。

直接代码正题,这里只说第一组的,其它三个组的都类似。这里我们指定教授使用的是teacher这个账号

先把这账号创建好:[root@www ~]# useradd teacher

第一组:

                  [root@www~]# useradd monitor

[root@www ~]# mkdir program1                      #这个上面已经建立过这个目录了所以再次建立会出错是正常的,所以出错不管下面了直接修改权限就好了。

[root@www ~]# groupadd group1

[root@www ~]# chown -R monitor:group1 program1

[root@www ~]# chmod -R 770 program1

真正要使用时,到这里要把使用的在这个组中的账号加上,参考场景一

[root@www ~]# setfacl -m u:teacher:rwx program1

第二、三、四组同上。



1.创建名为student的用户,并将其uid设为1001,创建名为private的组,privategid400,并将student的私有组设成private

[root@www ~]#useradd -u 1001 -g private student

查看是是否正确

[root@www ~]#cat /etc/passwd | grep student

student:x:1001:400::/home/student:/bin/bash        #uid=1001,gid=400没有问题

2.查找出在etc目录下所有大小为10K的文件,并将其复制到/tmp/findfiles目录中。

[root@www ~]#find /etc/ -size 10k -exec cp {} /tmp/findfiles \;

3.查找所有已student用户为拥有者的文件,并复制到/tmp/student目录中。

[root@www ~]# find/ -user student -exec cp {} /tmp/student \;               #会的错误提示,提示省略目录,因为我们是复制文件,所以有这个错误是正常的。

4.创建一个大小为500M的交换分区,并使其永久挂载。

先用fdisk /dev/sda来建立一个新的分区,我这儿磁盘没有空间了所以这个就不做了,我操作的大体给你看下流程吧:

[root@www ~]#fdisk /dev/sda


WARNING:DOS-compatible mode is deprecated. It's strongly recommended to

        switch off the mode (command 'c') andchange display units to

        sectors (command 'u').


Command (m forhelp): p                    #查看当前分区情况,输入?查看帮助,n为新建。你可以man fdisk 下看看使用,如果只是笔试考试写这些完全够了,如果上机自己还是实践下。分区不太清楚的话可以再问下我。


Disk /dev/sda:21.5 GB, 21474836480 bytes

255 heads, 63sectors/track, 2610 cylinders

Units =cylinders of 16065 * 512 = 8225280 bytes

Sector size(logical/physical): 512 bytes / 512 bytes

I/O size(minimum/optimal): 512 bytes / 512 bytes

Disk identifier:0x0003d0c5


  Device Boot      Start         End      Blocks   Id System

/dev/sda1   *          1          26      204800  83  Linux

Partition 1 doesnot end on cylinder boundary.

/dev/sda2              26         791    6144000   83  Linux

Partition 2 doesnot end on cylinder boundary.

/dev/sda3             791        1428    5120000   83  Linux

/dev/sda4            1428        2611    9501696    5  Extended

/dev/sda5            1429        1939    4096000   8e  Linux LVM

/dev/sda6            1939        2194    2048000   83  Linux

/dev/sda7            2194        2321    1024000   82  Linux swap / Solaris

/dev/sda8            2322        2415      755023+ 8e  Linux LVM

/dev/sda9            2416        2537      979933+ 83  Linux


建立一个分区后格式化为swap专用的,以/dev/sda9为例:

[root@www ~]#mkswap /dev/sda9                   #格式化

[root@www ~]#swapon /dev/sda9          #现在就直接挂载使用

永久挂载要写入/etc/fstab

[root@www ~]#vim /etc/fstab                  #在这个文件中加入下面这一行

/dev/sda9             swap           swap      defaults       0 0

5.以大文件的方式创建一个大小为500M的交换空间,并使其永久挂载。

基本同上:

[root@www ~]# ddif=/dev/zero of=/tmp/swap_file bs=1M count=500

[root@www ~]#mkswap /tmp/swap_file

[root@www ~]#vim /etc/fstab                  #在这个文件中加入下面这一行

/tmp/swap_file             swap           swap      defaults       0 0

6.建立一个计划任务,内容是,在2013年的530430分重启你本地的系统。

[root@www ~]# at04:30 2013-05-30

at>/sin/reboot

at><EOT>          #这里按Ctrl+D来结束输入,可以写多个命令,要写绝对路径,一个命令写完回车换行

job 6 at2013-05-30 04:30

7.创建一个目录,名为test,并设置其权限为777,要求,此目录下的所有文件只能由root与这些文件本身的拥有者才能删除。


通过SBIT来实现

[root@www ~]# mkdirtest

[root@www ~]#chmod 1777 test

8.创建一个目录,名为test1,设置其拥有者为root,拥有组为student。要求在此目录下所创建的任何东西都自动继承test1目录的拥有组。

通过SGID来实现

[root@www ~]#groupadd student

[root@www ~]#mkdir test1

[root@www ~]#chown root:student test1

[root@www ~]#chmod 2770 test1

9.创建一个逻辑卷lv0,此逻辑卷是属于vg0的。要求,vg0的最大大小为500M,逻辑卷的大小为300M。并挂载到/data目录中,并使其在系统重启后自动挂载。

总体流程:建立实体磁盘分区,建立pv,建立vg,建立lv,格式化lv,挂载mount

建立pv时都要先建立相应的磁盘

[root@www ~]#pvcreate /dev/sda{5,8,9}

[root@www ~]#pvscan    #查看自己都建立了哪些pv

 PV /dev/sda5  VG vg_www          lvm2 [3.90 GiB/ 0    free]

 PV /dev/sda8  VG vg_www          lvm2 [736.00MiB / 0    free]

 PV /dev/sda9                      lvm2 [956.97 MiB]

 Total: 3 [5.56 GiB] / in use: 2 [4.62 GiB] /in no VG: 1 [956.97 MiB]

[root@www ~]#vgcreate vg_name /dev/sda{5,8,9}        #在具体的这个题目中你只用建立一个500M的分区,写的时候写一个设备就好,如:vgcreate vg_name /dev/sda12我这里………………没空间了,没办法去实践

[root@www ~]#vgdisplay

 --- Volume group ---

 VG Name               vg_www           #这个是我装系统时自己建立的vg名字,也就是上面一个命令中写的名字可以自己随便写

 System ID            

 Format                lvm2

 Metadata Areas        2

 Metadata Sequence No  10

 VG Access             read/write

 VG Status             resizable

 MAX LV                0

 Cur LV                1

 Open LV               1

 Max PV                0

 Cur PV                2

 Act PV                2

 VG Size               4.62 GiB

 PE Size               4.00 MiB

 Total PE              1183

 Alloc PE / Size       1183 / 4.62 GiB

Free  PE/ Size       0 / 0    #看这个数量是多少下面建立时的那个数就写的多少,我的VG全部放在lv了,所以为0

 VG UUID               drQ8xf-2A34-Eqb2-s97G-1TnF-4tnu-Z0hNjg

[root@www ~]#lvcreate -l 上面说到pe的数-n lv_name vg_name             #lv_name这个可以随便写

[root@www ~]#mkfs.ext4 /dev/vg_name/lv_name                 #格式化

[root@www ~]#vim /etc/fstab                  #加入下面的东西

/dev/vg_name/lv_name            /data               ext4    defaults     1  2

10.扩展lv0,把lv0大小扩展为700M,并且无数据丢失。

流程:fdisk建立磁盘分区,  pvcreate建立pv,   vgextend扩大vg,   lvresize调整lv大小,

Resize2fs变更的大小投入实际使用

[root@www ~]#fdisk/dev/sda #建立一个200M的分区,参考上面的分区建立

[root@www ~]#pvcreate/dev/sda10       #刚才建立的200M的分区

[root@www ~]#vgextendvg_name /dev/sda10      #加入刚建立的pv

[root@www ~]#vgdisplay #同上面说的找到free pe的数量下面要用

[root@www ~]#lvresize–l  +上面的free pe数量 /dev/vg_name/lv_name         #因为这里是要增加大小所以在free pe前面有个+

[root@www ~]#resize2fs/dev/vg_name/lv_name

11.缩小lv0,把lv0的大小缩小到400M,并无数据丢失。

[root@www ~]#umout/data   #先卸载再调整大小

[root@www ~]#resize2fs/dev/vg_name/lv_name 400M

12.lv0制作一个快照名为snaplv0,大小为50M,并挂载到/snaplv目录中,并使其永久挂载。

流程和上面的差不多

[root@www ~]#fdisk/dev/sda #假设建立在为/dev/sda11大小50M

[root@www ~]#pvcreate/dev/sda11

[root@www ~]#vgextendvg_name /dev/sda11      #快照的建立必须是在同一个vg里面才能建立所要的快照,所以用/dev/sda11建立/dev/vg_name/lv_name的快照必须是用/dev/sda11建立类似/dev/vg_name/lv_snapshot

[root@www ~]#vgdisplay #因为vg_name中新加入了/dev/sda11所以用这个查看加入后vg_name有多少新的可用的free pe,同上面说的下面要用的

[root@www ~]#lvcreate–l 上面看的free pe的数量–s –n lv_snapshot/dev/vg_name/lv_name                 #lv_snapshot是快照的名字,可以随便写,这一行和上面的是一行,这是直接指定大小是多少所以在free pe前面就没有+号了。

完成了写入/etc/fstab中吧,还是老样子

[root@www ~]#vim/etc/fstab

加入下面这些

/dev/vg_name/lv_snapshot         /snaplv         ext4   defaults      1  2