Mas*_*ion 6 permissions umask useradd
我最近用 openSUSE 构建了一个非常简单的测试环境。
当我尝试配置共享目录时,不使用 ACL,但出于某种原因在该目录上使用 SetGID,我注意到每个用户的默认 umask 设置为 022(即目录上的 755 和文件上的 644)。
这是在/etc/login.defs
.
我习惯于为普通用户使用 umask 002(即 775 个目录/664 个文件),而为 root 用户使用 022。
如果我想将其设置为所有未来用户添加的默认值,以及如何更改系统上所有现有用户的 umask(当然,root 帐户除外),我是否应该更改上述文件中 useradd 的 umask 值?
umask 022
(或0022
)是 UNIX 系统常用的 umask,它使用传统的用户帐户管理风格。在传统的帐户管理风格中,当创建用户时,会为用户提供一个默认组,该组可以是团队或部门之类的内容,或者可能像“用户”一样简单。setgid 目录(我们可以称它们为“团队目录”)无法按预期工作,因为除非用户明确将文件设为可写,否则其他团队成员无法写入这些文件。这不太可行,尤其是当文件对用户不透明时,例如 git 存储库就是这种情况。这不被视为问题,因为 ACL 提供了完美的解决方案。
umask 002
(或0002
)是使用UPG 用户专用组的UNIX 系统常用的 umask 。在UPG系统中添加用户时,系统会创建一个与用户名和用户ID相同名称和组ID的组。UPG 是一种受 Debian 启发的用户帐户管理方法。正如您刚刚体验到的,UPG 在涉及 setgid 目录时具有一些优势 - 只要用户不覆盖他们的 umask。ACL 不受该覆盖的影响。
最好的解决方案是重构您的用户和组帐户并启用UPG,然后您就“安全”了。
警告!当您使用快捷方式并简单地将 umask 更改/etc/login.defs
为002
(or 0002
) 而不是022
(or 0022
) 时,请注意,所有用户创建的所有文件现在默认情况下都可由同一组中的所有其他用户写入。这是一个安全风险,所以这几乎肯定不是您想要的。
引入 UPG 系统的原因之一是它允许管理员配置002
(or 0002
) 而不是022
(or 0022
)的 umask,以方便地设置 setgid 位,以便在没有所述安全风险的情况下进行项目协作。
据我所知,OpenSUSE系统不提供一种方式安装或YaST,然后使用UPG是纯粹使用命令行创建用户帐户,进行必要的变更后的唯一途径期间启用UPG /etc/login.defs
:更改它有USERGROUPS_ENAB yes
。这里有一个陷阱。UPG 仅在用户 ID 和组 ID 相同时才能正常工作。如果您对正在运行的系统执行此更改,则首先必须更改现有组的 ID,这涉及将组重新分配给具有这些组的所有文件,并且在 LDAP、NFS 和 NIS 的上下文中,这可以是有点毛。
这是有关此主题的一些进一步阅读,当我不熟悉 setgid 与 umask 和 UPG 主题时,我发现它们很有帮助:
回答您的主题中的问题:OpenSuSE 使用传统的 Unixumask
设置,而不是其他一些 Linux 发行版采用的受 Debian 启发的设置。
编辑/etc/login.defs
应该足以改变它;这不会影响当前登录的用户,也没有任何方法可以强制对当前正在运行的程序进行此类更改。~/.profile
它也不会影响在其(或.bash_profile
根据.login
其 shell 的 、 等)中覆盖它的用户。
useradd
不参与此事;它是每个进程的设置,默认值是在登录期间设置的(因此login.defs
而不是/etc/default/useradd
)。