Запретите аргументы команды с помощью 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, но запретить ему добавлять к команде какие-либо аргументы. Таким образом, мы можем запретить пользователям злоупотреблять аргументами командной строки.