自推出以来,Linux 一直被设计为支持多用户环境。对于一个工作系统上的许多用户和组来说,在同一个组中的用户之间经常会遇到共享文件夹,并且文件夹中的文件共享也会出现问题。
在这篇文章中,TipsMake.com 讨论了如何使用粘滞位来微调共享文件夹上的文件访问。
为了便于说明,文章有一个系统有 3 个用户 - john1, john2 和 john3 ,它们都是共同组的成员。
假设 'john1' 创建一个名为 'shared-dir' 的新目录,该目录在所有 之间共享johns 用户。
通过ls
命令我们可以查看'shared-dir'的权限,理解如下:只有 'john1' 可以读取内容以及写入目录。因为我们使用的是共享文件夹,所以目标是让组中的所有用户写入 'shared-dir'。
为此,我们将使用 chmod
命令修改权限。我们将为所有 johns 用户添加写入权限,如下所示。
我们可以看到 'shared-dir' 的更新权限,如下所示。黄色下划线部分表示 johns 组已被授予写入权限。
将文件添加到共享文件夹
现在,john1 将两个文件(j1_file1.txt 和 j1_file2.txt)添加到'共享目录'。
为便于理解,文件名前两个字符与用户名同义。
同样,john2也可以写入'shared-dir'目录。
目前'shared-dir'中有4个文件。
<图>当前设置有问题吗?
文件 j1_file1.txt 由文件所有者 john1 创建。现在,john2 登录并尝试删除此文件,他将能够这样做。
'john1' 是文件所有者,但 'john2' 可以删除它,因为写入权限授予所有johns 组 .
的成员这种情况并不理想。我们希望所有用户都能够写入目录,但只有文件所有者才能删除文件。如何实现?
引入粘性位
粘滞位是一种特殊权限,在整个组的写权限文件夹上设置。该位确保组的所有成员都可以写入目录,但只有文件创建者或文件所有者才能删除它。
带有标志- t 的 chmod
命令可用于在文件夹上放置粘滞位。
更新权限见下图。
<图>现在,如果 'john2' 试图删除 'john1 创建的文件 'j1_file2.txt' ', 不允许该操作。
如果你删除了其他人的可执行权限,那么'others'部分用大写字母表示文件夹中是否存在粘滞位的权限字符串。文件夹上粘滞位的行为保持不变。
<图>chmod 命令的变体
chmod
命令的数字形式也可用于在文件夹上放置粘滞位。
chmod nxyz
内:
- n=1 :指的是粘性位。 n的其他值参考其他特殊权限。
- x :文件所有者的权利。
- y :授予有权访问文件的组的权限。
- z:他人的权利
要在 'shared-dir' 上设置粘滞位,请使用以下命令:
chmod 1755 shared-dir
该命令产生的结果与在现有默认权限上使用 + t 的结果相同。
粘位的使用只适用于文件夹,用于文件时没有意义。
评论