為 su root 設置 umask
在我的使用者帳戶中,我將 設置
umask
為022
與我的.bashrc
,但我希望 root 使用 aumask
of077
無論我如何成為 root (例如,在 tty 上直接以 root 身份登錄或使用 sudo 或 su)。如果我以 root 身份登錄到 tty,我會得到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
這個答案是 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 按以下順序讀取配置文件。它首先執行此操作:
- /etc/profile
然後按以下順序其中一個(首先找到的):
- ~/.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
.