0


【Linux】多用户协作

前言

前一个系列【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,已经有粘滞位了。所以用它就可以。

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

标签: linux 学习 笔记

本文转载自: https://blog.csdn.net/2301_82135086/article/details/143807906
版权归原作者 Octopus2077 所有, 如有侵权,请联系我们删除。

“【Linux】多用户协作”的评论:

还没有评论