Qual é a diferença entre sudo -i e sudo -s? [duplicado]

7

Eu sou um novo usuário do Ubuntu e acho que algumas pessoas me dizem para usar sudo -i para obter root e outras pessoas me dizem para usar sudo -s . Qual é a diferença? Qual eu uso e quando?

    
por user2156473 08.02.2014 / 14:38

2 respostas

8

A principal diferença entre sudo -i e sudo -s é:

  • sudo -i fornece o ambiente raiz, ou seja, seu ~/.bashrc é ignorado.
  • sudo -s oferece o ambiente do usuário, portanto, seu ~/.bashrc é respeitado.

Aqui está um exemplo, você pode ver que eu tenho um aplicativo lsl no meu diretório ~/.bin/ , que é acessível via sudo -s , mas não acessível com sudo -i . Note também que o prompt do Bash muda como será com sudo -i , mas não com sudo -s :

dotancohen@melancholy:~$ ls .bin
lsl

dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl

dotancohen@melancholy:~$ sudo -i

root@melancholy:~# which lsl

root@melancholy:~# exit
logout

dotancohen@melancholy:~$ sudo -s
Sourced .bashrc

dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl

dotancohen@melancholy:~$ exit
exit

Embora sudo -s seja conveniente para oferecer o ambiente com o qual você está familiarizado, recomendo o uso de sudo -i por dois motivos:

  1. O lembrete visual de que você está em uma sessão 'raiz'.
  2. É muito menos provável que o ambiente raiz seja envenenado com malware, como uma linha não autorizada em .bashrc .
por dotancohen 08.11.2014 / 15:05
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.
    
por Pitel 08.02.2014 / 14:42