Функция os.Getuid
Функция os.Getuid возвращает числовой идентификатор
пользователя (UID), от имени которого выполняется текущий процесс.
Она не принимает никаких параметров и возвращает значение типа
int. В Unix-подобных системах этот идентификатор
соответствует реальному UID, указанному в файле /etc/passwd.
В Windows функция всегда возвращает значение -1, так как
в этой операционной системе нет концепции UID.
Синтаксис
os.Getuid()
Пример
Давайте получим идентификатор текущего пользователя:
package main
import (
"fmt"
"os"
)
func main() {
uid := os.Getuid()
fmt.Println(uid)
}
Результат выполнения кода:
1000
В зависимости от системы значение может отличаться. Например,
для пользователя root обычно возвращается 0.
Пример
Давайте проверим, является ли текущий пользователь суперпользователем:
package main
import (
"fmt"
"os"
)
func main() {
uid := os.Getuid()
if uid == 0 {
fmt.Println("Пользователь root")
} else {
fmt.Printf("Обычный пользователь (UID: %d)\n", uid)
}
}
Результат выполнения кода:
"Обычный пользователь (UID: 1000)"
Пример
Давайте получим UID и имя пользователя с помощью дополнительных библиотек для наглядности:
package main
import (
"fmt"
"os"
"os/user"
)
func main() {
uid := os.Getuid()
usr, err := user.LookupId(fmt.Sprint(uid))
if err == nil {
fmt.Printf("UID: %d, Имя: %s\n", uid, usr.Username)
} else {
fmt.Printf("UID: %d\n", uid)
}
}
Результат выполнения кода:
"UID: 1000, Имя: john"
Смотрите также
-
функцию
os.Getgid,
которая возвращает идентификатор группы текущего пользователя -
функцию
os.Getpid,
которая возвращает идентификатор текущего процесса -
функцию
os.Getppid,
которая возвращает идентификатор родительского процесса -
функцию
os.UserHomeDir,
которая возвращает домашнюю директорию текущего пользователя