linux练习题

来源:互联网 发布:婚礼现场互动软件 编辑:程序博客网 时间:2024/06/07 18:21

用户管理

——————————————————————————————————————————————————————————————————————————————

1)新建一个组group1,新建一个系统组group2


参考答案:
groupadd group1
groupadd -r group2
cat /etc/group /etc/gshadow|grep group[1-2]


2)更改组group2的GID为103,更改组名为grouptest

参考答案:
groupmod -g 103 -n grouptest group2
cat /etc/group /etc/gshadow|grep group*

 

3)删除组grouptest

参考答案:
groupdel grouptest


4)新建用户user1,指定UID为777,目录为/home/user1,初始组为group1,有效组为root,指定shell为/bin/bash

参考答案:
useradd -u 777 -d /home/user1 -g group1 -G root -s /bin/bash user1
cat /etc/passwd /etc/group|grep user1


5)新建一个系统用户user2

参考答案:
useradd -r user2
grep user2 /etc/passwd


 
6)查看用户user1的组群,切换到user1,在主目录下新建文件test1,再切换有效组为root,再新建文件test2

参考答案:
groups user1
su - user1
touch test1
newgrp root
touch test2
ls -l test[1-2]


7)修改用户user1的个人说明为This is a test

参考答案:
usermod -c "This is a test" user1


8)修改用户密码过期时间为2008-07-27

参考答案:
usermod -e "2008-07-27" user1


9)更改用户user1的密码为111111,加锁用户user1并查看/etc/shadow,用户user1通过ssh登录127.0.0.1,
解锁用户user1,再通过ssh登录.

参考答案:
passwd user1
usermod -L user1|grep user1 /etc/shadow
ssh user1@127.0.0.1
usermod -U user1|grep user1 /etc/shadow
ssh user1@127.0.0.1

 

10)更改用户主目录/home/user1为/home/user11

参考答案:
usermod -d /home/user11 -m user1|ls /home

 

11)查看所有支持的shell,将root更改为csh,并查看结果,并将root改为bash

参考答案:
chsh -l
chsh -s /bin/csh; grep root /etc/passwd;chsh -s /bin/bash


12)更改自己的相关信息,如电话号码等

参考答案:
chfn
grep root /etc/passwd|sed -n 1p


13)查看自己的相关信息

参考答案:
finger root


14)列出用户user1的UID,GID等

参考答案:
id user1


15)增加用户user3,user4,增加组testgroup,给组testgroup设定密码,将组testgroup管理权授予user1,并同时将root,user1,user3加入到testgroup,检查结果,切换到user1,将user4加入到testgroup组

参考答案:
useradd user3;useradd user4
groupadd testgroup;gpasswd testgroup
gpasswd -A user1 -M root,user1,user3 testgroup
grep testgroup /etc/group /etc/gshadow
su - user1
gpasswd -a user4 testgroup

 

16)使用passwd给user1用户密码冻结,用passwd查看user1相关信息,最后用passwd给用户user1解冻

参考答案:
passwd -l user1
passwd -S user1
passwd -u user1

 

17)切换user1用户,用su加命令行直接查看shadow的头3行

参考答案:


su - user1


su - -c "head -n 3 /etc/shadow"

 

18)将user1加入sudoer,权限为可登入所有主机,可变换所有用户,可执行所有命令,切换到user1,用sudo在root下建立user1目录用sudo以user3的身份在/tmp/下新建文件user3

参考答案:
visudo
加入以下内容:
user1   ALL=(ALL) ALL
退出
sudo mkdir /root/user1
sudo -u user3 touch /tmp/user3


19)将testgroup组加入sudoer,权限为可登入所有主机,可变换所有用户,可执行所有命令,且不用输入密码,切换到user4,用sudo在查看/etc/shadow内容.

参考答案:
visudo
加入以下内容:
%testgroup      ALL=(ALL)       NOPASSWD:ALL
退出
sudo more /etc/shadow


20)在user1用户下面,用sudo切换到root

参考答案:
sudo su -

 

21)用user2登录tty3,用user1登录tty1,用user1向user2发送消息i loveyou

参考答案:
write user2
i love you
ctrl+d


22)user2将接收消息关闭

参考答案:
mesg n


23)在root,向所有人发消息

参考答案:
wall i love qiuming


25)用chpasswd更改user1口令为111111

参考答案:
echo "user1:111111"|chpasswd


26)通过root向user1发送邮件,切换到user1进行校对

参考答案:
mail user1
Subject: i love you
i 'm chenkuo
qiuming me like you
.
Cc:

su - usre1
mail


27)比对passwd和shadow是否一致

参考答案:
pwck

 

28.1)用chage显示用户test密码资料
28.2)用chage变更密码更改日期
28.3)用chage变更策略,密码最少要用1天才能变更密码
28.4)用chage变更策略,即每隔一个星期就要变更一次密码
28.5)用chage变更策略,即密码过期3天后,还没有变更密码,就锁定帐户
28.6)用chage变更策略,即帐号到期日为2008-05-01

参考答案:
chage -l test
chage -d 2005-07-25 test
chage -m 1 test
chage -M 7 test
chage -I 3 test
chage -E 2008-05-01 test

 

29.1)激活accton的详细日志记录功能,可以记录各用户的所有操作
29.2)等待3分钟后,查看root用户的所有动作
29.3)关闭accton

参考答案:
accton /var/account/pacct
lastcomm |grep root
accton

 

30.1)用ac命令查看每个用户登录系统的时间,会列出当天一个个用户的时间总和
30.2)用户登录系统的每天总时间,会列出一天一天的时间总和

参考答案:
ac -p
ac -d

————————————

任务要求
研发部开发人员David和Peter属于组A;
行政部人员Jack和Mike属于组B;
1、建立共享目录“/project_a”,该目录里面的文件只能由研发部开发人员读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;
2、建立目录“/project_b”,该目录里面的文件只能由行政部人员读取、增加、删除、修改以及执行,其他用户不能对该目录进行任何的访问操作;
3、建立目录“/project”,该目录里面的文件可由研发部、行政部人员读取、增加、删除、修改以及执行,其他部门用户只可以对该目录进行只读的访问操作。

分析
此题只给出两个组,其实要想实现此功能需要3个组。研发部一个组,行政部一个组,包含研发部和行政部需要一个组。此题目的在于熟悉组、用户、权限相关命令。

Linux命令

1.创建3个组 
groupadd a; 
groupadd b; 
groupadd ab; 
 
 
2.创建3个用户并修改其密码 
useradd david; 
passwd david; 
useradd peter; 
passwd peter; 
useradd jack; 
passwd jack; 
useradd mike; 
passwd mike; 
 
 
3.在根目录创建3个文件夹 
mkdir project_a; 
mkdir project_b; 
mkdir project; 
 
 
4.修改文件夹拥有组 
chgrp ab project 
chgrp a project_a 
chgrp b project_b 
 
 
5.修改用户所属组 
usermod -G a,ab david 
usermod -G a,ab peter 
usermod -G b,ab mike 
usermod -G b,ab jack 
 
 
6.使用root用户修改project、project_a、project_b的访问权限 
chmod 774 project; 
chmod 770 project_a; 
chmod 770 project_b;

————————————————————————————————————————————————————————————————

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

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

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

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



0 0
原创粉丝点击