Provided by: manpages-posix_2.16-1_all bug

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  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 System Interfaces  volume  of  IEEE Std 1003.1-2001  shall
       also be preserved by newgrp; 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 supplementary 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 supplementary 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 IEEE Std 1003.1-2001 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  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 implementation-defined whether users not listed as members of that  group  can
       change  to that group. Whether or not a password is required, implementation-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 identification.

OPTIONS

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

       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-negative 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  password  checking,  when  one  is
       required.

ENVIRONMENT VARIABLES

       The following environment variables shall affect the execution of newgrp:

       LANG   Provide  a  default  value for the internationalization 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
              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
       following 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 terminal. It  does  not  offer  a  useful
       interface for the support of applications.

       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 newgrp 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 implement 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
       historical 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 IEEE Std 1003.1-2001, even given the existence  of  the
       multiple  group  permissions feature in the System Interfaces volume of IEEE Std 1003.1-2001, 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
       IEEE Std 1003.1-2001; on other implementations, the group ownership of a newly created file is determined
       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

       Shell Command Language , sh , the System Interfaces volume of IEEE Std 1003.1-2001, exec, getgrnam()

COPYRIGHT

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition,
       Standard  for  Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base
       Specifications Issue 6, Copyright (C) 2001-2003 by the Institute 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.opengroup.org/unix/online.html .

IEEE/The Open Group                                   2003                                             NEWGRP(P)