谁应该拥有群组共享的文件以及它们应该存放在哪里

谁应该拥有群组共享的文件以及它们应该存放在哪里

我正在配置一个 Linux 工作站,供少数用户 (20-30) 使用。这些用户将属于一小组 (5-10),每个用户至少属于一个组,并且可能属于多个组。工作站上有一些文件只能由特定组的成员写入。每个文件只能由一个组的成员写入,因此标准 Linux 权限应该可以正常工作。我有两个问题。

谁应该拥有已经存在的文件?我正在考虑root创建一组与组相对应的虚拟用户。我缺少更好的选择吗?这似乎不太可能是一个独特的情况,所以我希望有一个标准约定。

第二个问题是我应该把文件放在哪里。如果我创建了虚拟用户,我可以在/home/.如果 root 拥有这些文件,我应该选择/srv/groups/“/share/”还是“/share/”?还有约定吗?

答案1

谁应该拥有已经存在的文件?我正在考虑要么 root 要么创建一组与组相对应的虚拟用户。

让它们拥有 root 但属于一个公共组,假设文件被屏蔽 0002(即组可写),如果您创建用户来匹配组和组,则在防止它们意外重新拥有方面有一点优势。组中的人员可以以该用户身份登录。我指的是事故这里是因为组中的恶意用户在任何情况下都只能删除这些文件。但如果他们拥有root(或任何其他用户)那不是该组),那么虽然组中的某人仍然可以写入它们(从而删除它们),但他们将无法重新拥有或修改权限,从而使组中的其他成员随后无法访问该文件。

如果用户要创建文件,则使用组但没有固定所有者(即文件可以由任何人拥有,但应该位于具有组权限的正确组中)具有优势(见下文)。

仅仅为了匹配组而创建新用户可能会产生比实际解决的问题更多的潜在问题。如果使用组权限有效,请坚持使用。您还可以为超级用户创建一个小命令:

#!/bin/sh
chown -R root:groupx $1
chmod -R g+w $1

并使用它foo /some/directory。这将确保树中的所有内容都是拥有的rootgroupx并且组是可写的。

root如果 root 然后添加设定值位到文件,但我相信只有所有者才能做到这一点。如果您真的很担心,请创建一个虚拟用户,但不要与该组匹配。一种没有特权但没有人​​可以使用的东西。

用户创建新文件还存在一个问题,默认情况下这些文件将归他们所有。他们将能够将其更改为正确的组,这将使其他人可以访问该文件,但他们无法更改所有者。出于这个原因,并且因为人们可能会忘记,您可能希望foo /some/directory定期或在适当的时候运行(例如,当没有人登录时,因为更改所有权可能会影响打开文件的软件)。

考虑到最后一段,你可以说业主根本不重要,只有群体才是重要的。在这种情况下,foo命令应该使用:

chgrp -R groupx $1

代替chown

我应该把文件放在哪里

/home/groupx即使groupx是一个组而不是一个用户,创建一个也绝对没问题。唯一的潜在问题是,如果您随后去创建一个具有相同名称的用户 - 但您无论如何都不希望这样做。将文件放在那里并foo /home/groupx.

如果您不希望用户能够创建文件,请将目录设置为 755。他们仍然可以修改其组拥有的文件。

答案2

通常,在这种情况下,文件将归最后保存它们的人所有(或者创建它们的人,如果使用修改现有文件而不是创建新版本的程序编辑它们)。如果您要创建一组初始文件,我会将它们保留为您的帐户所拥有,除非您为不属于您的组播种数据,在这种情况下,root 与任何组一样好。但这没什么大不了的。

/usr对于既不属于系统 ( , /var, /bin, /sbin, /lib, /etc) 也不属于用户主目录 ( /home)的数据,没有广泛采用的约定。您可以在 下创建其他目录/home,也可以将它们放在其他地方。/srv原则上是服务器使用的数据,但作为系统管理员,您可以自由地将任何您想要的数据放在那里。/net/MACHINENAME是在机器相互导出文件系统的网络上“存储在 MACHINENAME 上的各种数据”的流行选择。

相关内容