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.该项目的管理员拥有对此项目所有的权限。组织的人员对此项目有读取,修改的权力。
为保证项目的安全运作,此组织的以为的一律不能对此项目有读写执行的权力。
所以有操作均由root在root的home文件夹下完成,当然也可以换其它不同的文件夹。(因权限问题建议在根目录下进行)
创建项目组和项目目录
[root@www ~]#groupadd project
[root@www ~]#mkdir program1
添加管理员tom账号
[root@www ~]#useradd tom
因管理员对这个项目有所有的权限,设置这个项目所有者为tom项目要支持组织project的读取和修改,设置项目的group为project
[root@www~]# chown -R tom:project program1 #参数-R为递归,表示这个文件下面的所有都是所有者为tom,group为project
设置项目为为管理员和这个组织都有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.教授必须要能对他们四个组的内容进行可读可写,可修改的权限。组与组之间一律不能干扰或查看对方的项目的内容。
和场景一类似,不再细说1,2,3,4四个组的情况和上面的一样,只是最后教授要看这四个全部的东西要有全部的修改权限用ACL(access 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的组,private的gid为400,并将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年的5月30日4点30分重启你本地的系统。
[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
- Linux练习题
- Linux练习题
- Linux练习题
- linux 练习题
- linux练习题
- linux练习题
- Linux练习题
- linux 练习题
- Linux练习题
- linux练习题
- Linux网络管理练习题
- linux网络练习题
- Linux远程访问练习题
- Linux指令练习题
- 《Linux网络工具》练习题
- linux命令小练习题
- linux练习题大全
- linux用户管理练习题
- HDMI状态检测——学习笔记
- imprecise external abort
- 《统计学习方法》学习总结(未完待续)
- 使用面向对象重构之-使用接口抽象完成不同维度的扩展
- qt phonon 制作音乐播放器实现歌词和遮罩功能
- linux练习题
- Servlet容器Tomcat中web.xml中url-pattern的配置详解[附带源码分析]
- 实现对ListView中的条目进行排序
- 1061. 判断题(15)
- C/C++中赋值语句返回值
- 模板化vs模板特化vs模板偏特化
- Android Studio获取MD5和SHA1值
- 多态+菱形虚拟继承(下)
- Codeforces 359D 想法