文件权限的修改,go

文件的使用者

1 拥有者
2 所在群组的用户
3 其他组的用户

文件的权限

r: 读取权限
w: 写权限
x: 执行权限

每个使用者都有相应的权限:列举所有 的情况:
rwx = 111 =7
rw- = 110 =6
r-x = 101 =5
以此类推。。。

go语言修改文件的权限

查看文件信息

fileInfo , err := os.Stat("./gogo.txt")

package main 
import (
    "fmt"
    "os"
    "syscall"
)

func main() {
    //os.Chmod("./gogo.txt", 0666)

    fp, err := os.Create("./gogo.txt")//文件 默认的权限为0666

    defer fp.Close()

    if err != nil {
        fmt.Println("file create err:",err)
    }
    fileInfo , err := os.Stat("./gogo.txt")
    fileMode := fileInfo.Mode()
    fmt.Println(fileMode)

    os.Chmod("./gogo.txt", 0777)

    fileInfo, err = os.Stat("./gogo.txt")
    fileMode = fileInfo.Mode()

    fmt.Println(fileMode)

    syscall.Umask(0)
    os.Chmod("./gogo.txt",os.ModePerm)
    // syscall.Umask(oldMask)
    fileInfo, err = os.Stat("./gogo.txt")
    fileMode = fileInfo.Mode()
    fmt.Println(fileMode)
}

拓展:

执行上面的 os.Chmod("./gogo.txt", 0777),会发现文件的权限 显示为0666,如果再linux系统执行,可能显示的0755,为啥,这和系统的权限掩码有关,

window

os.Chmod("./gogo.txt", 0555) 后显示的是0444,因此我猜测window系统的掩码是 0111
0777 - 0111=0666
0555 - 0111 =0444
利用 syscall.Umask(0)可以设置系统掩码为0,但是好像没用,Umask已经迁移到 sys库中了。
下载sys :
go get -u golang.org/x/sys
好吧,下不下来,无语

你可能感兴趣的:(文件权限的修改,go)