Как разрешить пользователю только некоторые команды из под sudo в Linux?
Команда sudo позволяет пользователям выполнять команды с привилегиями root. Это может быть мощным инструментом, но при неаккуратном использовании он также может представлять угрозу безопасности. Одним из способов снижения этого риска является разрешение пользователям sudo выполнять определенные разрешенные команды. В этом руководстве мы покажем, как запретить пользователям sudo выполнять определенные команды с привилегиями sudo в Linux. Мы также покажем, как вернуть файл sudoers к исходной конфигурации.
Ограничение пользователей Sudo на выполнение авторизованных команд
Чтобы ограничить пользователей sudo ТОЛЬКО на выполнение авторизованных команд, можно использовать конфигурационный файл sudoers
. В большинстве дистрибутивов Linux файл sudoers
находится в каталоге /etc/sudoers
или /etc/sudoers.d/
.
Внимание: Перед внесением изменений в файл sudoers
необходимо соблюдать осторожность, так как неправильная конфигурация может привести к системным проблемам. Всегда используйте команду visudo
для редактирования файла sudoers
, поскольку она выполняет проверку синтаксиса перед сохранением изменений.
Вот как можно ограничить выполнение определенных команд пользователями sudo:
- Настоятельно рекомендуется резервное копирование файла sudoers перед внесением в него каких-либо изменений или правок. Для резервного копирования файла sudoers выполните:
sudo cp /etc/sudoers /etc/sudoers.bak
Благодаря резервному копированию файла sudoers можно легко вернуться к известной рабочей конфигурации в случае возникновения ошибок при редактировании или в случае инцидентов безопасности. - Откройте файл
sudoers
для редактирования с помощью командыvisudo
:
sudo visudo
- Прокрутите вниз до строки, где написано:
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
Приведенная выше строка означает, что членам группы «sudo» разрешено выполнять любые команды с привилегиями sudo на любом хосте и от имени любого пользователя или группы. По сути, это дает полный доступ к sudo пользователям, входящим в группу «sudo». - Чтобы разрешить пользователям sudo выполнять только определенную команду, например
apt
, измените строку, как показано ниже.
%sudo ALL=(ALL:ALL) /bin/apt
Также можно указать несколько разрешенных команд для пользователя, разделяя их запятыми:
%sudo ALL=(ALL:ALL) /path/to/allowed/command1,/path/to/allowed/command2
- Если вы хотите разрешить пользователю выполнять разрешенные команды без ввода пароля, вы можете добавить
NOPASSWD:
перед путем команды. Однако будьте осторожны при использовании этой опции, так как она может снизить безопасность системы.
%sudo ALL=(ALL) NOPASSWD: /path/to/allowed/command
- После внесения необходимых изменений сохраните и закройте файл
sudoers
. - Перед выходом из
visudo
проверьте синтаксис файлаsudoers
. Если есть синтаксические ошибки,visudo
предложит их исправить.
После выполнения этих шагов все члены группы sudo смогут выполнять только разрешенные команды с привилегиями sudo. Выполнение всех остальных команд с привилегией sudo будет запрещено, даже если пользователь является членом группы sudo.
Перечислим все команды, которые пользователь ostechnix
может выполнять с привилегией sudo.
sudo -lU ostechnix [sudo] password for ostechnix: Matching Defaults entries for ostechnix on debian12: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty User ostechnix may run the following commands on debian12: (ALL : ALL) /bin/apt
Как видно из приведенного выше результата, пользователь ostechnix
может выполнять только команду apt
с привилегией sudo.
Обратите внимание, что это относится только к командам, выполняемым с правами sudo. Выполнение любых других команд без sudo будет работать нормально.
Восстановление исходной конфигурации файла sudoers
Если вы хотите вернуть файл sudoers
к исходной конфигурации, вам необходимо изменить его синтаксис на тот, который изначально присутствовал в файле. Для этого выполните следующие действия:
- Войдите в систему под именем пользователя
root
или переключитесь на другого пользователя sudo, имеющего полные привилегии sudo. - Если у вас уже есть резервная копия, восстановите файл sudoers из нее с помощью следующей команды (при условии, что файл резервной копии находится в каталоге
/etc
).
sudo cp /etc/sudoers.bak /etc/sudoers
Если резервной копии нет, выполните следующие шаги. - Откройте файл
sudoers
для редактирования с помощью командыvisudo
. Убедитесь, что вы вошли в систему как root или другой пользователь sudo.
sudo visudo
- Найдите строку, которую вы хотите изменить. В нашем случае это строка, предоставляющая привилегии sudo группе
sudo
и позволяющая им выполнять команду/bin/apt
. - Замените текущую строку на исходную конфигурацию, которую вы хотите восстановить. Например, если текущая строка имеет вид:
%sudo ALL=(ALL:ALL) /bin/apt
Если вы хотите вернуть ее к конфигурации по умолчанию, предоставляющей полные права sudo группеsudo
, то она должна иметь вид:
%sudo ALL=(ALL:ALL) ALL
- Сохранить и закрыть файл
sudoers
. - Проверить синтаксис файла
sudoers
перед выходом изvisudo
. Если синтаксические ошибки отсутствуют, то изменения будут применены.
После внесения этих изменений конфигурация sudo
вернется к исходным настройкам, и пользователи будут иметь те же привилегии sudo, что и до внесения изменений.
Помните об осторожности при модификации файла sudoers
, поскольку неправильная конфигурация может привести к проблемам с доступом sudo в вашей системе. Всегда используйте visudo
для редактирования файла, чтобы избежать синтаксических ошибок.
Заключение
Ограничение прав пользователей sudo на выполнение определенных команд – хороший способ повысить безопасность вашей Linux-системы. Ограничение команд, которые могут выполнять пользователи sudo, позволяет снизить риск несанкционированного доступа и повреждения системы.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Вдохновлен ostechnix.com
Комментарии (0)