Black Lives Matter. Support the Equal Justice Initiative.

Source file src/os/user/user.go

Documentation: os/user

     1  // Copyright 2011 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  /*
     6  Package user allows user account lookups by name or id.
     7  
     8  For most Unix systems, this package has two internal implementations of
     9  resolving user and group ids to names. One is written in pure Go and
    10  parses /etc/passwd and /etc/group. The other is cgo-based and relies on
    11  the standard C library (libc) routines such as getpwuid_r and getgrnam_r.
    12  
    13  When cgo is available, cgo-based (libc-backed) code is used by default.
    14  This can be overridden by using osusergo build tag, which enforces
    15  the pure Go implementation.
    16  */
    17  package user
    18  
    19  import (
    20  	"strconv"
    21  )
    22  
    23  var (
    24  	userImplemented  = true // set to false by lookup_stubs.go's init
    25  	groupImplemented = true // set to false by lookup_stubs.go's init
    26  )
    27  
    28  // User represents a user account.
    29  type User struct {
    30  	// Uid is the user ID.
    31  	// On POSIX systems, this is a decimal number representing the uid.
    32  	// On Windows, this is a security identifier (SID) in a string format.
    33  	// On Plan 9, this is the contents of /dev/user.
    34  	Uid string
    35  	// Gid is the primary group ID.
    36  	// On POSIX systems, this is a decimal number representing the gid.
    37  	// On Windows, this is a SID in a string format.
    38  	// On Plan 9, this is the contents of /dev/user.
    39  	Gid string
    40  	// Username is the login name.
    41  	Username string
    42  	// Name is the user's real or display name.
    43  	// It might be blank.
    44  	// On POSIX systems, this is the first (or only) entry in the GECOS field
    45  	// list.
    46  	// On Windows, this is the user's display name.
    47  	// On Plan 9, this is the contents of /dev/user.
    48  	Name string
    49  	// HomeDir is the path to the user's home directory (if they have one).
    50  	HomeDir string
    51  }
    52  
    53  // Group represents a grouping of users.
    54  //
    55  // On POSIX systems Gid contains a decimal number representing the group ID.
    56  type Group struct {
    57  	Gid  string // group ID
    58  	Name string // group name
    59  }
    60  
    61  // UnknownUserIdError is returned by LookupId when a user cannot be found.
    62  type UnknownUserIdError int
    63  
    64  func (e UnknownUserIdError) Error() string {
    65  	return "user: unknown userid " + strconv.Itoa(int(e))
    66  }
    67  
    68  // UnknownUserError is returned by Lookup when
    69  // a user cannot be found.
    70  type UnknownUserError string
    71  
    72  func (e UnknownUserError) Error() string {
    73  	return "user: unknown user " + string(e)
    74  }
    75  
    76  // UnknownGroupIdError is returned by LookupGroupId when
    77  // a group cannot be found.
    78  type UnknownGroupIdError string
    79  
    80  func (e UnknownGroupIdError) Error() string {
    81  	return "group: unknown groupid " + string(e)
    82  }
    83  
    84  // UnknownGroupError is returned by LookupGroup when
    85  // a group cannot be found.
    86  type UnknownGroupError string
    87  
    88  func (e UnknownGroupError) Error() string {
    89  	return "group: unknown group " + string(e)
    90  }
    91  

View as plain text