Ответы:
Они могут быть функционально близки к одной и той же вещи, но кажется, что «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
Обратите внимание, что они запускаются с того же pid процесса bash, 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 - забивает эти переменные.
Снимок ответа: нет, они не одинаковы.
Длинный ответ: sudo и su - это разные программы, которые выполняют одну и ту же задачу, то есть повышают привилегии пользователя root.
Раньше su был способом де-факто стать пользователем root в системах Linux. Однако всегда была необходимость разделить привилегии и оставить некоторую информацию об аудите. Также, когда вы делаете su - все, что вы делаете, делается от имени root и опасно иметь такую большую силу. Вот где на помощь пришла Судо.
У sudo есть некоторые характеристики, которых нет у su . Ключевым элементом в sudo является возможность запускать «одну» команду от имени пользователя root и затем передавать привилегии обычному пользователю. Пример: удалить файл, принадлежащий пользователю root.
sudo rm /root/someFile
Эта команда удалит файл, потому что sudo будет поднимать вас до уровня root каждый раз, когда вы используете команду sudo перед другой командой. Следующая команда, которую вы запустили, будет выполняться как обычный пользователь (если вы не добавите команду sudo в начале). Это позволяет вам выполнить административную задачу, а затем сразу же отбросить привилегии, помогая избежать опасных ситуаций.
sudo также предоставляет другие преимущества, такие как ограничение набора программ, которые может запускать пользователь, команды журналов, запускаемые с помощью sudo, и другие вещи. Для получения дополнительной информации sudo в двух словах
Когда вы делаете su - или sudo -i, вы делаете то же самое. Это становится root, но имейте в виду, что su и sudo совершенно разные и предоставляют вам различные инструменты как системный администратор. Лично я НИКОГДА не запускаю su - и моя политика pam запрещает это , не позволяя никому запускать его. В моих системах вы всегда должны использовать sudo из-за дополнительных преимуществ.
Больше информации: Использование и включение sudo
su
Также можно запустить только одну команду:su -c 'command ...'
sudo -i
а sudo su -
, а не между sudo
и su
.
sudo su -
бессмысленно?