【Linux】多用户协作

devtools/2024/11/20 9:18:52/

前言

前一个系列【Linux之权限】我们详细地了解了Linux中权限的问题,那么,我们理解了用户间的“隔离”,那么又该怎么进行多用户协作呢?
本文就来回答这个问题。

现象

在正式回答这个问题之前,我们先来看一下这个现象。

我们在用户whb的所属的一个目录里以root身份创造了一个文件root.txt,其拥有者和所属组都是root,然后我们通过sudo chmod a-rwx root.txt把所有人的所有权限去掉。

可以看到,所以现在我们的whb没法cat和echo这个root.txt,没有读写权限。但是我们居然可以把这个文件删除

这个问题的原因是什么?这正常吗?这其实是正常的。因为当前我们是在lesson5目录下:

whb是这个目录的拥有者,对该目录有写权限,而对目录有写权限就意味着可以在这个目录里创建和删除文件。因为一个文件能否被删除和文件自己无关!而是和所处的目录权限有关。

一个用户对文件所处的目录有写权限,那么就算这个文件没有给这个用户开放任何权限,这个用户却可以把这个文件删除。

不过除了root,一般情况下没有人可以进入“我家”,在“我家”新建文件。

多用户协作

但若两人想协作呢?想共同修改或者查看一个配置文件。

它俩账号之间隔离,进入不了彼此的目录。如果两个用户之间要进行文件级别的协作呢?那么这个文件就不能放在任何一个用户的私人账号里。

应该放在哪?

Linux里不只有home目录。

Linux的根目录下有一个和home平级的路径:tmp

ll / 我们可以看到根目录里:

bin或者user/bin里面一般放的就是系统的指令;

boot里面一般是与启动相关的操作系统或配置文件;

dev是启动时操作系统所识别到的各种设备,如键盘、显示器、网卡;

etc都是系统启动后的一些配置文件;

home我们已经知道了;

lib或者user/lib代表的一般是一些动静态库;

lib64指的是64位的库;

lost+found这个不管;

media是一些媒体设备(u盘);

mnt和opt不管;

proc是查看进程相关的信息;

root就是root账号;

var是日志信息;

……

我们将目光放到tmp路径,这里面放的是系统产生的各种临时文件。

根目录可以用d选项进行查看其权限:

ls -ld /

根目录的拥有者和所属组都是root,想在根目录下新建文件,也必须使用root权限。

我们现在在根目录下新建一个temp-backup目录,并把权限放开。

(共享文件夹一般都属于root)

(其实以后用tmp就可以)

但是,这个目录里面的文件现在,谁都能删除。

共享类目录下,别人为什么能删自己的文件呢?因为删一个文件和文件本身无关,而是和所处目录的写权限相关

但是other的w我们不能去掉,因为这样,其他人就不能在这个目录下创建文件,共享的作用就不复存在了。

这就形成了一个悖论。

所以 Linux中引入了一个新的权限标志位,粘滞位:t

可以看到,x的位置变成了t。

这种给目录添加的t,叫做粘滞位,任何一个人可以在共享目录下新建,但是不能让非拥有者删除。只给需要共享的目录添加粘滞位。

但这粘滞位,对root没办法,它还是可以删除里面的文件。

我们可以看回根目录下的tmp,已经有粘滞位了。所以用它就可以。

在这里插入图片描述
=_=
本文结束了,祝阅读愉快!


http://www.ppmy.cn/devtools/135442.html

相关文章

javaScript交互补充(元素的三大系列)

1、元素的三大系列 1.1、offset系列 1.1.1、offset初相识 使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等 获得元素距离带有定位祖先元素的位置获得元素自身的大小(宽度高度)注意:返回的数值都不…

DAY30|贪心算法Part04|LeetCode:452. 用最少数量的箭引爆气球、435. 无重叠区间、763.划分字母区间

目录 LeetCode:452. 用最少数量的箭引爆气球 基本思路 C代码 LeetCode:435. 无重叠区间 基本思路 C代码 LeetCode:763.划分字母区间 基本思路 C代码 LeetCode:452. 用最少数量的箭引爆气球 力扣代码链接 文字讲解:LeetCode:452. 用最少数量的箭引爆气球 视…

运维面试题.云计算面试题之四.K8S

常见的k8s运维面试题 1、简述ETCD及其特点? etcd是一个用于配置共享和服务发现的键值存储系统,能够为整个分布式集群存储关键数据,协助集群正常运转 服务端将配置信息存储在etcd中,客户端从etcd中得到配置信息,etcd监听配置信息的变化,发现配置变化通知到客户端 特点 - 安…

云原生周刊:Kubernetes v1.32 要来了

开源项目推荐 Woodpecker Woodpecker 是一款轻量级且功能强大的 CI/CD 引擎,以其高度可扩展性和易用性著称。它支持多种版本控制系统与编程语言,能够灵活适配不同开发流程,帮助团队实现高效的持续集成与交付。无论是个人项目还是大型团队&a…

crypto三方包的用法

文章目录 1. 概念介绍2. 方法与功能2.1 基本用法2.2 加密算法3. 示例代码4. 内容总结我们在上一章回中介绍了"FlutterCacheManager组件"相关的内容,本章回中将介绍一个加密工具包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 加密主要是为了保护一些重要数据…

Android 源码编译资料集

1、window环境下载Android系统源代码的方法 window环境下载Android系统源代码的方法 - yongfengnice - 博客园 2、安卓构建参考 构建 Android | Android Open Source Project 3、使用windows系统的WSL编译Android10系统 Android系统开发 使用windows系统的WSL编译Androi…

STM32 的 DCMI 接口与 ESP32 的 DVP 接口的区别与作用

STM32 的 DCMI 接口与 ESP32 的 DVP 接口的区别与作用 在嵌入式系统中,图像传感器或摄像头模块的数据传输是一项常见且复杂的任务。为了实现图像数据的高效传输,许多微控制器和处理器设计了专用的接口。这些接口能够处理来自摄像头模块的并行图像数据流…

[控制理论]—位置式PID与增量式PID

位置式PID与增量式PID 1.位置式PID 按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,即: t ≈ k T ( k 0 , 1 , 2... ) …