Функция os.Getuid

Функция os.Getuid возвращает числовой идентификатор пользователя (UID), от имени которого выполняется текущий процесс. Она не принимает никаких параметров и возвращает значение типа int. В Unix-подобных системах этот идентификатор соответствует реальному UID, указанному в файле /etc/passwd. В Windows функция всегда возвращает значение -1, так как в этой операционной системе нет концепции UID.

Синтаксис

goos.Getuid()

Пример

Давайте получим идентификатор текущего пользователя:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  uid := os.Getuid()
  fmt.Println(uid)
}

Результат выполнения кода:

go1000

В зависимости от системы значение может отличаться. Например, для пользователя root обычно возвращается 0.

Пример

Давайте проверим, является ли текущий пользователь суперпользователем:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  uid := os.Getuid()
  if uid == 0 {
    fmt.Println("Пользователь root")
  } else {
    fmt.Printf("Обычный пользователь (UID: %d)\n", uid)
  }
}

Результат выполнения кода:

go"Обычный пользователь (UID: 1000)"

Пример

Давайте получим UID и имя пользователя с помощью дополнительных библиотек для наглядности:

gopackage 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)
  }
}

Результат выполнения кода:

go"UID: 1000, Имя: john"

Смотрите также

  • функцию os.Getgid,
    которая возвращает идентификатор группы текущего пользователя
  • функцию os.Getpid,
    которая возвращает идентификатор текущего процесса
  • функцию os.Getppid,
    которая возвращает идентификатор родительского процесса
  • функцию os.UserHomeDir,
    которая возвращает домашнюю директорию текущего пользователя