Thank you for reading this post, don't forget to subscribe!
Как вы уже знаете, каждая команда имеет различные опции для выполнения определенного действия.
Давайте рассмотрим команду “ls” в качестве примера.
Команда ls используется для просмотра содержимого каталога, верно? Да.
Команда ls поставляется с множеством опций и флагов командной строки.
Например, вы можете использовать флаг -a в команде ls, чтобы перечислить все содержимое (т.е. включая скрытые файлы) в каталоге.
В этом кратком руководстве мы рассмотрим, как разрешить пользователю запускать команду ls через sudo, но только без опций и флагов командной строки.
Запрет командных аргументов с Sudo
Отредактируйте файл /etc/sudoers от имени пользователя root:
visudo
Добавьте следующую строку:
1 |
user1 ALL=(root) /usr/bin/ls <strong>""</strong> |
Обратите внимание на двойные кавычки в конце команды ls в приведенной выше строке.
Двойные кавычки запрещают пользователю использовать аргументы данной команды (т.е. команды ls).
Согласно приведенной выше строке, пользователь user1 может выполнить команду ls от имени root, но не может использовать опции/флаги команды ls.
Вы можете использовать другую команду по своему выбору.
Сохраните файл и закройте его.
Теперь выйдите из сессии root и войдите под именем user1 и попробуйте запустить команду ls с любыми опциями как root через sudo из сессии user1:
Вы столкнетесь со следующей ошибкой:
1 |
Sorry, user user1 is not allowed to execute '/bin/ls -a' as root on itsecforu.ru |
Однако вы сможете выполнить команду ls без аргументов:
Запрет командных аргументов с Sudo для всех пользователей
В приведенном выше примере было показано, как запретить пользователю выполнять команду с аргументами от имени пользователя root.
Что если вы хотите применить это правило ко всем пользователям?
Очень просто!
Просто добавьте следующую строку в файл /etc/sudoers:
1 |
ALL ALL=(root) /usr/bin/ls <strong>""</strong> |
Теперь все пользователи этой машины Linux не могут выполнить команду ls с ее флагами.
Чтобы вернуться к настройкам по умолчанию, просто удалите команду вместе с двойными кавычками.
Или удалите всю строку.