Substitute user identity
Run a command with substitute user and group id, allow one user to temporarily become another user. It runs a command (often an interactive shell) with the real and effective user id, group id, and supplemental groups of a given user.

      su [options]... [user [arg]...]


       Pass COMMAND, a single command line to run, to the shell with a -c option 
       instead of starting an interactive shell.

       Pass the '-f' option to the shell.  This probably only makes sense if the shell run
       is 'csh' or 'tcsh', for which the '-f' option  prevents reading the startup file ('.cshrc').
       With Bourne-like shells, the '-f' option disables file name pattern expansion (globbing),
       which is not likely to be useful.

       Make the shell a login shell.  This means the following.  Unset all environment variables except
       'TERM', 'HOME', and 'SHELL' (which are set as described above), and 'USER' and 'LOGNAME' (which
       are set, even for the super-user, as described above), and set 'PATH' to a compiled-in default value.
       Change to USER's home directory.
       Prepend '-' to the shell's name, intended to make it read its login startup file(s).

       Do not change the environment variables 'HOME', 'USER', 'LOGNAME', or 'SHELL'.
       Run the shell given in the environment variable 'SHELL' instead of the shell from
       USER's passwd entry, unless the user running 'su' is not the superuser
       and USER's shell is restricted.
       A "restricted shell" is one that is not listed in the file '/etc/shells', or in
       a compiled-in list if that file does not exist.
       Parts of what this option does can be overridden by '--login' and '--shell'.

   -s SHELL
       Run SHELL instead of the shell from USER's passwd entry, unless the user running
       'su' is not the superuser and USER's shell is restricted (see '-m' just above).

       Display this help and exit

       Output version information and exit

If no user is given, the default is 'root', the super-user.

The shell to use is taken from user's 'passwd' entry, or /bin/sh if none is specified there.

If USER has a password, 'su' prompts for the password unless run by a user with effective user id of zero (the super-user).

By default, su does not change the current directory. It sets the environment variables 'HOME' and 'SHELL' from the password entry for USER, and if USER is not the super-user, sets 'USER' and 'LOGNAME' to USER.

By default, the shell is not a login shell. Any additional ARGs are passed as additional arguments to the shell.

GNU su does not treat '/bin/sh' or any other shells specially (e.g., by setting 'argv[0]' to -su, passing '-c' only to certain shells, etc.). su can optionally be compiled to use syslog to report failed, and optionally successful, su attempts. (If the system supports syslog.) However, GNU su does not check if the user is a member of the 'wheel' group; see options above.

"It was just like Romeo and Juliet, only it ended in tragedy" ~ Milhouse

Related linux commands

chroot - Run a command with a different root directory.
id - Print user and group id's.
logname - Print current login name.
Equivalent Windows command: RUNAS /user.

Copyright © 1999-2024
Some rights reserved