客观的:在根目录上创建一个文件夹,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 权限和文件类型了解详情。