GNU/Linux >> Znalost Linux >  >> Linux

Proměnné uživatelského prostředí S „su“ a „sudo“ v Linuxu

su a sudo umožňují spouštět příkazy nebo shell s jiným uživatelem. V závislosti na tom, jak jsou vyvolány, se proměnné prostředí mohou změnit a způsobit různé výsledky příkazů.

Oba „su“ i „sudo“ umožňují provádět příkazy jménem jiného uživatele. Použití su předpokládá znalost „jiného“ uživatelského hesla, pokud není vyvoláno uživatelem root. Není moc kontroly nad tím, co může uživatel dělat, pokud je mu udělen přístup, neexistuje žádné omezení.

V sudo je jemné ovládání toho, co může uživatel dělat, jaké příkazy lze spouštět. Není potřeba znát heslo „jiného“ uživatele. Oprávnění jsou nastavena v konfiguračním souboru.

Poznámka :Použití sudo su [USER] by se nemělo používat, protože používá dvě změny kontextu zabezpečení. Doporučuje se použít sudo -u [USER].

su – spustí příkaz s náhradním ID uživatele a skupiny

Z manuálové stránky:

su allows to run commands with substitute user and group ID.

When called without arguments su defaults to running an interactive
shell as root.

For backward compatibility su defaults to not change the current direc‐
tory and to only set the environment variables HOME and SHELL (plus
USER and LOGNAME if the target user is not root). It is recommended to
always use the --login option (instead it's shortcut -) to avoid side
effects caused by mixing environments.

Příklad:

# su opc -c 'echo $PATH'
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# su - opc -c 'echo $PATH'
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/opc/.local/bin:/home/opc/bin

V „su opc“ jsou proměnné prostředí použité ke spuštění příkazu původní, v tomto případě uživatelské kořenové prostředí. Pokud je příkaz vyvolán s „ “ nebo „–přihlášení ” prostředí je uživatel “opc”, kromě “TERM”.

Jak je vysvětleno na stránce manuálu:

-, -l, --login
  Starts the shell as login shell with an environment similar to a
  real login:

  o clears all environment variables except for TERM

  o initializes the environment variables HOME, SHELL,
  USER, LOGNAME, PATH

  o changes to the target user's home directory

  o sets argv[0] of the shell to '-' in order to make the
  shell a login shell

sudo – vykoná příkaz jako jiný uživatel

Z manuálové stránky:

sudo allows a permitted user to execute a command as the superuser or
another user, as specified by the security policy. The invoking user's
real (not effective) user ID is used to determine the user name with
which to query the security policy.

Příklad:

# sudo -u opc bash -c 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin
# sudo -i -u opc bash -c 'echo $PATH'
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/home/opc/.local/bin:/home/opc/bin

V „sudo“ jsou proměnné prostředí předány z původní relace do relace „sudo“, jak je definováno v /etc/sudoers:

Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

Definované proměnné jsou zachovány.

Použití „sudo -i“ může způsobit reset některých proměnných:

-i, --login
    Run the shell specified by the target user's password data‐
    base entry as a login shell. This means that login-specific
    resource files such as .profile, .bash_profile or .login will
    be read by the shell. If a command is specified, it is
    passed to the shell for execution via the shell's -c option.
    If no command is specified, an interactive shell is executed.
    sudo attempts to change to that user's home directory before
    running the shell. The command is run with an environment
    similar to the one a user would receive at log in. Note that
    most shells behave differently when a command is specified as
    compared to an interactive session; consult the shell's man‐
    ual for details. The Command environment section in the
    sudoers(5) manual documents how the -i option affects the
    environment in which a command is run when the sudoers policy
    is in use.

Například z výchozího /etc/sudoers bude proměnná PS1 zachována:

# PS1="%: " sudo -u opc bash
%:
# PS1="%: " sudo -i -u opc bash
[opc@[HOSTNAME] ~]$

Pokud je použito „-i“, způsobí to spuštění přihlašovacích zdrojových souborů, proměnná PS1 byla resetována podle nastavení v /etc/bashrc.


Linux
  1. Jak nastavit a zrušit místní, uživatelské a systémové proměnné prostředí v Linuxu

  2. Jak nastavit/vytvořit proměnné prostředí a prostředí v Linuxu

  3. 8 osvědčených postupů se sudo v Linuxu – co dělat a co nedělat sudo

  1. Monitorování stavu a aktivity uživatele v Linuxu s GNU acct

  2. Jak nastavit proměnné prostředí Linuxu pomocí Ansible

  3. Nastavení proměnných prostředí Linuxu

  1. Proměnné prostředí Linux:Jak číst a nastavovat na Linux VPS

  2. Jak pracovat s uživateli a skupinami v Linuxu

  3. Jak vytvořit uživatele Sudo na Rocky Linux a CentOS