如何永久更改 umask 模式?

JoK*_*KeR 10 permissions umask

我已经阅读了几篇像这篇旧文章如何更改umask模式,但仍然无法 100% 弄清楚我使用 Xenial 内核运行 Ubuntu 14.04,默认umask 为 0002,我的目标是永久设置0027 umask模式整个系统。我该如何实现?这样做的最佳方法是什么?

wal*_*tor 6

一个简单的man -k umask应该让你阅读man pam_umask,whish 说,部分:

DESCRIPTION
pam_umask is a PAM module to set the file mode creation mask of the
current environment. The umask affects the default permissions assigned
to newly created files. 
Run Code Online (Sandbox Code Playgroud)

它还说,

The PAM module tries to get the umask value from the following places
   in the following order:

   ·   umask= argument

   ·   umask= entry in the user's GECOS field

   ·   UMASK= entry from /etc/default/login

   ·   UMASK entry from /etc/login.defs (influenced by USERGROUPS_ENAB in
       /etc/login.defs)
Run Code Online (Sandbox Code Playgroud)


JoK*_*KeR 5

感谢@waltinator 为我指明了正确的方向。

从这里我想出了一个简单的步骤,即如何将umask模式设置为0027只需在终端中运行即可:

sudo gedit /etc/login.defs
Run Code Online (Sandbox Code Playgroud)

或者nano你更喜欢哪个。

搜索行:

Prefix these values with "0" to get octal, "0x" to get hexadecimal.

ERASECHAR   0177
KILLCHAR    025
UMASK       027
Run Code Online (Sandbox Code Playgroud)

编辑引用UMASK的最后一行,这会将umask设置为0007以使其生效,只需注销并重新登录即可。

请注意上面的行:如果 USERGROUPS_ENAB 设置为“是”,这将修改此 UMASK 默认值...用作组权限,例如 022 将变为 002

因此,要使 umask 0027生效,请向下滚动到该行:

USERGROUPS_ENAB yes
Run Code Online (Sandbox Code Playgroud)

并将其更改为:

USERGROUPS_ENAB no
Run Code Online (Sandbox Code Playgroud)

完毕。注销并重新登录后,在终端中运行umask,它会给你0027模式。

现在touch在终端中创建一个新文件:

touch testfile
Run Code Online (Sandbox Code Playgroud)

现在检查权限:

stat -c %a ~/testfile
Run Code Online (Sandbox Code Playgroud)

它应该给你640

更新

还有一个简单的方法:

nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

添加

#Set umask mode
umask 0027
Run Code Online (Sandbox Code Playgroud)

关闭并保存,注销并登录。也应该为你工作。