Данная статья – это продолжение темы, посвящённой утилите sudo
, начатой материалами, знакомящими с данной командой и некоторыми её опциями. Ниже попробуем рассказать о настройках утилиты sudo
, которые могут применяться в её отношении.
Настройки sudo
по большей части находятся в файле /etc/sudoers
. Для внесения изменений в этот файл крайне нежелательно использовать обычный редактор текста. Дело в том, что некорректный синтаксис файла sudoers
запросто может навредить операционной системе в части повышения уровня полномочий учётных записей и их действий. Для редактирования файла sudoers
существует специальная команда – visudo
. Данная команда использует штатный текстовый редактор, но при сохранении внесённых в файл изменений производит проверку синтаксиса.
Здесь есть один интересный момент. Команда visudo
обычно использует текстовый редактор vi
. Но, например, в Ubuntu visudo
открывает файл при помощи nano
. И, несмотря на это, операционная система сохраняет возможность заменить использующийся редактор. В Ubuntu команда для изменения редактора выглядит следующим образом:
$ sudo update-alternatives --config editor
Здесь нужно просто ввести соответствующую цифру, либо нажать <Enter>
, чтобы не вносить изменений:
Содержимое файла /etc/sudoers
Теперь давайте рассмотрим некоторые настройки, содержащиеся в файле /etc/sudoers
.
Во-первых, строка Defaults env_reset
отвечает за сброс терминальной среды с целью удалить переменные пользователя. Такая мера безопасности применяется для ликвидации потенциально опасного воздействия переменных среды в сессии sudo
.
Во-вторых, строка Defaults secure_path
задаёт значение для переменной PATH
. Такой путь для приложений используется утилитой sudo
для выполнения операций. Это позволяет защитить систему от использования пользовательских путей, которые могут быть потенциально опасными.
Далее, в файле /etc/sudoers
есть строка, определяющая полномочия sudo
для учётной записи root
.
В этой записи первое значение ALL
указывает на то, что описанное правило будет применено ко всем хостам. Второе значение ALL
указывает на то, что учётная запись root
может выполнять команды от имени любого пользователя. Третье значение ALL
говорит о том, что учётная запись root
может выполнять команды от имени любой группы. И, наконец, последнее значение ALL
указывает на то, что данное правило применяется ко всем выполняемым командам.
Также, рассматриваемый файл содержит строку, задающую правила полномочий sudo
для групп.
Имена, которые начинаются со знака %
, указывают на то, что речь идёт именно о названиях групп, а не об именах учётных записей. В остальном данная настройка идентична тому, как это описано в отношении пользователей.
Есть в файле /etc/sudoers
настройка, которая выглядит как комментарий.
Несмотря на то, что строка с параметром includedir
начинается со знака #
, комментарием данная строка не является. Этот параметр указывает на то, что файлы, находящиеся в директории /etc/sudoers.d
, также применяются для настройки полномочий sudo
. Файлы в этом каталоге создаются в основном для того, чтобы определённые пользователи могли запускать определённые команды с использованием привилегий sudo
. Данные файлы, также как и файл /etc/sudoers
, необходимо редактировать командой visudo
. Например, для того, чтобы отредактировать файл /etc/sudoers.d/mysettingsfile
, следует применить следующую конструкцию:
$ sudo visudo -f /etc/sudoers.d/mysettingsfile
Использование псевдонимов
При организации данных по разным пользователям и группам в файле /etc/sudoers
полезно использование различных псевдонимов. Вот так выглядят записи в /etc/sudoers
, соответствующие трём разным группам пользователей:
User_Alias GROUPA = user1, user2, user3
User_Alias GROUPB = user4, user5, user3
User_Alias GROUPC = user1, user4, user5
Важно помнить, что названия групп должны начинаться с заглавной буквы. Следующей строкой для членов группы GROUPA
мы дадим разрешение на запуск обновления базы данных apt
:
GROUPA ALL = /usr/bin/apt update
Подобным же образом мы можем дать участникам группы GROUPC
разрешение на перезагрузку операционной системы. Для этого необходимо создать псевдоним, содержащий команды на перезагрузку системы. Такой псевдоним мы назовём, например, RSTRT
. После чего участникам группы GROUPC
нужно будет выдать разрешение на запуск этих команд.
Cmnd_Alias RSTRT = /sbin/restart, /sbin/reboot
GROUPC ALL= RSTRT
В файле /etc/sudoers
существует возможность контролировать реакцию утилиты sudo
при её вызове. Например, вы можете разрешить пользователям выполнять какую-либо команду с использованием полномочий root
, но без необходимости пользователю вводить свой пароль. Для таких случаев применяется опция NOPASSWD
. Так будет выглядеть запись в /etc/sudoers
, разрешающая запуск команды apt update
участникам группы GROUPB
:
GROUPB ALL = NOPASSWD: /usr/bin/apt update
И кстати, в /etc/sudoers
есть настройка, позволяющая изменить количество неправильных попыток ввода пароля при выполнении команды sudo
. По умолчанию таких попыток разрешено 3. Но если есть желание увеличить из количество, допустим, до четырёх, то такая настройка будет выглядеть как:
Defaults passwd_tries=4
Там же вы можете изменить фразу, с помощью которой система сообщает вам о неверно набранном пароле при запуске sudo
:
Defaults badpass_message="Your password is not correct!"
И эту фразу пользователь будет видеть вместо стандартной Sorry, try again.
Вместо заключения
Файл /etc/sudoers
является очень мощным инструментом настройки функционирования системы. В этой ознакомительной статье мы лишь вкратце коснулись данной темы. Ну, а поскольку вы теперь знаете, что такие настройки возможны, глубину их изучения определять именно вам. Ведь применять или не применять их в работе с Linux-системами, решаете вы.