我需要在Linux上以root用户的身份运行mkdir,因此我可以运行sudo
升级的应用程序。但是使用此目录的应用程序以不同的用户postgres
的身份运行,因此它出错并显示权限被拒绝的错误消息。
dir: = "/srv/tablepspaces/psql96/client"
err := os.MkdirAll(dir, os.FileMode(0775))
(由于某些原因,当我stat
在Linux上的目录时,上面的结果为755)
所以我想整理目录:
我需要使用os.Chown(name string, uid, gid int) error
如何获取用户的uid和gid而不进行炮击,并且获取id
的返回和解析
答案 0 :(得分:0)
err := os.MkdirAll(dir, os.FileMode(0775))
if err != nil {
return fmt.Errorf("error creating tabelspace folders: %v ", err.Error())
}
if runtime.GOOS != "windows" {
group, err := user.Lookup("postgres")
if err != nil {
return fmt.Errorf("error looking up postgres user user info")
}
uid, _ := strconv.Atoi(group.Uid)
gid, _ := strconv.Atoi(group.Gid)
err = syscall.Chown(dir, uid, gid)
}