Su

為 su root 設置 umask

  • July 15, 2013

在我的使用者帳戶中,我將 設置umask022與我的.bashrc,但我希望 root 使用 a umaskof077無論我如何成為 root (例如,在 tty 上直接以 root 身份登錄或使用 sudo 或 su)。如果我以 root 身份登錄到 tty,我會得到077,所以沒問題。因為sudo/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

這個答案是 bash 特定的,其他 shell 也有類似的功能,但是既然你提到了答案.bashrc,我會假設你正在使用 Bash。

您遇到的是一個 shell 既可以作為互動式 shell 也可以作為登錄 shell 呼叫。

  • bash -l- 登錄
  • bash -i- 互動的

如果您查看“INVOCATION”部分的 Bash 手冊頁,您會注意到以下 2 條評論:

  • 登錄

登錄 shell 是參數零的第一個字元是 - 或以 –login 選項開頭的 shell。

  • 互動的

互動式 shell 是在沒有非選項參數且沒有 -c 選項的情況下啟動的,其標準輸入和錯誤都連接到終端(由 isatty(3) 確定),或者以 -i 選項啟動。

PS1 已設置並且 $- 包括 i 如果 bash 是互動式的,則允許 shell 腳本或啟動文件測試此狀態。

互動式和登錄 shell 按以下順序讀取配置文件。它首先執行此操作:

  1. /etc/profile

然後按以下順序其中一個(首先找到的):

  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.

引用自:https://unix.stackexchange.com/questions/83056