Как ограничить аргументы команды с sudo на Linux

Thank you for reading this post, don't forget to subscribe!

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

Давай­те рас­смот­рим коман­ду “ls” в каче­стве примера.

Коман­да ls исполь­зу­ет­ся для про­смот­ра содер­жи­мо­го ката­ло­га, вер­но? Да.

Коман­да ls постав­ля­ет­ся с мно­же­ством опций и фла­гов команд­ной строки.

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

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

Запрет командных аргументов с Sudo

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

visudo

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

Обра­ти­те вни­ма­ние на двой­ные кавыч­ки в кон­це коман­ды ls в при­ве­ден­ной выше строке.

Двой­ные кавыч­ки запре­ща­ют поль­зо­ва­те­лю исполь­зо­вать аргу­мен­ты дан­ной коман­ды (т.е. коман­ды ls).

Соглас­но при­ве­ден­ной выше стро­ке, поль­зо­ва­тель user1 может выпол­нить коман­ду ls от име­ни root, но не может исполь­зо­вать опции/флаги коман­ды ls.

Вы може­те исполь­зо­вать дру­гую коман­ду по сво­е­му выбору.

Сохра­ни­те файл и закрой­те его.

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

sudo -u root ls -a

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

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

sudo -u root ls

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

В при­ве­ден­ном выше при­ме­ре было пока­за­но, как запре­тить поль­зо­ва­те­лю выпол­нять коман­ду с аргу­мен­та­ми от име­ни поль­зо­ва­те­ля root.

Что если вы хоти­те при­ме­нить это пра­ви­ло ко всем пользователям?

Очень про­сто!

Про­сто добавь­те сле­ду­ю­щую стро­ку в файл /etc/sudoers:

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

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

Или уда­ли­те всю строку.