起因
用Go的時候我想建立一個日誌檔案用了os.OpenFile
,然後我給的 777
許可權但是給我得到的實際許可權是411
我當時就矇蔽了
百度開始
首先先百度一下os.OpenFile
為什麼給的許可權和實際生成的不符合?
百度告訴我是umask
的原因。 問題來了umask
又是個啥東西?
繼續百度,得到結果umask
是linux 作業系統對於許可權處理的有這麼一個機制
由許可權掩碼umask所確定的。它的功能可以說與chmod剛好相反的,代表預設拿走的也就是說不要的許可權
懂了這個東西以後 開始解決問題 首先要讓umask
變成0,在重新賦予許可權(這是百度說的不是我說的)。
最後在實現效果了以後 我又回想umask
只和設定預設許可權的時候有用,和我賦予許可權有什麼關係? 我開始瘋狂驗證猜想,最後得出結論
我給許可權的時候沒有寫0777
導致出現了問題。但是我為了解決這個問題,饒了好遠的路!
最後
一定要理性百度,切行切珍稀!
參考文章 :
Linux下的許可權掩碼umask
go新建檔案許可權與設定不符
本作品採用《CC 協議》,轉載必須註明作者和本文連結