Quelle est la différence entre sudo -i et sudo -s? [dupliquer]

7

Je suis un nouvel utilisateur d'Ubuntu et je trouve que certaines personnes me disent d'utiliser sudo -i pour obtenir root et que d'autres me disent d'utiliser sudo -s . Quelle est la différence? Lequel est-ce que j'utilise et quand?

    
posée user2156473 08.02.2014 - 14:38
la source

2 réponses

9

La principale différence entre sudo -i et sudo -s est:

  • sudo -i vous donne l'environnement racine, c'est-à-dire que votre ~/.bashrc est ignoré.
  • sudo -s vous donne l'environnement de l'utilisateur, donc votre ~/.bashrc est respecté.

Voici un exemple, vous pouvez voir que j'ai une application lsl dans mon répertoire ~/.bin/ accessible via sudo -s mais non accessible avec sudo -i . Notez également que l'invite Bash change avec sudo -i mais pas avec sudo -s :

[email protected]:~$ ls .bin
lsl

[email protected]:~$ which lsl
/home/dotancohen/.bin/lsl

[email protected]:~$ sudo -i

[email protected]:~# which lsl

[email protected]:~# exit
logout

[email protected]:~$ sudo -s
Sourced .bashrc

[email protected]:~$ which lsl
/home/dotancohen/.bin/lsl

[email protected]:~$ exit
exit

Bien que sudo -s soit pratique pour vous donner l’environnement que vous connaissez, je recommande l’utilisation de sudo -i pour deux raisons:

  1. Le rappel visuel que vous êtes dans une session "root".
  2. L'environnement racine est beaucoup moins susceptible d'être empoisonné par des logiciels malveillants, comme une ligne malveillante dans .bashrc .
réponse donnée dotancohen 08.11.2014 - 15:05
la source
4
sudo -i
-i [command]
                 The -i (simulate initial login) option runs the shell speci‐
                 fied by the password database entry of the target user as a
                 login shell.  This means that login-specific resource files
                 such as .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
                 security policy shall initialize the environment to a minimal
                 set of variables, similar to what is present when a user logs
                 in.  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.
sudo -s
 -s [command]
                 The -s (shell) option runs the shell specified by the SHELL
                 environment variable if it is set or the shell as specified
                 in the password database.  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.
    
réponse donnée Pitel 08.02.2014 - 14:42
la source

Lire d'autres questions sur les étiquettes