如何永久改变 umask 模式?

如何永久改变 umask 模式?

我读过几篇文章,比如旧的如何改变umask模式,但仍然不能 100% 弄清楚我有 Ubuntu 14.04 运行 Xenial 内核,默认umask 0002我的目标是0027 掩码在整个系统中永久启用该模式。我该如何实现它?最好的方法是什么?

答案1

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

从这里我找到了简单的步骤如何设置umask模式0027只需在终端运行:

sudo gedit /etc/login.defs

或者nano您更喜欢哪一个。

搜索以下行:

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

ERASECHAR   0177
KILLCHAR    025
UMASK       027

编辑最后一行引用玛莎这将设置umask0007要使效果生效,只需注销并重新登录即可。

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

因此对于umask 0027生效滚动到以下行:

USERGROUPS_ENAB yes

并将其更改为:

USERGROUPS_ENAB no

完成。退出后再重新登录,在终端中运行umask,它会给你0027模式。

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

touch testfile

现在检查权限:

stat -c %a ~/testfile

它应该给你640

更新

还有另一种简单的方法:

nano ~/.bashrc

添加

#Set umask mode
umask 0027

关闭并保存,注销并登录。应该也适合您。

答案2

一个简单的man -k umask应该会引导你阅读man pam_umask,其中部分内容如下:

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. 

它还说,

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)

答案3

我使用 JoKeR 的上述回答来实现系统范围的 umask 027,但我意识到当我使用USERGROUPS_ENAB no它时需要更多的组管理。所以我觉得我找到了一个更好的答案, 基本上:

  1. 确保已安装 pam-modules 包;这使得 pam_umask 模块可用。
  2. 确保 /etc/pam.d/common-session 中有一行格式
    session optional pam_umask.so
    这样 pam_umask 就启用了。
  3. 根据 pam_umask 手册页,默认 umask 是在登录时通过按顺序检查以下每个位置来确定的:
    • /etc/pam.d/common-session 中设置了系统范围的硬默认设置。要以这种方式设置,请将上述文件中的行替换为以下内容:
      session optional pam_umask.so umask=027
    • /etc/passwd 中单个用户的 GECOS 字段中的条目将覆盖该特定用户的软系统范围默认值。使用以下命令创建该条目:
      chfn --other='umask=027' username
    • /etc/default/login 中的一行UMASK=027(您可能需要创建该文件)设置了系统范围的软默认值。
    • /etc/login.defs 中的 UMASK 值。该值还用于其他用途(计算正在创建的新用户的主目录权限;有关详细信息,请参阅 /etc/login.defs 中的注释)。因此,最好避免依赖此值来设置常规登录的默认 umask,以保持独立。

所以现在对我来说,我使用第一个选项(在 /etc/pam.d/common-session 中设置的系统范围默认选项),而且效果非常好。

祝你好运我的朋友们:)

相关内容