Red Hat Training

A Red Hat training course is available for RHEL 8

第 27 章 管理 umask

您可以使用 umask 实用程序显示、设置或更改 umask 的当前或默认值

27.1. 显示 umask 的当前值

您可以使用 umask 实用程序以符号或数值模式显示 umask 的当前值。

流程

  • 要以符号模式显示 umask 的当前值,请使用:

    $ umask -S
  • 要在数值模式中显示 umask 的当前值,请使用:

    $ umask
    注意

    当以数值模式显示 umask 时,您可以看到它有四个数字(0002 或者 0022)。umask 的第一个数字代表一个特殊的位(spicky 位、SGID 位或 SUID 位)。如果第一个数字被设置为 0,则不会设置特殊位。

27.2. 显示默认 bash umask

您可以使用多个 shell,如 bashkshzshtcsh。这些 shell 可以是登录或非登录 shell。登录 shell 通常通过打开一个原生或 GUI 终端来调用。

要确定您是在登录 shell 还是非登录 shell 中执行某个命令,请使用 echo $0 命令。

例 27.1. 确定您是否在登录或非登录 bash shell 中工作

  • 如果 echo $0 命令的输出返回 bash,您会在非登录 shell 中执行命令。

    $ echo $0
    bash

    非登录 shell 的默认 umask/etc/bashrc 配置文件中设定。

  • 如果 echo $0 命令的输出返回 -bash,您会在登录 shell 中执行命令。

    # echo $0
    -bash

    登录 shell 的默认 umask/etc/profile 配置文件中设定。

流程

  • 要显示非登录 shell 的默认 bash umask,请使用:

    $ grep umask /etc/bashrc

    输出会返回:

    # By default, we want umask to get set. This sets it for non-login shell.
           umask 002
           umask 022
  • 要显示登录 shell 的默认 bash umask,请使用:

    $ grep umask /etc/profile

    输出会返回:

    # By default, we want umask to get set. This sets it for login shell
           umask 002
           umask 022

27.3. 使用符号值设置 umask

您可以使用带有符号值(组合字母和符号)的 umask 实用程序为当前 shell 会话 设置 umask

您可以分配以下 权限:

  • 读(r)
  • 写(w)
  • 执行(x)

可将权限分配给以下 级别的所有权:

  • 用户所有者(u)
  • 组所有者(g)
  • 其他(o)
  • 所有(a)

要添加或删除权限,您可以使用以下 符号:

  • + 在现有权限之上添加权限
  • - 从现有权限中删除权限
  • = 删除现有权限并明确定义新权限

    注意

    所有在等号(=)后没有被指定的权限都会被自动禁止。

流程

  • 要为当前 shell 会话 设置 umask,请使用:

    $ umask -S <level><operation><permission>

    使用您要 为 umask 设置所有权级别 替换 <level>。使用其中一个 符号 替换 <operation>。使用您要分配的 权限 替换 <permission>。例如,要将 umask 设置u=rwx,g=rwx,o=rwx,请使用 umask -S a=rwx

    如需了解更多详细信息,请参阅 用户文件创建模式

    注意

    umask 只对当前 shell 会话有效。

27.4. 使用数值设置 umask

您可以将 umask 实用程序与数值(数字)搭配使用来为当前 shell 会话 设置 umask

流程

  • 要为当前 shell 会话 设置 umask,请使用:

    $ umask octal_value

    使用数值替换 octal_value。如需了解更多详细信息,请参阅 用户文件创建模式掩码

    注意

    umask 只对当前 shell 会话有效。

27.5. 更改非登录 shell 的默认 umask

您可以通过修改 /etc/bashrc 文件来更改标准用户的默认 bash umask

先决条件

  • root 访问

流程

  1. 作为 root,在您选择的编辑器中打开 /etc/bashrc 文件。
  2. 修改以下部分以设置新的默认 bash umask:

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

    将 umask 的默认值 ( 002)替换为另一个数值。如需了解更多详细信息,请参阅 用户文件创建模式掩码

  3. 保存更改并退出编辑器。

27.6. 更改登录 shell 的默认 umask

您可以通过修改 /etc/profile 文件来更改 root 用户的默认 bash umask

先决条件

  • root 访问

流程

  1. 作为 root,在您选择的编辑器中打开 /etc/profile 文件。
  2. 修改以下部分以设置新的默认 bash umask:

    if [ $UID -gt 199 ] && [ “/usr/bin/id -gn” = “/usr/bin/id -un” ]; then
        umask 002
    else
        umask 022
    fi

    将 umask 的默认值 ( 022)替换为另一个数值。如需了解更多详细信息,请参阅 用户文件创建模式掩码

  3. 保存更改并退出编辑器。

27.7. 更改特定用户的默认 umask

您可以通过修改特定用户的 .bashrc 来更改特定用户的默认 umask

流程

  • 将指定 umask 的数值的行附加到特定用户的 .bashrc 文件中。

    $ echo 'umask octal_value' >> /home/username/.bashrc

    使用数值替换 octal_value,并使用用户名替换 username。如需了解更多详细信息,请参阅 用户文件创建模式掩码

27.8. 为新创建的主目录设置默认 UMASK

您可以通过修改 /etc/login.defs 文件来更改为新创建的用户主目录指定 UMASK 的权限。

流程

  1. 作为 root,在您选择的编辑器中打开 /etc/login.defs 文件。
  2. 修改以下部分以设置新的默认 UMASK

    # The permission mask is initialized to this value. If not specified,
    # the permission mask will be initialized to 022.
    UMASK 077

    将默认数值(077)替换为另一个数值。如需了解更多详细信息,请参阅 用户文件创建模式掩码

  3. 保存更改并退出编辑器。