go获取linux系统下文件的uid

linux获取目录的uid从而获取权限

直接看代码linux

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存放了什么windows

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
}

这个结构体就有咱们须要的uidui

相关文章
相关标签/搜索