为 su root 设置 umask

为 su root 设置 umask

在我的用户帐户中,我将与 my 一起umask设置,但我希望 root 使用 a ,无论我如何成为 root(例如,在 tty 上直接以 root 身份登录或使用 sudo 或 su)。如果我以 root 身份登录到 tty,我会得到,所以没问题。因为我已经设置了022.bashrcumask077077sudo/etc/sudoers

Defaults umask = 0022
Defaults umask_override

我明白了077,所以又好。对于su,在 /root/.bashrc 中我可以设置

umask 022

我得到了umask077但我不相信这是正确的方法。

你如何umask设置su root

潜在相关的是我/etc/login.defs

UMASK           077
USERGROUPS_ENAB yes

答案1

这个答案是 bash 特定的,其他 shell 也有类似的功能,但既然你的答案提到了,.bashrc我将假设你正在使用 Bash。

您遇到的是 shell 可以作为交互式 shell 或登录 shell 来调用。

  • bash -l- 登录
  • bash -i- 交互的

如果您查看 Bash 手册页的“INVOCATION”部分,您会注意到以下 2 条注释:

  • 登录

    登录 shell 的参数零的第一个字符是 -,或者以 --login 选项开头。

  • 交互的

    交互式 shell 是一种不带非选项参数且不带 -c 选项的 shell,其标准输入和错误都连接到终端(由 isatty(3) 确定),或者是使用 -i 选项启动的 shell。
    如果 bash 是交互式的,则 PS1 已设置并且 $- 包括 i,允许 shell 脚本或启动文件测试此状态。

交互式和登录 shell 按以下顺序读取配置文件。它首先执行此操作:

  1. /etc/配置文件

接下来是按以下顺序其中一个(以最先找到的为准):

  1. 〜/ .bash_profile
  2. 〜/.bash_login
  3. 〜/.profile

交互式 shell(不是登录 shell)读取附加配置文件~/.bashrc.请注意,他们从不直接读取/etc/bashrc配置文件。他们通过文件阅读了~/.bashrc这一节,因为:

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

那么 umask 怎么样呢?

要让两种类型的 shell 都能够读取,umask您需要将其包含在上面提到的两种类型的 shell 调用都会读取的文件之一中,因此我将其放在/root/.bash_profile.

答案2

您可以设置 root 的 umask/root/.profile并告诉su将 shell 作为登录 shell 启动。

su -

相关内容