Де я можу знайти змінну середовища SUDO_COMMAND?


8

В даний час я вивчаю основи Linux за допомогою Ubuntu, і є невелика діяльність, де мені потрібно знайти інформацію про змінні середовища. Я вже знайшов інформацію про 6/7, але просто не можу знайти SUDO_COMMAND. ось так йде список:

SHELL=/bin/bash
USER=student
SUDO_COMMAND=
PWD=/home
HOME=/home/student
LOGNAME=student
OLDPWD=/home/student 

Я помітив, що інформація приходить в порядок і SUDO_COMMANDзнаходиться між користувачем та pwd. чи я десь помилився?


1
у вас є привілеї судо?
ravery

Відповіді:


11

SUDO_COMMAND- це змінна середовище, встановлене sudoлише в середовищі розпочатого нею процесу (і успадкованого будь-якими дочірніми процесами). Якщо ви запустите sudo some-command arg1 arg2, то SUDO_COMMANDбуде містити абсолютний шлях до some-commandта arg1 arg2. Якщо ви запустили sudo -sабо sudo -i, то змінна буде встановлена ​​в оболонку, яка була запущена. У будь-якому випадку ви, ймовірно, не побачите його поза деревом процесів, запущеним користувачем sudo.

Наприклад:

$ sudo sh -c 'echo $SUDO_COMMAND'
/bin/sh -c echo $SUDO_COMMAND

Або:

$ sudo env
HOME=/home/muru
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
TERM=xterm-256color
LANG=en_US.UTF-8
LC_NUMERIC=en_GB.UTF-8
LC_TIME=en_GB.UTF-8
LC_MONETARY=en_GB.UTF-8
LC_PAPER=en_GB.UTF-8
LC_NAME=en_GB.UTF-8
LC_ADDRESS=en_GB.UTF-8
LC_TELEPHONE=en_GB.UTF-8
LC_MEASUREMENT=en_GB.UTF-8
LC_IDENTIFICATION=en_GB.UTF-8
MAIL=/var/mail/root
LOGNAME=root
USER=root
USERNAME=root
SHELL=/bin/bash
SUDO_COMMAND=/usr/bin/env
SUDO_USER=muru
SUDO_UID=1000
SUDO_GID=1000

Я помітив, що інформація приходить в порядок

Я не знаю , яку команду ви використовуєте, але ви не можете покладатися на виході set, declare, envабо printenvбути в певному порядку.


І я думав, що це sudo echo $SUDO_COMMANDможе бути використане для створення інфінітивного циклу… :(
десерт

5

Це SUDO_COMMANDзмінна середовище, яка задається команді, яку виконує sudo .

Як зазначає @muru - якщо sudoвиконати нову оболонку - ця змінна середовище буде показана в цій новій оболонці

Більше інформації

man sudo надає такі деталі:

ENVIRONMENT
 sudo utilizes the following environment variables.  The security policy
 has control over the actual content of the command's environment.

 EDITOR           Default editor to use in -e (sudoedit) mode if neither
                  SUDO_EDITOR nor VISUAL is set.

 MAIL             Set to the mail spool of the target user when the -i
                  option is specified or when env_reset is enabled in
                  sudoers (unless MAIL is present in the env_keep list).

 HOME             Set to the home directory of the target user when the -i
                  or -H options are specified, when the -s option is
                  specified and set_home is set in sudoers, when
                  always_set_home is enabled in sudoers, or when env_reset
                  is enabled in sudoers and HOME is not present in the
                  env_keep list.

 LOGNAME          Set to the login name of the target user when the -i
                  option is specified, when the set_logname option is
                  enabled in sudoers or when the env_reset option is
                  enabled in sudoers (unless LOGNAME is present in the
                  env_keep list).

 PATH             May be overridden by the security policy.

 SHELL            Used to determine shell to run with -s option.

 SUDO_ASKPASS     Specifies the path to a helper program used to read the
                  password if no terminal is available or if the -A option
                  is specified.

 SUDO_COMMAND     Set to the command run by sudo.

Я не думаю, що ваш приклад насправді відтворюється. SUDO_COMMANDіснує лише в середовищі, розпочатому sudo, якщо SUDO_COMMANDнасправді там /bin/ls, то ви б не отримали оболонку для запуску echo $SUDO_COMMAND.
муру
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.