在我的用户帐户中,我将与 my 一起umask
设置,但我希望 root 使用 a ,无论我如何成为 root(例如,在 tty 上直接以 root 身份登录或使用 sudo 或 su)。如果我以 root 身份登录到 tty,我会得到,所以没问题。因为我已经设置了022
.bashrc
umask
077
077
sudo
/etc/sudoers
Defaults umask = 0022
Defaults umask_override
我明白了077
,所以又好。对于su
,在 /root/.bashrc 中我可以设置
umask 022
我得到了umask
,077
但我不相信这是正确的方法。
你如何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 按以下顺序读取配置文件。它首先执行此操作:
- /etc/配置文件
接下来是按以下顺序其中一个(以最先找到的为准):
- 〜/ .bash_profile
- 〜/.bash_login
- 〜/.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 -