Sudo
В работе с командной строкой мы часто сталкиваемся с ситуациями, в которых необходимо повышать привилегии и выполнять команды от имени суперпользователя root
. С некоторыми мы уже столкнулись, с другими познакомимся в следующих уроках:
Установка новых программ
Навигация по чужим директориям
Изменение прав доступа
Изменение содержимого в файлах, не принадлежащих текущему пользователю
Создание, редактирование и удаление файлов, когда не хватает прав текущего пользователя
Запуск программ, требующих повышенных привилегий
В этом уроке обсудим, как стать другим пользователем. Для этого зайдите в систему и воспользуйтесь утилитой su
(сокращение от substitute user или switch user). Когда-то такой способ был основным, но сейчас он устарел и не рекомендуется к использованию. Подробнее об этом можно прочитать в статье « Su или sudo?» из дополнительных материалов.
Основной способ повышать привилегии в современных системах — утилита sudo
(substitute user and do — дословно «подменить пользователя и выполнить»).
Использовать sudo
очень просто, достаточно написать эту команду слева от любой другой и выполнить. По умолчанию она пытается повысить привилегии до суперпользователя:
В зависимости от настроек, утилита sudo
попросит ваш пароль для входа или вообще откажется работать, сказав, что у вас нет права ее использовать. Как правило, в Ubuntu sudo
спрашивает пароль и запоминает его на пять минут. На протяжении этого времени вы можете использовать sudo
, не вводя пароль каждый раз.
Иногда нужно выполнить команду из-под пользователя, отличного от root
. Тогда придется добавить флаг -u
:
Главное — не забыть переключиться обратно после завершения необходимых манипуляций. Для этого наберите exit
.
Подводные камни
Знание про sudo
играет с новичками злую шутку. Каждый раз, когда они видят странные ошибки, то не пытаются разобраться, а пробуют запустить команду с sudo
без параметров — то есть просто выполнить ее от суперпользователя. Часто такой подход срабатывает, но он создает еще больше проблем.
Представим, что из-под sudo
мы запустили команду, которая создает файлы и директории. В таком случае владельцем этих файлов становится суперпользователь. Все последующие обращения к этому файлу без sudo
начнут выдавать ошибку «У вас нет прав доступа». Причем даже необязательно работать с этими файлами напрямую. Множество программ так или иначе обращаются к файловой системе для чтения конфигурационных и других файлов.
Правильный выход из ситуации в каждом случае свой. В некоторых случаях sudo
– это то, что нужно. В других случаях требуется изменить права (об этом в следующем уроке), а иногда и переустановить какую-нибудь часть системы.
Общее правило может быть таким:
Все, что лежит в личных директориях пользователя, должно принадлежать этому пользователю
Все, что находится вне домашней директории пользователя и требует дополнительных прав, скорее должно запускаться с
sudo
, но бывают и исключения
Рассмотрим, как это работает на практике:
Дополнительные материалы
Вопросы для самопроверки
Почему нельзя все время находиться в режиме суперпользователя?
Это небезопасно — если кто-то получит контроль над учетной записью, то он сможет все сломать
Всегда так делаю, мне нормально
Это небезопасно, потому что любые команды от суперпользователя имеют полный доступ к системе