本节的关键是查看、修改用户权限。
在一开始,我先介绍一下权限号怎么理解,再进入到本期的命令学习。
首先,用命令ls -l
查看当前目录下的文件/文件夹权限:
假设看到下列内容:
-rw-rw-r--. 1 root DeptIS 19 Nov 9 15:15 readme.sie
drw-r----x. 2 root root 6 Nov 9 15:21 test1
请关注到每行开头的那一大串:
首先,第一个字母是表示文件类型的(这个在linux学习笔记(2)有提到过),如第一行“-”开头表示是文件,第二行“d”开头表示是目录文件(文件夹)。
接下来,首字母后的剩下一大串就是权限了:
将其以3个字符为单位进行划分,可以分成3组,分别作为所有者(user)、用户组(group)、其他人(others)的权限。
r:可读(设置权限时用数字4表示)
w:可写(数字2)
x:可执行(数字1)
-:无相关权限
eg1:rw-rw-r--
:
可以分成rw-、rw-、r–:表示user可读可写,group可读可写,其他人可读
eg2:rw-r----x
:
可以分成rw-、r–、--x:表示user可读可写,group可读,其他人可执行
那么,上面说的设置权限时,用4表示r,用2表示w,用1表示x是怎么回事呢?
先需要知道,我们可以用类似于下面这样的命令设置文件的权限:
[root@localhost pub]# chmod 640 readme.ito
看到这个命令中的数字640了吗?它表示了user、group和others的权限。
user的权限 = 6 = 4+2 ——可读可写
group的权限 = 4 ——可读
others的权限 = 0 ——没有任何权限
发现了吗?其实就是把这个三位数拆分成三位,然后用4、2、0做加法,得出各自的权限是多少就ok啦。
好啦,进入正题,下面是本次的练习题。
==========================================================
(1)启动计算机,使用自己创建的用户登录系统。
(2)使用su - root命令切换到root用户。
su
(3)使用cat /etc/passwd命令查看当前系统用户的信息
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
……(此处省略若干行)
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
helen:x:1000:1000::/home/helen:/bin/bash
a:x:1001:1001::/home/a:/bin/bash
b:x:1002:1002::/home/b:/bin/bash
(4)使用grep hx /etc/passwd命令确认系统中是否已有hx用户。查询结果显示不存在这个用户,因此使用useradd hx命令创建了这个新用户,并使用passwd hx为其设置初始密码123456。
//查询一个不存在的用户hx:什么都不会显示
[root@localhost ~]# grep hx /etc/passwd
//查询一个存在的用户helen
[root@localhost ~]# grep helen /etc/passwd
helen:x:1000:1000::/home/helen:/bin/bash
[root@localhost ~]# useradd hx
[root@localhost ~]# passwd hx
(5)使用命令将hx用户加入到信息安全系用户组中。
//新建信息安全系组DeptIS
[root@localhost ~]# groupadd DeptIS
//将hx用户加入到信息安全系用户组中
[root@localhost ~]# usermod -g DeptIS hx
//查看用户hx在哪个组
[root@localhost ~]# groups hx
hx : DeptIS
(6)切换到/ito/pub目录,新建示例文件readme.ito。/ito/pub目录中保存的是软件学院的公共文件,本学院的所有老师都能读取文件的内容,但只有系统管理员华老师本人可以修改文件。另外,其他学院的老师无法读取文件内容。
//创建路径、文件
[root@localhost ~]# mkdir ito
[root@localhost ~]# cd ito
[root@localhost ito]# mkdir pub
[root@localhost ito]# cd pub
[root@localhost pub]# ls -l
total 0
[root@localhost pub]# touch readme.ito
**【分析】**所有老师都能读取文件的内容,但是只有华老师本人(用户hx)才能修改文件
——同组成员(group,本学院的所有老师)只有读取权限,而所有者(user,系统管理员)有读取、修改的权限
//查看文件原来的权限
[root@localhost pub]# ls -l readme.ito
-rw-r--r--. 1 root root 0 Nov 9 14:02 readme.ito
//新建用户组:软件学院InstillSoftware
[root@localhost pub]# groupadd InstSoftware
//将hx加入到用户组InstSoftware。如果不需要留在原来的用户组,则可以直接使用 -g 选项:usermod -g InstSoftware hx
[root@localhost pub]# usermod -a -G InstSoftware hx
[root@localhost pub]# id hx
uid=1003(hx) gid=1004(DeptIS) groups=1004(DeptIS),1006(InstSoftware)
//将文件readme.ito的所有者改为hx
[root@localhost pub]# chown hx readme.ito
[root@localhost pub]# ls -l
total 0
-rw-r--r--. 1 hx root 0 Nov 9 14:16 readme.ito
//将文件的readmen.ito的所属用户组改为InstSoftware
[root@localhost pub]# chgrp InstSoftware readme.ito
[root@localhost pub]# ls -l
total 0
-rw-r--r--. 1 hx InstSoftware 0 Nov 9 14:16 readme.ito
//修改文件的权限
[root@localhost pub]# chmod 640 readme.ito
//查看当前的用户权限,发现:所有者有读写权限,用户组有读权限,其他人没有任何权限
[root@localhost pub]# ls -l readme.ito
-rw-r-----. 1 root root 0 Nov 9 14:02 readme.ito
检验一下:
//创建一个用户teacher
[root@localhost pub]# useradd teacher
[root@localhost pub]# passwd teacher
[root@localhost pub]# su teacher
//此时,用户teacher还不在用户组InstSoftware中,所以不能读取
[teacher@localhost pub]$ cat readme.ito
cat: readme.ito: Permission denied
//将用户teacher加入用户组InstSoftware
[teacher@localhost pub]$ su
[root@localhost pub]# usermod -a -G InstSoftware teacher
[root@localhost pub]# su teacher
[teacher@localhost pub]$ id teacher
uid=1005(teacher) gid=1007(teacher) groups=1007(teacher),1006(InstSoftware)
//现在,用户teacher可以读readme.ito文件了
[teacher@localhost pub]$ cat readme.ito
//但用户teacher不可以写readme.ito文件
[teacher@localhost pub]$ echo 'test by teacher' > readme.ito
bash: readme.ito: Permission denied
(7)使用su – hx命令切换到hx用户。使用vim打开readme.ito文件,可以正常打开,但尝试修改时提示只有读权限。使用exit命令退出hx用户,返回root用户。
(老师给的这道题也真是迷……前面明明已经给hx用户加了读写权限了?所以本题我用只有读权限的用户teacher实现了)
vi
:打开vim文本编辑器
[teacher@localhost pub]$ vi readme.ito
可以进入vim编辑器的页面(如下图),但如果按下i(想进入insert模式进行修改时),则会弹出只可读的Warning(如下图)。如果还试图强行更改,则会报错。
(8)切换到/ito/sie/pub目录,新建示例文件readme.sie。/ito/sie/pub目录中保存的是信息安全系的公共文件,本系的所有老师都可以读写这些文件,而其他系的老师只能读取文件内容。
[root@localhost ~]# cd ito
[root@localhost ito]# mkdir sie
[root@localhost ito]# cd sie
[root@localhost sie]# mkdir pub
[root@localhost sie]# cd pub
[root@localhost pub]# touch readme.sie
[root@localhost pub]# chgrp DeptIS readme.sie
[root@localhost pub]# chmod 664 readme.sie
[root@localhost pub]# ls -l
total 0
-rw-rw-r--. 1 root DeptIS 0 Nov 9 14:59 readme.sie
(9)分别切换到hx和自己创建的用户用户,并尝试对readme.sie进行读和写操作。
//新建一个用户组DeptSE(软件安全系)
[root@localhost pub]# groupadd DeptSE
//新建用户teacher1,并将其加入到软件安全系
[root@localhost pub]# useradd teacher1
[root@localhost pub]# usermod -a -G DeptSE teacher1
(后面的验证过程和结果就不赘述了)
(10)分别在/ito/pub和/ito/sie/pub两个目录中建立一个子目录,并对其进行不同权限的设置,使用不同的用户进行验证,加深对普通文件和目录权限管理的理解。
具体实现就不赘述了,按上面九题涉及的知识点就可以实现。
核心是修改权限。
不管是修改文件权限,还是文件夹权限,本命令都适用:chmod [权限号] [文件名/文件夹名]
//举个栗子
[root@localhost pub]# chmod 640 readme.ito