前言

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的权限是只能读不能写不能执行。

=_=
那么,本文到此结束,在下篇中,我们会学习具体的指令来操作权限,并进一步讲解权限的重点内容。

在这里插入图片描述

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐