亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

os.MkDir和os.MkDirAll權限值?

os.MkDir和os.MkDirAll權限值?

Go
Cats萌萌 2021-05-07 14:31:23
我試圖在我的程序開始時創建一個日志文件。如果沒有創建目錄,則需要檢查是否存在“ / log”目錄,然后繼續創建日志文件。好吧,我嘗試使用os.Mkdir(以及os.MkDirAll),但是無論我在第二個參數中輸入什么值,我都會得到一個沒有權限的鎖定文件夾。為了獲得對用戶文件夾的讀/寫,這應該是什么值?我以為會是0x700,但似乎無法正常工作。
查看完整描述

3 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

在他的答案中的說法并不是真的正確,而且它談論的是十進制數字,然后使用八進制數字,正如@SashaCrofter在其評論中正確指出的那樣。

實際上,您的權限值采用什么形式都沒有關系,只要它表示明智的Unix權限即可。

由于對POSIX文件系統權限位進來位的三元組-所有者,組和其他人訪問三位,加上調節劑(如粘滯位)的三位, -這是習慣使用八進制數來表示權限,因為每個數字在八進制數表示一個三位值。

因此,當您在Go代碼中使用0700時,前導0會被剝奪,只是在告訴解析器它看到一個八進制數字文字,而以下三個字母依次代表所有者,組和其他權限。例如,如果您還想設置組粘性位以及使文件系統對象組可讀和可執行,則應指定02750,依此類推。

請注意,文件系統對象獲取的實際許可權會通過umask創建對象的進程的活動進行進一步調制。

為了更好地掌握這些主題,最好閱讀chmod類Unix操作系統的手冊頁和一般文獻。


查看完整回答
反對 回復 2021-05-31
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

您可以將umask重置為0。我將其稱為主文件中的第一件事


syscall.Umask(0)

例子


_ = os.MkdirAll("/tmp/dirs/1", 0664)

syscall.Umask(0)

_ = os.MkdirAll("/tmp/dirs/2", 0664)

結果


/tmp/dirs$ stat -c '%A %a %n' *

drw-r--r-- 644 1

drw-rw-r-- 664 2


查看完整回答
反對 回復 2021-05-31
  • 3 回答
  • 0 關注
  • 343 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號