nfa*_*rar 5 linux services umask
在我的 Ubuntu 11.04x64 服务器上,我运行的服务帐户没有登录也没有主目录。这些服务帐户负责运行作为服务调用的进程。
当这些服务创建新文件时,我需要使用权限 664 (UMASK 002) 创建它们。
我编辑了 /etc/profile umask 设置以反映这一点。我看到现在我的用户帐户创建了反映这个新 umask 设置的文件,但是当我使用他们的帐户(sudo -u serviceaccount touch newfile)手动创建文件时,服务帐户不会。
有什么建议?
如果服务是通过 Upstart 或 /etc/init.d 启动的,请编辑相应的初始化脚本。
umask 02位于脚本的顶部(它们是普通sh脚本)umask 02任何地方Linux 没有严格的“登录”定义,帐户只是一个可以(或不能)与名称/homedir/等关联的 UID。
当您在控制台/通过 SSH 登录时,登录程序(或 SSH 守护进程)使用 PAM 来设置环境(可能pam_umask),然后使用“login”标志启动您的 shell。该/etc/profile脚本属于sh和bash shell,它们仅在“登录”调用时读取它。
当您使用sudo touch ...或时sudo /etc/init.d/foo start,sudo仍然调用 PAM 进行身份验证/帐户/会话设置,但根本不启动 shell,这意味着所有“profile”或“bashrc”文件将被忽略。(也就是说,除非您使用sudo -i ...。)
当 Upstart 运行服务时,它只是将 UID 切换为您的服务的 UID,跳过任何“配置文件”脚本或 PAM 配置。读取的唯一配置是 中的服务文件/etc/init,您应该在其中放置 umask 设置。