Dove trovo la variabile d'ambiente SUDO_COMMAND?


8

Attualmente sto imparando le basi di Linux con Ubuntu e c'è una piccola attività in cui ho bisogno di trovare informazioni sulle variabili di ambiente. Ho già trovato informazioni 6/7, ma non riesco a trovare SUDO_COMMAND. ecco come va la lista:

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

Ho notato che l'informazione è in ordine e si SUDO_COMMANDtrova tra utente e pwd. ho fatto un errore da qualche parte?


1
hai i privilegi di sudo?
Ravery,

Risposte:


11

SUDO_COMMANDè una variabile d'ambiente impostata sudosolo nell'ambiente del processo avviato da essa (ed ereditato da tutti i processi figlio). Se corri sudo some-command arg1 arg2, SUDO_COMMANDconterrà il percorso assoluto verso some-commande arg1 arg2. Se hai eseguito sudo -so sudo -i, la variabile verrà impostata sulla shell che è stata avviata. In ogni caso, probabilmente non lo vedrai al di fuori di un albero di processo avviato da sudo.

Per esempio:

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

O:

$ 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

Ho notato che le informazioni arrivano in ordine

Non so quale comando si sta utilizzando, ma non si può contare sulla produzione di set, declare, envo di printenvessere in qualche modo.


E ho pensato che sudo echo $SUDO_COMMANDpotesse essere usato per creare un ciclo infinito ... :(
dessert

5

Il SUDO_COMMANDè una variabile d'ambiente che Imposta al comando gestito da sudo .

Come menzionato da @muru - se si sudoesegue una nuova shell - questa variabile di ambiente verrà mostrata in questa nuova shell

Ulteriori informazioni

man sudo fornisce i seguenti dettagli:

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.

Non credo che il tuo esempio sia effettivamente riproducibile. SUDO_COMMANDesiste solo nell'ambiente avviato da sudo, se in SUDO_COMMANDrealtà dove /bin/ls, quindi non faresti funzionare una shell echo $SUDO_COMMAND.
Muru,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.