go获取linux系统下文件的uid
linux获取目录的uid从而获取权限
直接看代码
func getuid(path string) string {
var uid string
info, _ := os.Stat(path)
if stat, ok := info.Sys().(*syscall.Stat_t); ok {
uid = strconv.Itoa(int(stat.Uid))
}
return uid
}
从上图中我们看到fileinfo里有个sys的方法他是返回一个空接口,那么为什么返回一个空接口?不直接返回这些信息呢。这是因为不同操作系统返回的东西不一样,在linux我们可以断言成syscall.Stat_t,在windows则是断言成另外一个东西,
我们再看看stat_t存放了什么
type Stat_t struct {
Dev uint64
Ino uint64
Nlink uint64
Mode uint32
Uid uint32
Gid uint32
X__pad0 int32
Rdev uint64
Size int64
Blksize int64
Blocks int64
Atim Timespec
Mtim Timespec
Ctim Timespec
X__unused [3]int64
}
这个结构体就有我们需要的uid