
ssh user@host "umask"
給出0174
ssh user@host
伺服器 shell 的 umask 給出 0002
您能解釋一下這是怎麼發生的嗎?
UPD:實際上,是 /etc/passwd 覆蓋了 umask。
答案1
從 bash 手冊頁:
當啟動非登入 shell 的互動式 shell 時,bash 會讀取並執行來自 的命令(
~/.bashrc
如果該檔案存在)。 (...) 當作為互動式登入 shell 或帶有該選項的非互動式 shell 呼叫時--login
,它首先嘗試按順序讀取並執行來自/etc/profile
和 的 命令。~/.profile
在第一個命令 ( ssh user@host "umask"
) 中,它不是登入 shell,在第二種情況下,它是。因此,請檢查您的~/.bashrc
文件中是否有umask 0002
命令。