更改 umask 值

更改 umask 值

我想将umask特定用户的值从 022 更改为 002 jboss。现在 /etc/profile 中的设置如下:

if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 002
 else
umask 022
fi

如果我更改/etc/profile,它将影响所有用户,但我只想更改用户的设置jboss。为此,我可以.basrhrc/.bash_profile在用户的​​主目录下进行编辑。但对我来说问题是用户没有 shell 。任何umask为没有 shell 的用户设置的方法。

答案1

umask是进程的属性,而不是用户的属性。

它由子级继承,并在执行命令(甚至是 setuid 命令)时保留。

它是通过umask()系统调用设置的。该umask()系统调用的 shell 接口是umask内置命令。

每当进程更改 uid 时,没有什么神奇的方法可以更改 umask,但可以配置一些通常用于更改 uid 的程序。至少在 Linux 上使用 PAM 堆栈(通常是登录程序)、使用模块pam_umasksudo.

但在这里,考虑到该用户没有 shell,我想它不是登录的用户,并且您实际上希望以该用户身份运行一个特定的软件来拥有该 umask。然后,这应该只是启动该软件的问题:

(umask 002; exec that-software)

在 shell 脚本中。

相关内容