Есть ли разница между следующими двумя командами?
sudo su - root
и
sudo bash -c 'su - root'
Это кажется глупым вопросом, но я считаю, что для безопасности есть некоторая выгода, если разрешить только второй. Я просто не знаю, какая от этого польза. Не могли бы вы дать мне совет по этому поводу?
sudo su
пуски su
напрямую с привилегиями суперпользователя, а sudo bash
сначала запускает оболочку, а затем выполняет команду с bash -c
.
Основное отличие будет заключаться в том, что ваш .bashrc
скрипт будет запущен перед выполнением su - root
команда. От этого зависит исход.
Случаи использования:
Лаух bash
с повышенными привилегиями, используя собственный пароль:
sudo bash
Оболочка Lauch как пользователь root
, с паролем root:
su - root
Оболочка Lauch как пользователь root
, с вашим собственным паролем:
sudo su - root
Все уже покрыто, на самом деле нет необходимости:
sudo bash -c 'su - root'
Sudo не позволит вам выполнять перенаправление команд изначально; например, следующее не сработает - при попытке записи все еще отказано в разрешении:
sudo echo -e “\x23\x21/usr/bin/sudo /bin/bash\napt-get update\napt-get -y dist-upgrade” > /usr/bin/distupgrade && sudo chmod a+x /usr/bin/distupgrade
Заворачивая все в sudo bash -c
решает эту проблему:
sudo bash -c “echo -e \”\x23\x21/usr/bin/sudo /bin/bash\napt-get update\napt-get -y dist-upgrade\” > /usr/bin/distupgrade && chmod a+x /usr/bin/distupgrade”
Вместо этого вам следует использовать
sudo -i
su и sudo - два очень разных способа повышения привилегий, но в конечном итоге оба позволяют запускать команды от имени целевого пользователя - в вашем случае root.
sudo использует ваше имя пользователя и ваши группы, чтобы решить, можете ли вы выполнить команду, в то время как su ожидает, что вы знаете пароль вашего целевого пользователя - за исключением пользователя root, который может стать кем угодно без пароля.
Когда ты бежишь sudo su - root
вы дважды аутентифицируетесь, на практике для создания оболочки с правами root, что вы можете сделать, запустив sudo -i