20.1 id: Print user identity

id prints information about the given user, or the process running it if no user is specified. Synopsis:

id [option]… [user]…

user can be either a user ID or a name, with name look-up taking precedence unless the ID is specified with a leading ‘+’. See chown, chgrp, chroot, id: Disambiguating user names and IDs.

By default, it prints the real user ID, real group ID, effective user ID if different from the real user ID, effective group ID if different from the real group ID, and supplemental group IDs. In addition, if SELinux is enabled and the POSIXLY_CORRECT environment variable is not set, then print ‘context=c’, where c is the security context.

Each of these numeric values is preceded by an identifying string and followed by the corresponding user or group name in parentheses.

The options cause id to print only part of the above information. Also see Common options.


Print only the group ID.


Print only the group ID and the supplementary groups.


Print the user or group name instead of the ID number. Requires -u, -g, or -G.


Print the real, instead of effective, user or group ID. Requires -u, -g, or -G.


Print only the user ID.


Print only the security context of the process, which is generally the user’s security context inherited from the parent process. If neither SELinux or SMACK is enabled then print a warning and set the exit status to 1.


Delimit output items with ASCII NUL characters. This option is not permitted when using the default format. When multiple users are specified, and the --groups option is also in effect, groups are delimited with a single NUL character, while users are delimited with two NUL characters.


$ id -Gn --zero
users <NUL> devs <NUL>

Primary and supplementary groups for a process are normally inherited from its parent and are usually unchanged since login. This means that if you change the group database after logging in, id will not reflect your changes within your existing login session. Running id with a user argument causes the user and group database to be consulted afresh, and so will give a different result.

An exit status of zero indicates success, and a nonzero value indicates failure.