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

相關文章
相關標籤/搜索