Для конкретного пользователя или списка конкретных пользователей я хочу сделать так, чтобы их даже не запрашивали пароль, а просто отказывали.
Хотя это после того, как я разрешил им 1 указанную команду. поэтому файл sudoers будет выглядеть примерно так (пример):
testuser ALL = (root) NOPASSWD:NOEXEC: /bin/ls, <REFUSE_EVERYTHING_ELSE_WITHOUT_ASKING_FOR_PASSWORD>
Это вообще возможно? В принципе, то, чего я хочу достичь, можно записать так:
Разрешите эту 1 команду, указанную в пользовательском файле sudoers, откажитесь от всего остального, даже не запрашивая пароль, если это конкретный пользователь.
Это возможно?
Я просмотрел всю эту страницу: https://www.sudo.ws/man/1.8.15/sudoers.man.html
И не нашел. Это просто часть запроса пароля. Я хочу, чтобы это ушло. Все остальное, что касается правильной проверки разрешения, я хочу, чтобы это осталось.
Это возможно?
РЕДАКТИРОВАТЬ: Решение было примерно таким:
##
# User alias specification (Example user, must actually exist)
##
User_Alias Defaults:TEST_USER = test_user
##
# Cmnd alias specification (Example command, multiple wildcards possible)
##
Cmnd_Alias TEST_CMD = /bin/ls */home/test_user/
# Don't ask for password on this particular user, just apply the rules.
Defaults:TEST_USER !authenticate
TEST_USER ALL = (root) NOPASSWD:NOEXEC: TEST_CMD
Я просто собираюсь добавить сюда: я прочитал комментарий о том, как этот параметр позволит злоумышленнику определить, какой пользователь может выполнить sudo, а какой нет, и это звучит так, как будто злоумышленник уже находится в той точке, где он находится в моей системе и возможность переключаться между учетными записями. Похоже, что у них есть какой-то повышенный доступ, если они в этой точке. Это звучит хуже, чем скомпрометировано 1 ограниченная учетная запись, похоже, что на этом этапе они могут получить доступ ко всем учетным записям.
Возможно, я пойму это позже и скажу «черт возьми, верно», но сейчас я этого не вижу. Честно говоря, я бы предпочел, чтобы это объяснили. Стоит ли мне задать отдельный вопрос? Поиск в Google этого конкретного варианта не дает много результатов, он кажется относительно неизвестным.
При этом эта конкретная ситуация, которую я создал, предназначена для пользователя, у которого вообще нет пароля. Поэтому я думаю, что в этом случае злоумышленник может попробовать ввести пароль несколько раз, может быть, даже специально созданную строку, а затем заключит: «О, у этого пользователя нет пароля, я ничего не могу сделать с этим пользователем» и двигаться дальше. . Точно так же, как с отключением аутентификации. По крайней мере, теперь они вообще не могут вводить специально созданную строку.
Это ужасно наивно?
Согласно документации sudo FAQ по адресу https://www.sudo.ws/troubleshooting.html ты можешь использовать !authenticate
чтобы полностью отключить пароли для каждого пользователя или для каждого хоста, например,
Defaults !authenticate
В твоем /etc/sudoers
файл должен работать.