今天我正在清理我的家庭系统上的组和权限,并重新熟悉了 umasks。我的系统(Ubuntu 18.10)上的默认值似乎是 002,但对于 root,它是 0022。
忽略当前目的的额外位,这让我思考。使用默认值 002,与我的用户名关联的组中的任何用户都可以编辑我的文件。使用 022,他们不会。现在,我以前从未使用过这个组(也没有使用过 root 的组),所以我不知道为什么有人会使用它,也不知道在这种情况下哪些权限是合适的。
原则上,您为什么会选择其中一个选项而不是另一个选项?对于加分,为什么(这部分)root的umask和普通用户不一样?
这个想法并不是用户的个人组中会有其他用户。这个想法是可能有项目组等,并且他们可能有多个用户作为成员。然后文件的组所有者可以是项目(不是任何用户个人),由项目目录上的setgid强制执行。使用 umask 允许对组进行写访问,这样的文件将可由项目组的所有成员写入。
它的工作原理是这样的,假设
foo
是一个使用 umask 的用户002
:请注意文件是如何创建的 a) 具有组所有者
proj
(因为目录上的setgid),以及 b) 具有对整个组的写权限(因为 umask)。可以使用默认 ACL设置目录,而不是要求用户具有正确的 umask,如果设置了 umask,它会替换 umask 的功能。至少在这里和Red Hat 的手册中有更多关于每个用户组和 umask 的内容(这是 RHEL 4 的手册,较新的手册似乎对此事更简短。)这个问题也相关:为什么每个用户都有他们的自己的组?
这里没有任何东西可以防止用户手动弄乱权限。这是无法阻止的,因为文件所有者可以随时更改他们认为合适的权限。现在人们也更多地使用网络服务进行协作,而这种具有文件和目录权限的体操是没有必要的。