В чем разница между sudo -i и sudo -s? [Дубликат]

7

Я новый пользователь Ubuntu и скажу, что некоторые люди говорят мне использовать sudo -i , чтобы получить root, а другие сказали мне использовать sudo -s . В чем разница? Какой из них я использую и когда?

    
задан user2156473 08.02.2014 в 13:38
источник

2 ответа

8

Основное различие между sudo -i и sudo -s :

  • sudo -i дает вам корневую среду, т. е. ваш ~/.bashrc игнорируется.
  • sudo -s дает вам среду пользователя, поэтому ваш ~/.bashrc соблюдается.

Вот пример, вы можете видеть, что у меня есть приложение lsl в моем каталоге ~/.bin/ , доступном через sudo -s , но недоступном с% ​​co_de%. Обратите внимание также, что запрос Bash изменяется так же, как и с sudo -i , но не с sudo -i :

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

Хотя sudo -s удобен для предоставления вам среды, с которой вы знакомы, Я рекомендую использовать sudo -s по двум причинам:

  1. Наглядное напоминание о том, что вы находитесь в «корневом» сеансе.
  2. Корневая среда гораздо реже будет отравлена ​​вредоносными программами, такими как строка изгоев в sudo -i .
ответ дан dotancohen 08.11.2014 в 14: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.
    
ответ дан Pitel 08.02.2014 в 13:42
источник

Ознакомьтесь с другими вопросами по меткам