id(P)                                                     id(P)





NAME
       id - return user identity

SYNOPSIS
       id [user]

       id -G[-n] [user]

       id -g[-nr] [user]

       id -u[-nr] [user]


DESCRIPTION
       If  no  user  operand  is provided, the id utility shall
       write the user and group IDs and the corresponding  user
       and group names of the invoking process to standard out-
       put. If the effective and real IDs do  not  match,  both
       shall  be  written.  If multiple groups are supported by
       the  underlying   system   (see   the   description   of
       {NGROUPS_MAX}   in   the  System  Interfaces  volume  of
       IEEE Std 1003.1-2001), the supplementary group  affilia-
       tions of the invoking process shall also be written.

       If  a  user  operand is provided and the process has the
       appropriate privileges, the user and group  IDs  of  the
       selected  user shall be written. In this case, effective
       IDs shall be assumed to be identical to real IDs. If the
       selected  user has more than one allowable group member-
       ship listed in the group database, these shall be  writ-
       ten  in  the  same  manner  as  the supplementary groups
       described in the preceding paragraph.

OPTIONS
       The id utility shall conform  to  the  Base  Definitions
       volume  of  IEEE Std 1003.1-2001,  Section 12.2, Utility
       Syntax Guidelines.

       The following options shall be supported:

       -G     Output all different group IDs (effective,  real,
              and  supplementary) only, using the format "%u\n"
              . If there is more than one distinct group affil-
              iation,  output  each such affiliation, using the
              format " %u" , before the <newline> is output.

       -g     Output only the effective  group  ID,  using  the
              format "%u\n" .

       -n     Output the name in the format "%s" instead of the
              numeric ID using the format "%u" .

       -r     Output the real ID instead of the effective ID.

       -u     Output only the effective user ID, using the for-
              mat "%u\n" .


OPERANDS
       The following operand shall be supported:

       user   The  login  name  for  which information is to be
              written.


STDIN
       Not used.

INPUT FILES
       None.

ENVIRONMENT VARIABLES
       The following environment  variables  shall  affect  the
       execution of id:

       LANG   Provide a default value for the internationaliza-
              tion variables that are unset or null.  (See  the
              Base  Definitions volume of IEEE Std 1003.1-2001,
              Section 8.2, Internationalization  Variables  for
              the  precedence of internationalization variables
              used to determine  the  values  of  locale  cate-
              gories.)

       LC_ALL If  set to a non-empty string value, override the
              values  of  all  the  other  internationalization
              variables.

       LC_CTYPE
              Determine  the  locale  for the interpretation of
              sequences of bytes of  text  data  as  characters
              (for  example,  single-byte  as opposed to multi-
              byte characters in arguments).

       LC_MESSAGES
              Determine the  locale  that  should  be  used  to
              affect the format and contents of diagnostic mes-
              sages written to standard error  and  informative
              messages written to standard output.

       NLSPATH
              Determine  the  location  of message catalogs for
              the processing of LC_MESSAGES .


ASYNCHRONOUS EVENTS
       Default.

STDOUT
       The following formats shall be used when the LC_MESSAGES
       locale  category  specifies  the  POSIX locale. In other
       locales, the strings uid, gid, euid,  egid,  and  groups
       may  be  replaced  with  more appropriate strings corre-
       sponding to the locale.


              "uid=%u(%s) gid=%u(%s)\n", <real user ID>, <user-name>,
                  <real group ID>, <group-name>

       If the effective and real user IDs  do  not  match,  the
       following  shall be inserted immediately before the '\n'
       character in the previous format:


              " euid=%u(%s)"

       with the following arguments added at  the  end  of  the
       argument list:


              <effective user ID>, <effective user-name>

       If  the  effective  and real group IDs do not match, the
       following shall be inserted  directly  before  the  '\n'
       character  in  the format string (and after any addition
       resulting from the  effective  and  real  user  IDs  not
       matching):


              " egid=%u(%s)"

       with  the  following  arguments  added at the end of the
       argument list:


              <effective group-ID>, <effective group name>

       If the process has supplementary group  affiliations  or
       the  selected  user  is  allowed  to  belong to multiple
       groups, the first shall be  added  directly  before  the
       <newline> in the format string:


              " groups=%u(%s)"

       with  the  following  arguments  added at the end of the
       argument list:


              <supplementary group ID>, <supplementary group name>

       and the necessary number of the  following  added  after
       that for any remaining supplementary group IDs:


              ",%u(%s)"

       and  the  necessary  number  of  the following arguments
       added at the end of the argument list:


              <supplementary group ID>, <supplementary group name>

       If any of the user ID,  group  ID,  effective  user  ID,
       effective  group ID, or supplementary/multiple group IDs
       cannot be mapped by the system into  printable  user  or
       group  names, the corresponding "(%s)" and name argument
       shall be omitted from the corresponding format string.

       When any of the options are specified, the output format
       shall be as described in the OPTIONS section.

STDERR
       The  standard  error  shall  be used only for diagnostic
       messages.

OUTPUT FILES
       None.

EXTENDED DESCRIPTION
       None.

EXIT STATUS
       The following exit values shall be returned:

        0     Successful completion.

       >0     An error occurred.


CONSEQUENCES OF ERRORS
       Default.

       The following sections are informative.

APPLICATION USAGE
       Output produced by the -G option and by the default case
       could  potentially  produce  very  long lines on systems
       that support large numbers of supplementary groups.  (On
       systems with user and group IDs that are 32-bit integers
       and with group names with a maximum of 8 bytes per name,
       93 supplementary groups plus distinct effective and real
       group and user  IDs  could  theoretically  overflow  the
       2048-byte {LINE_MAX} text file line limit on the default
       output case.  It  would  take  about  186  supplementary
       groups  to  overflow the 2048-byte barrier using id -G).
       This is not expected to be a problem in practice, but in
       cases  where  it  is a concern, applications should con-
       sider using fold -s before postprocessing the output  of
       id.

EXAMPLES
       None.

RATIONALE
       The  functionality  provided by the 4 BSD groups utility
       can be simulated using:


              id -Gn [ user ]

       The 4 BSD command groups was considered, but it was  not
       included because it did not provide the functionality of
       the id utility of the SVID. Also, it was thought that it
       would  be  easier to modify id to provide the additional
       functionality necessary to systems with multiple  groups
       than to invent another command.

       The  options  -u,  -g, -n, and -r were added to ease the
       use of id  with  shell  commands  substitution.  Without
       these  options  it is necessary to use some preprocessor
       such as sed to select the desired piece of  information.
       Since output such as that produced by:


              id -u -n

       is  frequently  wanted,  it  seemed desirable to add the
       options.

FUTURE DIRECTIONS
       None.

SEE ALSO
       fold , logname , who , the System Interfaces  volume  of
       IEEE Std 1003.1-2001, getgid(), getgroups(), getuid()

COPYRIGHT
       Portions  of  this  text are reprinted and reproduced in
       electronic form from  IEEE  Std  1003.1,  2003  Edition,
       Standard  for Information Technology -- Portable Operat-
       ing System Interface (POSIX), The Open Group Base Speci-
       fications Issue 6, Copyright (C) 2001-2003 by the Insti-
       tute of Electrical and Electronics  Engineers,  Inc  and
       The  Open Group. In the event of any discrepancy between
       this version and the original IEEE and  The  Open  Group
       Standard,  the original IEEE and The Open Group Standard
       is the referee document. The original  Standard  can  be
       obtained        online        at        http://www.open-
       group.org/unix/online.html .



POSIX                         2003                        id(P)
