NEWGRP(1P) POSIX Programmer's Manual NEWGRP(1P)
PROLOG
This manual page is part of the POSIX Programmer's Manual. The Linux
implementation of this interface may differ (consult the corresponding
Linux manual page for details of Linux behavior), or the interface may
not be implemented on Linux.
NAME
newgrp -- change to a new group
SYNOPSIS
newgrp [-l] [group]
DESCRIPTION
The newgrp utility shall create a new shell execution environment with
a new real and effective group identification. Of the attributes listed
in Section 2.12, Shell Execution Environment, the new shell execution
environment shall retain the working directory, file creation mask, and
exported variables from the previous environment (that is, open files,
traps, unexported variables, alias definitions, shell functions, and
set options may be lost). All other aspects of the process environment
that are preserved by the exec family of functions defined in the Sys-
tem Interfaces volume of POSIX.1-2008 shall also be preserved by new-
grp; whether other aspects are preserved is unspecified.
A failure to assign the new group identifications (for example, for
security or password-related reasons) shall not prevent the new shell
execution environment from being created.
The newgrp utility shall affect the supplemental groups for the process
as follows:
* On systems where the effective group ID is normally in the supple-
mentary group list (or whenever the old effective group ID actually
is in the supplementary group list):
-- If the new effective group ID is also in the supplementary
group list, newgrp shall change the effective group ID.
-- If the new effective group ID is not in the supplementary group
list, newgrp shall add the new effective group ID to the list,
if there is room to add it.
* On systems where the effective group ID is not normally in the sup-
plementary group list (or whenever the old effective group ID is
not in the supplementary group list):
-- If the new effective group ID is in the supplementary group
list, newgrp shall delete it.
-- If the old effective group ID is not in the supplementary list,
newgrp shall add it if there is room.
Note: The System Interfaces volume of POSIX.1-2008 does not specify
whether the effective group ID of a process is included in
its supplementary group list.
With no operands, newgrp shall change the effective group back to the
groups identified in the user's user entry, and shall set the list of
supplementary groups to that set in the user's group database entries.
If the first argument is '-', the results are unspecified.
If a password is required for the specified group, and the user is not
listed as a member of that group in the group database, the user shall
be prompted to enter the correct password for that group. If the user
is listed as a member of that group, no password shall be requested.
If no password is required for the specified group, it is implementa-
tion-defined whether users not listed as members of that group can
change to that group. Whether or not a password is required, implemen-
tation-defined system accounting or security mechanisms may impose
additional authorization restrictions that may cause newgrp to write a
diagnostic message and suppress the changing of the group identifica-
tion.
OPTIONS
The newgrp utility shall conform to the Base Definitions volume of
POSIX.1-2008, Section 12.2, Utility Syntax Guidelines, except for the
unspecified usage of '-'.
The following option shall be supported:
-l (The letter ell.) Change the environment to what would be
expected if the user actually logged in again.
OPERANDS
The following operand shall be supported:
group A group name from the group database or a non-negative
numeric group ID. Specifies the group ID to which the real
and effective group IDs shall be set. If group is a non-nega-
tive numeric string and exists in the group database as a
group name (see getgrnam()), the numeric group ID associated
with that group name shall be used as the group ID.
STDIN
Not used.
INPUT FILES
The file /dev/tty shall be used to read a single line of text for pass-
word checking, when one is required.
ENVIRONMENT VARIABLES
The following environment variables shall affect the execution of new-
grp:
LANG Provide a default value for the internationalization vari-
ables that are unset or null. (See the Base Definitions vol-
ume of POSIX.1-2008, Section 8.2, Internationalization Vari-
ables for the precedence of internationalization variables
used to determine the values of locale categories.)
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 messages written to standard
error.
NLSPATH Determine the location of message catalogs for the processing
of LC_MESSAGES.
ASYNCHRONOUS EVENTS
Default.
STDOUT
Not used.
STDERR
The standard error shall be used for diagnostic messages and a prompt
string for a password, if one is required. Diagnostic messages may be
written in cases where the exit status is not available. See the EXIT
STATUS section.
OUTPUT FILES
None.
EXTENDED DESCRIPTION
None.
EXIT STATUS
If newgrp succeeds in creating a new shell execution environment,
whether or not the group identification was changed successfully, the
exit status shall be the exit status of the shell. Otherwise, the fol-
lowing exit value shall be returned:
>0 An error occurred.
CONSEQUENCES OF ERRORS
The invoking shell may terminate.
The following sections are informative.
APPLICATION USAGE
There is no convenient way to enter a password into the group database.
Use of group passwords is not encouraged, because by their very nature
they encourage poor security practices. Group passwords may disappear
in the future.
A common implementation of newgrp is that the current shell uses exec
to overlay itself with newgrp, which in turn overlays itself with a new
shell after changing group. On some implementations, however, this may
not occur and newgrp may be invoked as a subprocess.
The newgrp command is intended only for use from an interactive termi-
nal. It does not offer a useful interface for the support of applica-
tions.
The exit status of newgrp is generally inapplicable. If newgrp is used
in a script, in most cases it successfully invokes a new shell and the
rest of the original shell script is bypassed when the new shell exits.
Used interactively, newgrp displays diagnostic messages to indicate
problems. But usage such as:
newgrp foo
echo $?
is not useful because the new shell might not have access to any status
newgrp may have generated (and most historical systems do not provide
this status). A zero status echoed here does not necessarily indicate
that the user has changed to the new group successfully. Following new-
grp with the id command provides a portable means of determining
whether the group change was successful or not.
EXAMPLES
None.
RATIONALE
Most historical implementations use one of the exec functions to imple-
ment the behavior of newgrp. Errors detected before the exec leave the
environment unchanged, while errors detected after the exec leave the
user in a changed environment. While it would be useful to have newgrp
issue a diagnostic message to tell the user that the environment
changed, it would be inappropriate to require this change to some his-
torical implementations.
The password mechanism is allowed in the group database, but how this
would be implemented is not specified.
The newgrp utility was retained in this volume of POSIX.1-2008, even
given the existence of the multiple group permissions feature in the
System Interfaces volume of POSIX.1-2008, for several reasons. First,
in some implementations, the group ownership of a newly created file is
determined by the group of the directory in which the file is created,
as allowed by the System Interfaces volume of POSIX.1-2008; on other
implementations, the group ownership of a newly created file is deter-
mined by the effective group ID. On implementations of the latter type,
newgrp allows files to be created with a specific group ownership.
Finally, many implementations use the real group ID in accounting, and
on such systems, newgrp allows the accounting identity of the user to
be changed.
FUTURE DIRECTIONS
None.
SEE ALSO
Chapter 2, Shell Command Language, sh
The Base Definitions volume of POSIX.1-2008, Chapter 8, Environment
Variables, Section 12.2, Utility Syntax Guidelines
The System Interfaces volume of POSIX.1-2008, exec, getgrnam()
COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form
from IEEE Std 1003.1, 2013 Edition, Standard for Information Technology
-- Portable Operating System Interface (POSIX), The Open Group Base
Specifications Issue 7, Copyright (C) 2013 by the Institute of Electri-
cal and Electronics Engineers, Inc and The Open Group. (This is
POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.) 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.unix.org/online.html .
Any typographical or formatting errors that appear in this page are
most likely to have been introduced during the conversion of the source
files to man page format. To report such errors, see https://www.ker-
nel.org/doc/man-pages/reporting_bugs.html .
IEEE/The Open Group 2013 NEWGRP(1P)