Как разрешить пользователю только некоторые команды из под sudo в Linux?

Команда sudo позволяет пользователям выполнять команды с привилегиями root. Это может быть мощным инструментом, но при неаккуратном использовании он также может представлять угрозу безопасности. Одним из способов снижения этого риска является разрешение пользователям sudo выполнять определенные разрешенные команды. В этом руководстве мы покажем, как запретить пользователям sudo выполнять определенные команды с привилегиями sudo в Linux. Мы также покажем, как вернуть файл sudoers к исходной конфигурации.

Ограничение пользователей Sudo на выполнение авторизованных команд

Чтобы ограничить пользователей sudo ТОЛЬКО на выполнение авторизованных команд, можно использовать конфигурационный файл sudoers. В большинстве дистрибутивов Linux файл sudoers находится в каталоге /etc/sudoers или /etc/sudoers.d/.

Внимание: Перед внесением изменений в файл sudoers необходимо соблюдать осторожность, так как неправильная конфигурация может привести к системным проблемам. Всегда используйте команду visudo для редактирования файла sudoers, поскольку она выполняет проверку синтаксиса перед сохранением изменений.

Вот как можно ограничить выполнение определенных команд пользователями sudo:

  1. Настоятельно рекомендуется резервное копирование файла sudoers перед внесением в него каких-либо изменений или правок. Для резервного копирования файла sudoers выполните:
    sudo cp /etc/sudoers /etc/sudoers.bak

    Благодаря резервному копированию файла sudoers можно легко вернуться к известной рабочей конфигурации в случае возникновения ошибок при редактировании или в случае инцидентов безопасности.
  2. Откройте файл sudoers для редактирования с помощью команды visudo:
    sudo visudo
  3. Прокрутите вниз до строки, где написано:
    # Allow members of group sudo to execute any command
    %sudo ALL=(ALL:ALL) ALL

    Приведенная выше строка означает, что членам группы «sudo» разрешено выполнять любые команды с привилегиями sudo на любом хосте и от имени любого пользователя или группы. По сути, это дает полный доступ к sudo пользователям, входящим в группу «sudo».
  4. Чтобы разрешить пользователям sudo выполнять только определенную команду, например apt, измените строку, как показано ниже.
    %sudo ALL=(ALL:ALL) /bin/apt


    Также можно указать несколько разрешенных команд для пользователя, разделяя их запятыми:
    %sudo ALL=(ALL:ALL) /path/to/allowed/command1,/path/to/allowed/command2
  5. Если вы хотите разрешить пользователю выполнять разрешенные команды без ввода пароля, вы можете добавить NOPASSWD: перед путем команды. Однако будьте осторожны при использовании этой опции, так как она может снизить безопасность системы.
    %sudo  ALL=(ALL)  NOPASSWD: /path/to/allowed/command
  6. После внесения необходимых изменений сохраните и закройте файл sudoers.
  7. Перед выходом из 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 к исходной конфигурации, вам необходимо изменить его синтаксис на тот, который изначально присутствовал в файле. Для этого выполните следующие действия:

  1. Войдите в систему под именем пользователя root или переключитесь на другого пользователя sudo, имеющего полные привилегии sudo.
  2. Если у вас уже есть резервная копия, восстановите файл sudoers из нее с помощью следующей команды (при условии, что файл резервной копии находится в каталоге /etc).
    sudo cp /etc/sudoers.bak /etc/sudoers

    Если резервной копии нет, выполните следующие шаги.
  3. Откройте файл sudoers для редактирования с помощью команды visudo. Убедитесь, что вы вошли в систему как root или другой пользователь sudo.
    sudo visudo
  4. Найдите строку, которую вы хотите изменить. В нашем случае это строка, предоставляющая привилегии sudo группе sudo и позволяющая им выполнять команду /bin/apt.
  5. Замените текущую строку на исходную конфигурацию, которую вы хотите восстановить. Например, если текущая строка имеет вид:
    %sudo ALL=(ALL:ALL) /bin/apt

    Если вы хотите вернуть ее к конфигурации по умолчанию, предоставляющей полные права sudo группе sudo, то она должна иметь вид:
    %sudo ALL=(ALL:ALL) ALL
  6. Сохранить и закрыть файл sudoers.
  7. Проверить синтаксис файла sudoers перед выходом из visudo. Если синтаксические ошибки отсутствуют, то изменения будут применены.

После внесения этих изменений конфигурация sudo вернется к исходным настройкам, и пользователи будут иметь те же привилегии sudo, что и до внесения изменений.

Помните об осторожности при модификации файла sudoers, поскольку неправильная конфигурация может привести к проблемам с доступом sudo в вашей системе. Всегда используйте visudo для редактирования файла, чтобы избежать синтаксических ошибок.

Заключение

Ограничение прав пользователей sudo на выполнение определенных команд – хороший способ повысить безопасность вашей Linux-системы. Ограничение команд, которые могут выполнять пользователи sudo, позволяет снизить риск несанкционированного доступа и повреждения системы.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен ostechnix.com

Похожие статьи

Комментарии (0)