如何为系统用户设置umask?


14

是否可以umask为系统用户(使用创建useradd --system username)设置?

Answers:


14

设置用户umask的三种普通方法。

  1. 设置UMASK/etc/login.defs
  2. 添加pam_umask.so到您的PAM配置中/etc/pam.d
  3. 在外壳启动文件中进行设置,例如 /etc/profile

在这方面,系统用户和普通用户之间没有区别。

但是我假设您正在尝试使用自定义umask启动守护程序?

问题是:当用户登录时,上述所有选项都会发生。如果您正在运行守护程序,它将永远不会登录。它由init启动,然后以root setuid用户身份运行,或者以您指定的系统用户身份运行。

您的主要选择是:

  1. 放入umask您的初始化脚本(以a grep umask /etc/init.d/*为例)
  2. 配置init以使用自定义umask(systemd.exec upstart umask)启动程序
  3. 如果使用start-stop-daemon,则传递umask选项
  4. 修改程序本身以调用umask函数或系统调用

您是否知道如何在Arch Linux(使用systemd)上为SSHFS(sftp服务器)设置umask?如您所指出的,您列出的前三个选项没有任何作用。
MountainX换莫妮卡

2

系统用户与“普通”用户在以下三个方面有所不同:密码到期,主目录(系统用户没有一个)和UID(系统用户通常低于任意阈值)。

在一般情况下,您几乎完全不走运。您可以使用PAM设置umask,但是PAM会根据这三个差异以外的条件来选择行为。

换句话说,您无法让PAM区分“系统”用户和“非系统”用户。这给您两个选择:

  • 您可以使用PAM为所有人设置umask(例如check in /etc/login.defs),然后为/etc/bash.bashrc(或类似的)非系统用户显式设置umask 。

  • 或者您编写自己的PAM模块来执行此操作。我认为这会受到很多人的欢迎,因为设置umask是常见的要求。

请以一小撮盐来回答这个问题。这种请求非常普遍,如果现在有更好/合适的方法,我也不会感到惊讶。


1
已经有一个名为pam_umask的PAM模块。问题在于它仅在登录时有效。
Mikel 2012年

啊,我想您知道pam_umask,但可能不知道pam_succeed_if。使用pam_succeed_if,可以使任何其他模块仅应用于给定的用户或组。但是我仍然认为PAM在这里不会有所帮助。
Mikel 2012年

1

正如@Mikel所建议的那样,如果您尝试配置作为守护程序的系统帐户,请尝试配置守护程序本身。

我来到了这个问题,寻找如何在MacOS上为_www帐户设置umask。尽管这很困难,如上面的答案所示,但我发现我可以通过将apache服务配置为user ==守护程序来解决它。

我奇怪地找不到启动脚本(通常在/etc/init.d/中,但是在Library / LaunchDaemons /中的Mac上),但是在以下网站的帮助下:http ://krypted.com/mac-security/apache2-umasks /发现apache有其自己的特定环境脚本。

$ sudo vim /usr/sbin/envvars
    umask 002

可能其他守护程序也有类似的方法,这在特定情况下可能会有所帮助。


但是,您如何将“ umask 002”写入此文件?!?!?即使是root / sudo,我也会遇到权限被拒绝的错误,并且根据苹果的说法,甚至root也不允许在/ usr / sbin目录support.apple.com/zh-cn/HT204899
Schurik,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.