今天我正在清理家庭系统上的组和权限,并重新熟悉 umask。我的系统(Ubuntu 18.10)上的默认值似乎是002,但对于root来说它是0022。
忽略当前目的的额外部分,这让我开始思考。默认值为 002,与我的用户名关联的组中的任何用户都可以编辑我的文件。有了022,他们就不会了。现在,我以前从未使用过这个组(也没有使用过 root 的组),所以我不知道为什么会使用它,也不知道在这种情况下哪些权限是合适的。
原则上,您为什么会选择其中一个而不是另一个?为了加分,为什么root的umask(这部分)会和普通用户不同呢?
答案1
默认值为 002,与我的用户名关联的组中的任何用户都可以编辑我的文件。
这个想法并不是说用户的个人组中会有其他用户。这个想法是可能有一些团体项目或类似情况,并且它们可能有多个用户作为成员。文件的组所有者可以是项目(而不是任何用户个人),由以下方式强制执行:设置gid在项目目录上。由于 umask 允许对组进行写访问,因此项目组的所有成员都可以写入此类文件。
它的工作原理如下,假设foo
用户使用 umask 002
:
#[将用户 foo 添加到组 proj] # mkdir /工作/项目 # chmod u=rwx,g=rwx,o=,g+s /work/proj # ls -ld /工作/项目 drwxrws--- 2根项目 4096 六月 14 17:48 /work/proj/ $ 掩码 0002 $ cd /工作/项目 $ echo "这里有一些数据" > file.txt $ ls -l 文件.txt -rw-rw-r-- 1 foo proj 15 Jun 14 17:51 file.txt
请注意该文件是如何与组所有者一起创建的proj
(因为设置gid在目录上),b)对整个组具有写权限(因为 umask)。可以使用以下命令来设置目录,而不是要求用户拥有正确的 umask默认访问控制列表,如果设置的话,它将取代 umask 的功能。
至少还有更多关于每个用户组和 umask 的内容这里并在红帽的手册(这是 RHEL 4 的手册,较新的手册似乎在这个问题上更简短。)同样相关的是这个问题:为什么每个用户都有自己的组?
这里没有什么可以阻止用户手动弄乱权限。这是无法阻止的,因为文件所有者可以随时更改他们认为合适的权限。如今,人们也更频繁地使用网络服务进行协作,而这种文件和目录权限的练习是不必要的。