Linux —— 基本权限

1.shell命令以及运行原理

首先,我们要明白,Linux是一个操作系统,我们一般将它称为"核心"(kernel)。我们作为用户,是不能直接访问和操作kernel的。我们必须通过shell来对操作系统进行访问和操作

我们举一个很简单的例子来理解为什么直接操作kernel是不允许的。假如我们手上有500元巨款,我希望这笔巨款存到某某银行当中,此时就出现了用户、银行(操作系统),此时我们是直接把钱丢到银行门口让银行本身处理这一笔巨款吗?当然不是。我们需要通过柜员办理我们的业务。也就是说,银行柜员充当了"中间者"的角色,我们将钱交给柜员,柜员以合适的方式交给银行,此时就建立了用户与银行的联系。
在这里插入图片描述
所以,从技术角度上讲,shell的定义是一个命令行解释器(command Interpreter),它的主要工作是:将用户的命令翻译给kernel,将kernel的处理结果反馈给用户

抛开Linux不谈,即使是可视化界面的Windows系统,我们作为用户也不能直接操作kernel。我们是通过图形接口,例如打开某某程序,我们会使用鼠标双击它,双击这个过程本身就是一个指令,这个指令通过GUI交给Windows内核处理,然后GUI将处理的结果反馈给我们,此时我们就看见程序被打开了。

2.Linux权限

2.1Linux账户分类

在Linux中,有两大用户,一是超级用户(root),二是普通用户。

超级用户可以在Linux下做任何事包括我们熟悉的删库跑路(rm -rf /)。而普通用户只能做有限的事

我们可以通过命令提示符来判断我们当前使用的用户是什么类型:
在这里插入图片描述
并且我们可以使用 su 命令来切换用户,前提是我们已经创建好了多个用户。
在这里插入图片描述

2.2权限的理解

所谓权限,就是有些人能做很多事,有些人不能做很多事。这里提到了两个对象,即人和事物。任何权限都建立在这两个对象之上。

例如,我是没有某某视频会员的人,那我就不能看VIP电影。可能读者们是某某视频的SVIP,那么可以无限并且流畅地观看所有电影。

在Linux中,权限不仅仅体现在超级用户和普通用户之上。在Linux中,权限一般体现在用户和文件上

2.3用户的分类

事实上用户应该只被分为两类,一便是这个文件的拥有者,二便是其他人。但是Linux不这么干,它将用户分为了拥有者、所属组、其他人。至于为什么,那便跟实际的生活工作有关。

假设一个公司的一个工作室要开发一款软件,那么工作室的开发人员便是这款软件的拥有者,他们具有分配给自己和其他类型用户的读、写、执行的权限。那么工作室的领导属于哪个分类?所以便有了所属组的概念,因为领导即便不是参与软件的开发人员,但是软件属于这个工作室。其他人我们可以理解为使用软件的普通人。

2.4文件的分类

在Windows系统中,我们区分一个文件的类型通过文件的后缀进行区分。例如梨子.jpg,test.c,工作.doc……

在Linux系统中也是通过后缀名来区分的吗?
在这里插入图片描述
那如何区分文件类型?当我们输入 ll 指令后注意一开始的内容。
在这里插入图片描述
往后代表的意思分别为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意的是,Linux系统虽然不以文件后缀来区分文件。但Linux下的软件会进行区分。
在这里插入图片描述
那么Linux下的文件被分为:

d:文件夹
-:普通文件
l:链接,类似Windows的快捷方式
b:块设备文件,例如硬盘、光驱
p:管道文件
c:字符设备文件,例如显示器
s:套接字文件

2.5文件的权限

我们知道了,ll 命令下会显示文件的详细信息,现在我们便来分析一下各个权限的的字母代表什么意思。

权限被分为三种:可读(r),可写(w),可执行(x)。而上面的例子,拥有者的权限是rw-,这就代表拥有者对此文件可读、可写但不可执行。所属组的权限是rw-,这就代表所属组对此文件可读、可写但不可执行。其他人的权限为r–,代表其他人对此文件可读、但不可读、不可执行。

像这样,当某种用户具有某种权限时,文件就依照读、写、执行的顺序记录下来,并以字符的形式显示。如果某一位置没有对应的权限,就以 - 表示。
在这里插入图片描述
当然Linux提供了另一种权限表示方法,那就是以八进制的数字表示
在这里插入图片描述

2.6文件权限的修改

当我们创建了一个文件时,文件所分配的权限是默认的。当我们想修改这些权限的时候就必须使用 chmod 指令

我们使用vim编写一段C代码并生成对应的目标文件:
在这里插入图片描述
如果此时我们想要修改拥有者的权限,使它不能被拥有者执行:
在这里插入图片描述
在这里插入图片描述
像上面的操作,我们想要修改某种用户类型的权限时,只需指明是哪一种类型用户和加减操作即可。

+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

那么对于 = ,效果是这样的:
在这里插入图片描述
上面我们提到过八进制的权限表示法,我们也可以使用:
在这里插入图片描述

注意:
修改文件的权限只能是拥有者和root账户

当我们修改拥有者时,那么原拥有者便不能再进行权限的更改。更改拥有者使用的命令为 chown
在这里插入图片描述

2.7目录权限的修改

与文件一样,目录也有权限。
在这里插入图片描述
如果想要修改目录的权限,与文件的修改方式一样:
在这里插入图片描述
如果我们想要统一的修改目录下的所有文件的权限,我们只需加一个递归即可:
在这里插入图片描述

3.文件权限的默认值问题

我们应该思考一个问题,那就是文件生成的时候,它的权限值为什么这样?而不是那样?
在这里插入图片描述
其实在linux中,每一个目录、文件的生成都有一个起始权限。目录的起始权限为777,普通文件的起始权限为666。但是当一个目录生成时,看到的权限应该是drwxrwxrwx才对;当一个普通文件生成时,看到的应该是-rw-rw-rw-才对。但事实并非如此。
在这里插入图片描述
实际上,linux有一个权限掩码。我们可以通过 umask 指令查看
在这里插入图片描述
在生成目录或文件的时候,起始权限会和掩码进行一个“舍去”,舍去的过程为起始权限值&(~对应的掩码值)

例如我们生成目录的起始权限值为777,掩码为002。那么起始权限可写成:111 111 111,掩码可写成:000 000 010。计算过程:111 111 111 & (~000 000 010) ,即得到 111 111 101,八进制表示 775,就对应了我们所看到的目录生成的权限值。

文件的计算与上述一致。

我们还可以对权限掩码进行修改:
在这里插入图片描述

4.粘滞位

Linux作为多用户的操作系统,不同的用户有自己的家目录。
在这里插入图片描述
为了方便多个用户之间数据互传,Linux支持多个用户使用同一个公共目录。我们可以在根目录下,找到一个公共目录:
在这里插入图片描述
可以发现,公共目录的权限与普通的目录权限不一样,对other的权限为什么是rwt呢?t又代表什么权限呢?

对此,我们不妨自己创建一个公共目录,并修改它的权限,让其符合公共目录的定义。此时就产生一个问题,公共目录由谁创建?普通用户A还是普通用户B?都不行,公共目录必须由root来创建
在这里插入图片描述
那么对于建立好的public目录来说,它能被拥有者、所属组、其他人读、写、执行。我们切换到普通用户A,在public目录下建立几个文件:
在这里插入图片描述
我们再切换到用户B,进入此公共目录:
在这里插入图片描述

此时就产生了不合理的地方:用户A创建了几个文件,而用户B因为没有权限对其读和写,就一气之下将用户A的文件给删除了,并且Linux没有制止。所以在建立公共目录时,必须使用粘滞位保证每个用户的文件不被其他用户删除。粘滞位事实上也是一种权限,但是为什么叫粘滞位就跟翻译有关系了。我们添加粘滞位,就可以保证此目录下的文件只能由root账户删除、目录的拥有者删除、文件的拥有者删除
在这里插入图片描述

再切换到用户B,再尝试对用户A的文件删除:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小龙向钱进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值