前言
Linux的权限是我们学习Linux初期非常重要的基础知识,接下来我将通过一个系列【Linux之权限】,共三篇文章,对此进行较为全面和详细的解说。
sudo
情况:如果我们不是超级管理员,但是想执行一个权限级别比较高的指令,比如我们想以超级管理员的身份来创建一个文件,那么就:
sudo touch root.txt
然后会要求我们输入密码,注意这里要求我们输入的并不是root的密码,而是当前用户的密码。
可以看到,这里创建的文件的身份是属于root的。
所以
sudo是用来进行指令的短暂提权的。
那么,什么时候我们会有这种需求呢?
比如安装软件,我们之前用yum,本质是把自己对应的指令写入/usr/bin这样的目录下。
通过ls -ld /usr/bin
我们可以看到的是:
这个文件是属于root的。
(普通用户时)所以不允许cp my.txt /usr/bin
,所以我们也就没法安装。
所以我们就可以使用sudo来进行提权,sudo cp my.txt /usr/bin
所以当我们往一些不属于我们的目录里去安装、拷贝、删除、增加都需要sudo提权。
其实在linux中,我们安装的所有程序只安装了一份,只不过安装的这一份通常允许大家使用,比如ls,普通用户和root都能使用。
一般指令都是普通用户也能用,但是像adduser这样的,普通用户肯定用不了。
人人都是root?
有一个疑问是,sudo时我们输入当前用户密码而非root密码,这难道说明人人都是root吗?
但其实,如果现在我们真的sudo ls
,会发现输完密码后就报错了:
其实linux系统会提供一个类似白名单的东西。
ls /rtc/sudoers
:
ll /etc/sudoers
:
可以看到 这个文件的拥有者是root,也只有root有资格去修改这个文件。
就算我们vim /etc/sudoers
:
可以看到是不允许修改的。
也就是说需要修改这个配置文件,我们才能让自己这个用户能使用sudo。
要修改这个配置文件,我们首先得是超级管理员。
但是这里我们先不轻易修改这个配置文件。(以后在学到vim的使用的时候再说)
权限
是什么?
权限本质:能或不能做什么事情
为什么?
1.控制用户的行为,防止错误的发生。
2.理解:
权限 = 角色+目标属性
-
首先,权限限制的是“人”(是谁不重要,重要的是身份)
-
角色一般有三种:拥有者、所属组、other。
-
(ls -l)
我们可以看到在这只有两格,但是角色有三种,这是因为other不需要特意记录下来。为什么?因为我们拿一个身份去对照这行信息里的拥有者和所属组,如果既不是拥有者,也不是所属组,那就只能是other了(而且other太多了记不完)。
-
什么是所属组?
很多都是自成一组。
但它存在的意义是什么呢?
假设只有拥有者和other两种身份是有问题的,比如要把自己拥有的代码公开给组长看,但是因为只有拥有者和other两种身份,把other放开后,不仅组长,其他不该看到的人也会能看到这份代码。(如果公司采用的“赛马制”,竞争的组也能看到自己组的代码)
- 所以所属组的存在就是为了进行更精细化的管理。
-
-
其次,权限要求目标必须具备对应的属性(比如文件本身不具备某种属性,也就谁都没有权限)
- 文件一般有三种属性:读、写、执行。也就是r、w、x。
在ll
显式出来的信息中的第一行代表的是文件类型。-是普通类型、d是目录……
还剩下9个字符,3个位一组。
第一组对应的是拥有者权限位。
第二组对应的是所属组权限位。
第三组对应的是other权限位。
(以第一组为例)
三个字符分别代表读、写、执行权限。如果拥有者可以读可以写可以执行,那第一组就是rwx;如果不能读不能写不能执行那就是—,以此类推。
比如现在如果我们要描述my.txt这个文件的权限是什么:
该文件拥有者是whb,拥有者权限是对这个文件可以读可以写但是不能执行;所属组是whb,所属组权限是对这个文件可以读可以写但是不能执行;other的权限是只能读不能写不能执行。
=_=
那么,本文到此结束,在下篇中,我们会学习具体的指令来操作权限,并进一步讲解权限的重点内容。