设置文件和文件夹的权限 - 文件夹权限继承总是隐式的吗?

设置文件和文件夹的权限 - 文件夹权限继承总是隐式的吗?

客观的:在根目录上创建一个文件夹,chown 到组并将用户添加到组 - 但用户获得的权限太宽!

考虑以下:

# as root

# we need a user group
groupadd team1

# we need a shared folder
mkdir /project1
chown root:team1 /project1
chmod 770 /project1

# we need users - and they get set pw elsewhere :)
for i in bob tina jim joy; do useradd $i; done

# we add them to the project group 'team1' that gives access to the shared folder
usermod -aG team1 [username]

令人费解的是,用户jim可以在 vim 中创建文件/project1,并且用户joy可以在 vim 中打开、更改和保存该文件或尝试删除该文件,这些操作将在确认这是意图后执行。

问题:这被认为是正确的行为吗?不应chmod 770 /project1仅限于文件夹本身的权限,但不应该像看起来那样:递归到所述文件夹内的文件?

答案1

这是正常行为。

目录的 770 权限允许目录的所有者和目录组的任何成员读取、写入和搜索该目录。这意味着该组的任何成员都可以删除目录中的文件并创建新文件,而与文件本身的权限和所有权无关。这就是你所看到的;无论jim文件上设置什么权限,joy都可以删除它并用另一个文件替换它,这就是vim所做的。

在标准 Unix 权限模型中,您可以对目录设置其他权限。

这里第一个有用的是粘性位,它限制删除:文件只能由其所有者、目录所有者或root.

chmod g+t /project1

会进行此设置,然后joy将无法删除jim的文件。

第二个有用的权限是sgid位,它会导致目录的组应用于目录中新创建的文件:

chmod g+s /project1

要将两者结合起来,请运行

chmod 3770 /project1

了解 UNIX 权限和文件类型了解详情。

相关内容