Вопрос: В чем разница между sudo -i и sudo su -


В чем разница между командами sudo -i а также sudo su -?

Они одинаковы?


18
2018-02-14 06:23


Источник




Ответы:


Они могут обеспечить функциональную близость к одной и той же вещи, но, похоже, «sudo -i» является более легким весом и сохраняет некоторые полезные обратные ссылки в вашей среде.

Вы можете увидеть дополнительные процессы, посмотрев «ps auxf» (f дает вам вид леса)

sudo -i  дает это дерево процессов

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4675  0.6  0.0  19512  2260 pts/0    S+   23:42   0:00  |           \_ -bash

sudo su - дает это дерево процессов

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4687  0.5  0.0  43256  1488 pts/0    S    23:42   0:00  |           \_ su -
root      4688  0.5  0.0  19508  2252 pts/0    S+   23:42   0:00  |               \_ -su

Обратите внимание, что они начинаются с одного и того же процесса bash pid, 4482, но это su - похоже, порождает еще один шаг.)

Ваш первый 'sudo' уже повышает ваш уровень доступа до root. Запуск su без указания имени пользователя внутри sudo изменяет текущего пользователя на root дважды.

Другой способ исследовать это - запустить обе команды с strace -f.

strace -f -o sudoi sudo -i

против

strace -f -o sudosu sudo su -

Если вы разделите эти две страты, вы увидите, что больше exeve запускается для sudo su -.

Еще кое-что.

sudo -i поддерживает дополнительные переменные среды, заданные SUDO.

SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000

sudo su - clobbers эти переменные.


30
2018-02-14 07:46



Спасибо, я проголосовал за вас как правильный ответ. Еще один вопрос, так sudo su - бессмысленно? - Howard
Если вы захотите скрыть ссылки SUDO назад, это может быть полезно. Поэтому в этом случае не бессмысленно. - Joel K
Существуют также большие различия в обработке аргументов, обработке переменных среды и в безопасности, когда вы становитесь пользователем без полномочий root. Посмотрите, что я добавил здесь: serverfault.com/q/601140/102814 - Craig Ringer


Ответ на выстрел: Нет, они не то же самое.

Длительный ответ: sudo и su - это разные программы, которые выполняют ту же задачу, что повышает привилегии root.

су был фактическим способом стать root на Linux-системах. Однако всегда существовала необходимость отделить привилегии и оставить информацию об аудите. Также, когда вы делаете su - все, что вы делаете, выполняется как корень и опасно иметь такую ​​мощь. Вот где судо пришло на помощь.

Судо имеет некоторые характеристики, которые су не. Ключевым элементом в sudo является его способность запускать «одну» команду как root, а затем отбрасывать привилегии обычным пользователям. Пример. Удалите файл, принадлежащий root. 

sudo rm /root/someFile

Эта команда удалит файл, потому что sudo поднимет вас на root каждый раз, когда вы используете команду sudo перед другой командой. Следующая запущенная команда будет запущена как обычный пользователь (если вы не добавите команду sudo в начале). Это позволяет выполнить административную задачу, а затем сразу же отказаться от привилегий, помогая избежать опасных условий.

sudo также предоставляет другие преимущества, ограничивающие набор программ, которые пользователь может запускать, команды журналов запускаются под sudo и другими вещами. Для получения дополнительной информации Судо в двух словах

Когда вы это сделаете su - или sudo -i вы делаете то же самое. Это становится корнем, но имейте в виду, что су а также Судо совершенно разные и предоставляют вам различные инструменты в качестве системного администратора. Лично я НИКОГДА не запускаю su - и мой политика pam запрещает это, позволяя никому не запускать его. В моих системах вы всегда должны использовать sudo для получения дополнительных преимуществ.

Больше информации: Использование и включение sudo


1
2018-02-17 15:17



su также может запускать только одну команду: su -c 'command ...' - Eliah Kagan
Вопрос заключался в разнице между sudo -i а также sudo su -, а не между sudo а также su, - Alessio Gaeta