Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉)

这篇具有很好参考价值的文章主要介绍了Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.shell外壳的理解

Linux严格意义上说的是一个操作系统,我们称之为"核心(kernel)",
但我们一般用户,不能直接使用kernel。
而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

1.为什么需要有shell外壳的存在?

操作系统本身是需要易用程度和安全性的
而对于我们使用电脑的普通用户来说,我们是不能直接访问操作系统的

为什么我们不能直接访问操作系统呢?

因为对于我们绝大多数人来说,我们对于操作系统并不熟悉,如果允许我们直接访问操作系统,势必会出现一些错误,所以需要有一个中间者

2.什么是shell外壳?

这个中间者的核心工作就是

将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。

在Linux中这个中间者就是shell外壳
在windows中这个中间者就是图形化界面

shell外壳的本质就是一个执行起来的程序(进程),在系统启动期间一直存在

3.shell外壳的运行原理是什么?

1.当用户想要执行的指令有风险时(例如用户自定义的指令),shell都是通过创建子进程的方式去让子进程执行有风险的指令

2.对于低风险的指令,shell外壳会自己去执行

3.每一次你进行xshell登陆的时候,操作系统都要给你这个用户的当前登陆创建一个shell,bash

4.shell和bash的关系

bash时shell外壳的一种,shell外壳还有其他的一些种类,bash属于shell外壳这个集合

二.Linux中的用户权限

1.用户分类与身份切换

1.用户分类

Linux中的用户分为
1.root用户(超级管理员)
2.非root用户,也就是普通用户(xxx)

2.root用户切换为普通用户

1.su 用户名

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我们现在是root用户,想要切换为普通用户wzs
执行su wzs即可
无需输入wzs用户的密码
切换后当前所处目录不变

2.su - 用户名

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
本质:退出root用户,以wzs用户的身份重新登陆,登陆后进入wzs用户的家目录

3.普通用户切换为root用户

1.su命令

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我们当前是wzs用户,执行su命令并输入root用户的密码后切换为root用户
并且我们所处的目录不变

2.su-命令

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我们当前是wzs用户,执行su -命令并输入root用户的密码后切换为root用户
所处目录更新为root用户的家目录
本质上来说就相当于退出当前用户并以root用户的身份重新登陆

4.普通用户想要切换成另一个普通用户

这些命令需要使用root用户的身份去执行
在这里我们补充一个命令:adduser 用户名:添加用户
passwd 用户名:设置该用户的密码
userdel -r 用户名:删除用户
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我们在这里使用root的身份新添加了一个用户zs
并且设置了这个用户的密码

我们现在是wzs用户,想要切换为zs
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我们这里以su命令为例,su zs,并且输入zs的密码才可以切换为zs
而另一种方法是:从wzs用户切换为root用户,然后再切换为zs,这个过程只需要root用户的密码,不需要zs的密码

可见root用户的密码非常强大,非常重要,那么什么样的人才会具有root密码呢?
一般是管理员

2.sudo命令

如果一个普通用户不想把自己变成root,但是还想让我自己以root的权限执行一条命令
sudo 想要执行的命令(对指定的指令进行提权)

那么这个时候就有一个问题了,
如果我们输入sudo就可以以root用户的身份执行指定的命令,那么root用户的密码不就毫无意义了吗?
答案是:不是的,因为sudo命令不是一般用户能够执行的

比方说我现在是zs,我先使用root用户的身份执行ls命令,那么我就
sudo ls
结果:被拒绝了
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
只有一个用户的用户名在sudoers file这个配置文件中,才允许这个用户执行sudo
否则,不允许他执行sudo命令

那么如何把某个用户的用户名添加进sudoers这个配置文件中呢?
在学完vim的时候我们会进行介绍

三.文件权限

在我们的日常生活中有各种各样的权限,所谓权限就一定是用来限制一部分人的操作的

例如:在CSDN上有一些文章只有vip才能看,leetcode上有些题是会员专属题只有会员才能做…等等等等

而且不同的应用程序或者网站场所等等都是只能提供一些特定的服务的
例如:
我们在爱奇艺当中就不能刷算法题,在leetcode中就不能看电影…等等等等
就算我们同时是爱奇艺和leetcode的会员,也无法做到这些事情
因为爱奇艺本来就无法刷算法题,leetcode本来就不能看电影

也就是说对于一些应用程序或者网站场所,它没有提供那个服务,就算我们权限是最高级别的,
也无法要求它去提供对应的服务

1.身份角色

我们前面提到过Linux中一切皆文件
那么对于某个文件来说有三种身份角色
1.文件的拥有者
2.文件的所属组
3.other

2.为什么要有所属组?

大家可能会想了,文件的拥有者和other我知道为什么要有,但是为什么要有所属组呢?

我们未来的项目开发都是团队合作的,我们的代码很有可能也是需要被团队内部所能够访问的,因此为了区分团队内部成员跟other,Linux创建了所属组这个身份角色

而对于一个文件来说最重要的就是这三个属性:
r:读属性
w:写属性
x:执行属性

我们只用wzs用户创建了一个新文件test.txt
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

-rw-rw-r--
这个第一个-指的是test.txt这个文件不是目录文件
第2,3,4个分别是rw-:指的是文件拥有者对于这个文件拥有读,写权限,没有执行权限
第5,6,7个分别是rw-:指的是文件所属组对于这个文件拥有读,写权限,没有执行权限
第8,9,10个分别是r--:指的是other对于这个文件拥有读权限,没有写和执行权限

文件的详细属性(样例):
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
跟刚才举的现实生活中的例子相同的一点:
如果一个文件本来就没有执行的属性,就算你拥有这个文件执行的权限,你也执行不了这个文件,因为这个文件本来就不是一个可执行文件

所以Linux文件如果想要能够执行:
1.必须具有可执行权限x
2.它必须真的是一个可执行程序

3.如何更改权限?

1.chmod ugoa ± rwx file

u:user(文件的拥有者)
g:group(文件的所属组)
o:other
a:all(所有人)

+:添加对应权限
-:取消对应权限

rwx:读写执行权限
file:要修改权限的文件名

这里以test.txt为例:
例如我现在想要删除所有人的所有权限
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
例如我现在想要增加user的rwx权限
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
这时test.txt对于拥有者来说具有了执行权限,但是test.txt不是一个可执行程序
所以我./test.txt去执行,没有任何反应
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

2.利用8进制设置文件权限

我们发现对于某个文件权限来说,这个文件权限一共有9个字符
对应到每个角色身上一共有3个字符,每个位置一共有两种状态,
一种是拥有这个权限,另一种是没有这个权限

如果我们用0来表示对应位置没有该权限,1来表示对应位置有该权限
所以我们可以用1个8进制数字来代表一个角色的权限,用3个8进制数字来代表整个文件的权限

例如:111:rwx权限都有
101:拥有r和x权限,没有w权限

所以我们可以这样去做
比方说我现在想设置test.txt的权限为:拥有者:rwx,所属组:r-x,other:—
对应到8进制表示为:750
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

4.root用户面前权限有作用吗?

没有作用
比方说我现在把test.txt的权限清空,转为root用户去添加内容,读取内容
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
丝毫没有任何约束
为了便于下面的操作,我新建了几个目录

5.chown和chgrp

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
那么我们来示范一下:
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我现在想把这个文件给zs
但是给不了,为什么呢?

首先我们先明确一点:
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
那么怎么才能给他呢?
一般来说都是要用root去给,或者sudo指令提权
也就是这样:
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
使用root用户强制把这个文件给张三

那么能不能一起改呢?
答案是:可以的

6.own和grp一起改

比方说我想把这个文件的拥有者改成wzs,所属组改成zs
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

7. 匹配原则:

当一个人同时是文件的拥有者和所属组时,会先匹配他是拥有者,然后只看他作为拥有者的权限,不去看他作为所属组的权限
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
当我把文件的拥有者给root之后,我只是文件的所属组,那我就拥有了对于这个文件而言所属组的r权限了
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

四.文件类型

1.Linux中的文件类型

我们可以通过ll来查看Linux中的文件类型
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我们先简单介绍一下链接文件和管道文件

1.链接文件

我们先创建一个test.c文件
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
然后我们gcc编译一下test.c文件,并且把生成的可执行程序a.out重命名为mycmd
然后把mycmd移动到dir/dir1/dir2/dir3的路径中
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
那么这个时候如果我想要在当前这个目录就能去执行mycmd,
那么我们只能
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
这样的话就不是很好,有点太麻烦了
这个时候链接文件就可以派上用场了
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
显而易见,这个链接文件就相当于我们在windows系统中创建的快捷方式
而且,在Linux中跟在windows系统中一样,删除快捷方式并不会影响到原来的可执行程序
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
在现在而言,我们就把它简单地理解为是快捷方式,这个链接文件我们以后还会遇到的

2.管道文件

管道文件跟我们之前介绍过的管道有非常紧密的联系,
我们可以先借助管道的作用来类比一下这个管道文件
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
如图,我们在第一个终端当中向管道文件mypipe中写入hello Linux.然后第一个终端就阻塞了.一直等到我们在另一个终端中接收这个hello Linux,
也就是说借助管道文件,我们就可以在两个终端之间进行信息交流了

管道文件和链接文件我们以后会详细介绍

2.Linux中的文件后缀名

Linux中的文件类型不通过后缀区分(但是:不代表Linux中后缀没有作用,后缀名还是有很大的作用的)

1.Linux中的文件类型是不通过后缀名区分的

首先,Linux中文件类型不通过后缀名区分,这个怎么理解?
首先我们用nano在test.c文件中写了一段C语言代码
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
无论我怎么修改这个可执行文件a.out的名字,我都是可以直接运行的
这也就说明了Linux下的文件类型是不通过后缀区分的

2.Linux中的后缀名的作用

1.Linux中的工具需要通过后缀名去区分文件类型

你不是刚才说过Linux中的文件类型是不通过后缀名区分的吗?
你现在怎么又说Linux中的工具需要通过后缀名去区分文件类型呢?

注意:Linux和Linux中的工具不是一回事
这里的Linux指的是Linux操作系统,
Linux操作系统跟Linux上面的工具,指令,编译器并不相同,也不包含

也就是说,这两句话没有任何冲突,矛盾的地方

下面给大家看一下演示:
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我们把test.c重命名位test.txt,然后gcc编译,发现报错,无法编译
这也就说明了Linux中的工具需要通过后缀名去区分文件类型

2.Linux中的后缀名也是为了方便我们去进行操作

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

3.总结

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

3.file指令

file 文件名

file指令可以更加详细,直接地查看某一个文件的属性
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

五.常见的权限三个问题

一.目录文件的权限知识

为了方便讲解,我们把mycmd.mp4和test.txt文件都删除了
只剩下了一个mydir目录文件
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
现在我身为mydir这个目录的拥有者,我可以进入mydir
查看mydir中的文件
在mydir中创建文件
在mydir中删除文件

下面我们分别去掉对应权限看一下这一连串操作有哪些会受到影响
不过再此之前,我们在重新创建test.txt文件,并向里面写入一些数据
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

1.r权限

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我连ls命令都执行不了,也就是说我根本连查看这个目录当中有什么什么文件的权限都没有

那么我可以写文件吗?
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
创建一个文件可以,查看一个文件的内容也可以,甚至我也可以删除一个文件
但是我连这个目录当中有什么类型的文件都无法知道
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
对于目录文件而言
r:决定了是否可以进行对文件属性信息进行查看的权利(ll/ls -l)

2.w权限

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我们无法新建一个文件,删除一个文件
但是可以查看一个文件的内容,修改一个文件的内容

对于目录文件而言
w:决定了是否可以在目录下进行新建和删除文件

3.x权限

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我无法进入mydir,也无法查看里面的内容,也无法对里面的文件进行任何修改,无法新建和删除文件

对于目录文件而言:
x:决定是否可以进入该目录

二.文件的默认权限

我们新建一个普通文件和一个目录文件
然后ll查看他们的属性
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
发现我们创建的普通文件:默认的权限不是777,而是664
我们创建的目录文件:默认的权限不是777,而是775

为什么呢?

1.权限角度来理解

1.普通文件

首先,我们知道如果一个普通文件有x权限,那么这个文件就有可能是可执行文件

而可执行文件只是这普通文件中的一种而已,占比并不大
所以Linux中的文件刚刚创建的时候,默认的权限应该是不带有x的
也就是说默认的起始权限应该是666

那么为什么是664呢?
我们又注意到,666和664的区别是:
666:对于other来说是rw-
664:对于other来说是r–

也就是说默认权限将other的w权限取消,这也合情合理,因为你other本来就不应该拥有能够修改我这个文件的权限

2.目录文件

首先,对于一个目录文件来说,进入目录,查看目录内容,查看对应的文件内容,新建/删除/修改某个文件都是有必要的,因此起始权限应该是777

那么为什么要是775呢?
777:other:rwx
775:other:r-x

也就是说默认权限将other的w权限取消,这也合情合理,因为你other本来就没有不应该拥有能够在我的目录中新建,修改,删除文件的权限

2.通过(umask:权限掩码)的具体实现

那么Linux是怎么实现的呢?
是通过umask掩码来实现的
这个umask的作用是:定制一个文件被创建的时候的默认权限

我们可以通过umask命令来看一下对应的umask掩码
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
而且umask是可以修改的
比方说我想把它改成0003
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
然后我再去创建一个普通文件,一个目录文件
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
发现:普通文件:664,目录文件:774
那么它是怎么实现的呢?

1.实现的理解

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
然后我们可能会想:这还不简单,
直接相减不就ok了吗?
或者:
异或一下不就ok了吗?

1.异或的错误

首先我们先证明一下为什么异或不对
我们提到过umask等于0003时,
普通文件:664,目录文件:774
那么我们用异或和普通文件为例来推导一下
看能否得出664
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
异或得出665来,所以异或失败

2.减法的错误

还是以上面那个为例
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
减法出来的是663,不对

2.实现方法

其实,实现方法是:
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
这么神奇,其实原理是这样的
只有当文件权限为1并且umask对应位置的数据也为1时,才会将文件权限的那个1改为0

umask先按位取反后,
就只需要让文件权限为1并且umask对应位置的数据为0时,将那个1改为0,如果文件的权限为0,依然保持是0

也就是说只有当文件权限为1并且umask对应位置的数据也是1的时候,该文件的权限才会保持是1,否则就是0
这不就是按位与(&)运算吗

三.粘滞位

1.一个现象

比方说有一天,root想要捉弄一下zs,但是"玩笑"开的太大了
什么玩笑呢?

root在zs的目录中创建了一大堆文件,
而且创建文件之后会还把这些文件的权限置为了000
关于这个shell脚本命令
我之前在Linux常见指令2中提到过
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

i=0; while [ $i -le 100 ]; do echo "hello $i";touch $i.txt; let i++;done

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

i=0; while [ $i -le 100 ];do chmod a-rwx $i.txt; let i++;done

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
权限是000,所以zs无法查看,修改这些文件,
但是root不受权限的约束,所以root可以随意操作这些文件

然后zs的工作环境非常糟糕,zs找了root很多次,root每次都是嘴上道歉,说一定会删了那些文件的,但是root没有一次真正去删过

后来zs受不了了,直接rm 全删了
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
可是那些文件zs没有任何权限啊,zs是怎么做到的呢?
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
因为这是zs的家目录,这个目录是zs的,zs作为这个目录的拥有者
拥有w权限,因此即使你root在我zs的目录下面捣乱,你建的文件,你把文件的权限全都关了,zs没法看,没法修改,但是zs能删除

也就是说:
一个文件能否被删除,并不取决于文件本身,而是取决于文件所处的目录的拥有者是否具有w权限!

2.那么zs该不该删呢?

Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
而且我们系统的家目录本来就只允许这个家的主人(对应家目录的创建者)进入,所以一般情况下是不会出现我wzs在你zs的目录中创建文件的.所以两个普通用户之间基本是不会出现这种情况的
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码

3.粘滞位的引出

我wzs没法进入你zs的目录,你zs也没法进入我wzs的目录,可是如果我们现在有一个需求:
如果我们想要在一个特定的目录下面来实现文件的共享呢?

root创建了一个tmp目录,并且为了实现让多个用户之间可以数据共享,root将other的rwx权限全部放开
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
这里我们发现other的x权限被改为了t,这是为什么?
这个t就是粘滞位,我们为了凸显出粘滞位的作用
所以先把other的t这个权限去掉
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
然后我们让wzs和zs在tmp目录下共享文件
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
这里wzs创建了一个文件test.txt
往里面写了hello Linux
zs成功读取了test.txt文件

成功实现了wzs和zs共享文件的需求

但是呢,假设有一天,wzs和zs闹掰了
wzs把zs的权限关了,也就是把other的权限关了
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
zs没法读,没法写,zs一气之下把test.txt删了
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
在这里zs不该删的,就算zs真的想要删,也不应该让zs有这个权限去删除
但是为什么zs可是删除呢?
因为tmp这个目录对于other来说rwx的权限都放开了
zs和wzs都是other,都有w权限,因此都可以删除彼此的文件

Linux系统必然不能允许这种行为成功执行
因此引入了粘滞位这一解决方案

4.粘滞位的作用

下面我们把other的t权限加上
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
我们再去重复一下刚才的操作
Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉),Linux学习之路,linux,权限,粘滞位,shell外壳,umask掩码
这个时候zs就删不了我wzs的文件了

那么粘滞位的作用是什么呢?
粘滞位:就是给目录中的other设置一个权限位,具有x的意义
同时也进一步对目录权限进行特殊限定:

该目录里面的文件,只有root和文件的拥有者才有权利进行删除
其他人一概不允许!

以上就是:Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉) 的全部内容,
希望能对大家有所帮助!

最后,祝大家1024节日快乐!文章来源地址https://www.toymoban.com/news/detail-717186.html

到了这里,关于Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Shell 命令集合 磁盘管理 】Linux 列出目录中的文件和子目录 ls命令使用教程

    Shell 命令专栏:Linux Shell 命令全解析 ls命令是Linux系统中常用的一个命令,用于列出目录中的文件和子目录。它的作用是显示当前工作目录中的文件和目录列表。 当我们在终端输入ls命令时,系统会将当前目录中的文件和子目录的名称以及相关信息显示出来。这些信息包括文

    2024年02月08日
    浏览(109)
  • Linux区分文件类型,file指令,目录权限,umask掩码,共享文件,Linux中的一些有趣指令

    所属专栏:Linux学习❤️ 🚀 博主首页:初阳785❤️ 🚀 代码托管:chuyang785❤️ 🚀 感谢大家的支持,您的点赞和关注是对我最大的支持!!!❤️ 🚀 博主也会更加的努力,创作出更优质的博文!!❤️ 🚀 关注我,关注我,关注我,重要的事情说三遍!!!!!!!!

    2024年02月08日
    浏览(44)
  • Linux——shell外壳程序

    Linux严格意义上说的是一个操作系统,我们称之为“核心 “ ,但我们一般用户,不能直接使用核心。 而是通过 核心的“外壳”程序,也就是所谓的shell 。 shell是所有外壳程序的 统称 平时程序员所用的指令操作和开发操作都是 在shell外壳之上操作 的 在 Linux中 ,shell外壳指的

    2024年02月07日
    浏览(45)
  • 【Linux】一个小故事让你秒懂shell外壳程序

      目录 🌈前言 🌞shell外壳程序 🐣用户是直接访问操作系统吗? 🐣什么是Shell外壳程序 🐣一个小故事加深你对Shell外壳程序的理解 🐣如何查看自己的外壳程序 🌄总结   🌈 前言 今天我将为大家详细讲解shell外壳程序,并且通过一个小故事来帮助大家理解和加深印象,故

    2024年02月12日
    浏览(46)
  • Linux--文件/目录权限

    拥有者:文件属于谁 所属组:文件属于哪个组 other:不属于上面两种的任何一个,就是other 图示:  分析: ①第一列: d:目录 -:普通文件 p:管道文件 b:块设备 c:字符设备 l:链接文件 ... ②每一组 r:读权限 w:写权限 x:可执行权限 -:表示不存在该权限 语法: 常用选项: R - 递归修

    2024年02月12日
    浏览(49)
  • Linux的基本权限(文件,目录)

    文章目录 前言 一、Linux权限的概念 二、Linux权限管理 1.文件访问者分类 2.文件类型和访问类型 3.文件访问权限的相关设置方法 三、目录的权限 四、权限的总结 Linux下一切皆文件,指令的本质就是可执行文件,直接安装到了系统的某种路径下   Linux 下有两种用户:超级用户(

    2024年02月12日
    浏览(47)
  • linux如何查询目录文件中是否包含某个关键字

    在 Linux 系统中,可以使用 grep 命令来查询目录文件中是否包含某个。 例如,如果你想查询当前目录下的所有文件中是否包含 \\\"keyword\\\",可以使用以下命令: 在这个命令中, . 表示当前目录, -r 表示递归地搜索目录下的所有文件。 如果有任何文件包含 \\\"k

    2024年02月11日
    浏览(54)
  • 『Linux从入门到精通』第 ⑤ 期 - 用户分类+权限管理+umask+粘滞位说明

    目录 💐专栏导读 💐文章导读  🌷用户分类 🌺su指令 🌷认识Linux权限 🌺文件访问者的分类 🌺文件类型和访问权限 🌼文件类型 🌼file指令 🌼 访问权限 🌺文件权值的表示方法 🌼字母表示法 🌼八进制表示法 🌷如何修改文件访问者的权限及相关指令 🌺chmod指令 🌺cho

    2024年02月02日
    浏览(70)
  • Linux 下文件和目录的权限

    权限管理 1、3种基本权限 在Linux中,将使用系统资源的人员分为4类:超级用户、文件或目录的属主、属主的同组人和其他人员。超级用户拥有对Linux系统一切操作权限,对 于其他3类用户都要指定对文件和目录的访问权限。 代表字符 权限 对文件的含义 对目录的含义 r 读权限

    2024年02月07日
    浏览(40)
  • Linux的文件权限与目录配置

    举个例子:假设有一家人,家里只有三兄弟,分别是王大毛、王二毛、王三毛,而这个家庭是登记在王大毛名下,所以“王大毛家里有三个人,分别是王大毛、王二毛、王三毛”,而且这三个人都有自己的房间,并且共同拥有一间客厅。假如还有一个人,名叫张小猪,它是张

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包