Когда я получаю доступ к сетевому серверу, я использую команду sudo su
чтобы получить права администратора. Недавно я обнаружил, что sudo bash
это правильная команда, которая даст мне привилегии тем su
не.
В чем разница между sudo su
и sudo bash
? Я думал, что оба они эквивалентны.
Когда ты делаешь sudo su
вы запускаете оболочку по умолчанию для пользователя root, которая, скорее всего, будет оболочкой Bourne (sh). Ты можешь сделать sudo -s
чтобы получить оболочку по умолчанию для текущего пользователя.
Какие привилегии вам не хватает после
sudo su
? Возможно, после этой команды у вас просто не настроена среда root. Если вы это сделаете
sudo su -
(обратите внимание на «-»), тогда профиль пользователя root будет прочитан, и среда (среди прочего переменная PATH) будет установлена так, как если бы вы вошли в систему как root. Если ты бежишь sudo su
, вы сохраняете свою среду и получаете эффективный uid равный 0, что означает, что у вас есть привилегии пользователя root без настройки среды root. sudo su -
изменяет ваш текущий каталог на домашний каталог root, поэтому я использую sudo su, если я хочу выполнить пару команд в текущем каталоге (например, сменить владельца файла) без необходимости вводить длинные пути.