当用户登录到另一个组时,如何更改其 umask?

当用户登录到另一个组时,如何更改其 umask?

我希望umask在用户切换到非默认组时对他们更加宽容。只是为了说明我的意思:

$ id
uid=500(beamin) gid=500(beamin) groups=10(wheel)

$ umask
0022

$ sg wheel

$ umask # I want this to now be 0002 instead
0022 

我正在考虑添加一个/etc/profile.d/如下所示的脚本:

if [ "`id -u`" -ge 500 ] && [ "`id -g`" -ne "`id -u`" ]; then
   umask 0002
fi

我得到这个结果是500因为我们所有的用户uid都大于或等于这个值。这是最好的方法吗?或者有人有更有意义的方法吗?

答案1

我认为你的解决方案很好。在 shell 脚本中,你可以使用:

(umask 022;exec sg wheel )

测试:

umask 002
umask
( umask 022; exec sg wheel umask)
umask

有关替代解决方案,请参阅我的类似帖子:如何在 Ubuntu 9.10 上为编辑 /var/www 中的多个站点的多个用户设置权限结构?

答案2

您可以创建一个脚本 mysg,执行 sg arg,然后执行 umask X,其中 X 是 002 或 022,具体取决于输入的组。这可能不是最优雅的解决方案...

相关内容