だいぶ前にGolangでパーミッションを指定してファイルを作成したいということがあったので、備忘として残しておく。
以下のように、permで指定してやればいい。
package main
import (
"fmt"
"io/ioutil"
"os"
"strconv"
)
func main() {
content := []byte(
`test line 1
test line 2
test line 3
test line 4
test line 5`)
// パーミッションを指定せずに作成する
ioutil.WriteFile("./go-file1", content, os.ModePerm)
// パーミッションを指定する場合
perm := "0111"
perm32, _ := strconv.ParseUint(perm, 8, 32)
fmt.Println(perm32)
ioutil.WriteFile("./go-file2", content, os.FileMode(perm32))
// 既存のファイルのパーミッションを変える場合
_ = os.Chmod("./go-file1", os.FileMode(perm32))
_ = os.Chmod("./go-file1", 0147) // 数字を直接指定してもできる
}