我正在嘗試使用創建一個目錄os.Mkdir(),然后在其中創建文件,類似于此腳本:package mainimport ( "log" "os" "path")func main() { dir := "test_dir" os.Mkdir(dir, os.ModeDir) fileName := path.Join(dir, "file.txt") _, err := os.Create(fileName) if err != nil { log.Fatalf("create file: %v", err) }}但是,如果我運行這個,我會得到> go run fileperms.go2019/10/15 14:44:02 create file: open test_dir/file.txt: permission deniedexit status 1從https://golang.org/pkg/os/#FileMode我并不清楚如何指定FileMode以允許相同的腳本在新創建的目錄中創建文件。我怎樣才能實現這個目標?
2 回答

繁星點點滴滴
TA貢獻1803條經驗 獲得超3個贊
0777我發現如果我將權限設置為:我可以在目錄中創建文件
package main
import (
"io/ioutil"
"os"
"path"
)
func main() {
dir := "test_dir"
os.Mkdir(dir, 0777)
fileName := path.Join(dir, "file.txt")
ioutil.WriteFile(fileName, []byte("foobar"), 0666)
}
現在已使用預期內容創建了文件:
> cat test_dir/file.txt
foobar?

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
在這里,Go 嘗試在 AUR 包安裝期間在 /tmp 目錄內創建。
所以我更改了 /tmp 中的權限:
chmod 0777 -R /tmp
但這還不夠,所以我必須更改 /tmp 所有權(它是 root 的):
sudo chown -R "$USER":wheel /tmp
- 2 回答
- 0 關注
- 180 瀏覽
添加回答
舉報
0/150
提交
取消