Не так давно мы разбирали, в чем разница между командами su и sudo. Если вы предпочитаете вторую команду — сегодняшняя статья для вас.
Как известно, команда sudo запрашивает пароль для своей успешной работы. Это логично, так как работа с правами пользователя root требует ответственности. Но, если вы считаете, что пароль вам только мешает — выход есть.
Прежде, чем перейти непосредственно к теме статьи, я хотел бы сделать предупреждение. Отключение пароля в sudo подходит далеко не всем. Новичкам лучше оставить пароль. Кроме того, я не рекомендую убирать этот пароль на серверах и важных рабочих станциях. Но, если Вы — опытный пользователь, а этот компьютер с Linux это Ваш личный компьютер, то воля Ваша…
Настройки sudo хранятся в файле /etc/sudoers, но открывать его обычным способом я не рекомендую. Вместо этого лучше использовать команду
sudo visudo
В чём разница? Команда visudo проверяет синтаксис файла /etc/sudoers перед сохранением, что позволяет избежать ситуаций, когда вы сами себя лишили прав администратора и не можете их вернуть. В большинстве дистрибутивов visudo откроет /etc/sudoers через редактор vi, а вот в Ubuntu по умолчанию используется nano.
Найдите в открывшемся файле нужного пользователя или добавьте нового. Строка должна иметь следующий вид:
[имя_пользователя] ALL=(ALL:ALL) NOPASSWD: ALL
Подобное можно сотворить и с группой. В этом случае строка будет иметь вид:
%[имя_группы] ALL=(ALL:ALL) NOPASSWD: ALL
На самом деле, количество «ALL» в строке опционально и не всегда будет именно таким, как в примере выше. Но это отдельный разговор о синтаксисе файла /etc/sudoers.
Приведем пример. Как видно из скриншота ниже, пользователи, входящие в группу sudo могут использовать одноимённую команду (если учётка или группа, в которую входит учётка, не прописаны в /etc/sudoers, это вызовет ошибку, которую мы подробно разбирали здесь).
Откорректируем строчку, чтобы получилось так:
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
Теперь у всех, кто входит в эту группу, не будет спрашиваться пароль при выполнении команд через sudo.
Но это ещё не всё. Возможно, что нам не нужно убирать пароль для выполнения всех команд через sudo. Бывает удобно облегчить выполнение некоторых рутинных действий, но оставить пароль для всех остальных. К счастью, файл /etc/sudoers это дозволяет.
В общем виде для пользователей строка будет выглядеть так:
[имя_пользователя] ALL=(ALL:ALL) PASSWD: ALL, NOPASSWD: [команда_1], [команда_2] … [команда_n]
Для группы:
%[имя_группы] ALL=(ALL:ALL) PASSWD: ALL, NOPASSWD: [команда_1], [команда_2] … [команда_n]
Продолжим наш пример с группой sudo. Предположим, что Вы — любитель устанавливать и удалять приложения через Центр приложений. Но это требует прав администратора.
Конечно, можно запустить Центр приложений из терминала через sudo:
sudo gnome-software
но и тут придётся ввести пароль. Альтернатива — отмена ввода пароля для отдельной команды:
%sudo ALL=(ALL:ALL) PASSWD: ALL, NOPASSWD: /bin/gnome-software
Обратите внимание, что надо указывать полный путь к файлу команды. Файлы разделяются запятыми. Параметр PASSWD применяется в sudo по умолчанию, но, поскольку мы прописали NOPASSWD, нам пришлось прописать и PASSWD. Если этого не сделать, пользователю или группе пользователей будет дозволено выполнять только команды, перечисленные после NOPASSWD, а все остальные станут недоступны.
Статьи по теме: