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

posted @ 2021-08-11 17:56  warrens  阅读(527)  评论(0编辑  收藏  举报