Поиск по сайту:

Запретите аргументы команды с помощью Sudo в Linux

Разрешить пользователю запускать команды с помощью sudo, но без аргументов команды.

В предыдущей статье мы узнали, как выполнять команды в каталоге от имени пользователя root с помощью sudo. В этом руководстве мы увидим, как предотвратить аргументы команды с помощью sudo в Linux. Это означает, что мы разрешаем пользователю запускать команды с помощью sudo, но без аргументов команды.

Введение

Как вы уже знаете, каждая команда имеет разные варианты выполнения определенного действия. В качестве примера возьмем команду "ls".

Команда ls используется для вывода списка содержимого каталога, верно? Да. Команда ls поставляется со множеством опций и флагов командной строки. Например, вы можете использовать флаг -a с командой ls для вывода списка всего содержимого (т. е. включая скрытые файлы) в каталоге.

В этом кратком руководстве мы увидим, как разрешить пользователю запускать команду ls через sudo, но только без параметров или флагов командной строки. Понял? Позвольте мне показать вам, как это сделать, в следующих разделах.

Предотвратите аргументы команды с помощью Sudo

Отредактируйте файл /etc/sudoers от имени пользователя root:

[root@Almalinux8CT ~]# visudo

Добавьте следующую строку:

user1   ALL=(root)      /usr/bin/ls ""

Запретить аргументы команды с помощью Sudo

Обратите внимание на двойные кавычки в конце команды ls в строке выше. Двойные кавычки запрещают пользователю использовать аргументы данной команды (т. е. команды ls). Согласно приведенной выше строке, пользователь1 может запустить команду ls от имени root, но не может использовать параметры/флаги команды ls. Вы можете использовать любую другую команду по вашему выбору. Сохраните файл и закройте его.

Теперь выйдите из корневого сеанса и войдите в систему как пользователь user1 и попробуйте запустить команду ls с любыми параметрами от имени пользователя root через sudo из сеанса user1:

[user1@Almalinux8CT ~]$ sudo -u root ls -a

Вы столкнетесь со следующей ошибкой:

Sorry, user user1 is not allowed to execute '/bin/ls -a' as root on Almalinux8CT.

Однако вы можете запустить команду ls без ее аргументов:

[user1@Almalinux8CT ~]$ sudo -u root ls

Предотвратите аргументы команды с помощью Sudo

Запретить аргументы команды с помощью Sudo для всех пользователей

В приведенном выше примере показано, как запретить пользователю выполнять команду с ее аргументами от имени пользователя root. Что делать, если вы хотите применить это правило ко всем пользователям? Простой! Просто добавьте следующую строку в файл /etc/sudoers:

ALL   ALL=(root)      /usr/bin/ls ""

Теперь все пользователи вашего компьютера с Linux не смогут запускать команду ls с ее флагами.

Чтобы вернуться к настройкам по умолчанию, просто удалите команду вместе с двойными кавычками. Или удалите всю строку.

Более подробную информацию можно найти на страницах руководства.

man sudoers

Заключение

В этом руководстве мы узнали, как разрешить пользователю запускать команду с помощью sudo, но запретить ему добавлять к команде какие-либо аргументы. Таким образом, мы можем запретить пользователям злоупотреблять аргументами командной строки.

Статьи по данной тематике