Команда sudo в MacOS Sierra не учитывает timestamp_timeout

После обновления до MacOS Sierra (10.12) моя команда sudo, похоже, действует по-другому. См. следующий тестовый пример:

# Run in terminal pane #1: (should prompt for password)
sudo -v

# Run in terminal pane #2: (should NOT prompt for password)
sudo -v

Вышеприведенное работает, как и ожидалось, в более ранних версиях OS X. Однако в Sierra вторая команда снова запрашивает пароль. Он не запрашивает пароль в той же панели терминала. Кажется, это происходит только для пользователя root; следующее работает, как и ожидалось, на всех версиях ОС, включая Sierra:

# Run in terminal pane #1: (prompts for password)
sudo -v -u "$USER"

# Run in terminal pane #2: (does not prompt for password)
sudo -v -u "$USER"

Глядя на /ect/sudoers, значение timestamp_timeout не установлено на 0. Я бегло просмотрел журнал изменений с 1.7 на 1.8, но не нашел с чем-либо значительным, кроме упоминания плагина политики для Sierra при запуске sudo -V.

Может ли кто-нибудь помочь мне понять, что изменилось? У меня есть сценарий, который использует значение тайм-аута sudo для проверки активности, а в Sierra он постоянно запрашивает пароль, поскольку, похоже, он больше не использует временную метку для пользователя root.


person ezekg    schedule 13.09.2016    source источник


Ответы (2)


После тонны поиска и сравнения конфигурации sudo в более старых версиях ОС с Sierra (sudo su; sudo -V) кажется, что Sierra теперь включает tty_tickets по умолчанию, вызывая проблемы, упомянутые выше. Насколько я могу судить, это было недокументированное изменение. Чтобы исправить, необходимо добавить в файл /etc/sudoers следующее, запустив sudo visudo,

Defaults !tty_tickets
person ezekg    schedule 13.09.2016

TLDR; ПЛОХАЯ ИДЕЯ. Это старое поведение, хотя и является опцией sudo, не используется по умолчанию НИКАКОЙ ДРУГОЙ ОС UNIX-y, с которой я когда-либо сталкивался. Причина в том, что это тривиально для использования, и когда это происходит, злонамеренный код получает полный контроль над вашей системой.

Исходный очень длинный разглагольствовающий пост, правильно отмеченный как бладибла:

ЛОЛ, это смешно. Я пришел сюда из поиска в Google, потому что не мог вспомнить, как изменить старое поведение на это новое, правильное (используемое всеми другими ОС UNIX-y). Даже не заметил, что мой новый Sierra Mac теперь ведет себя нормально.

Ранее я писал на форумах Mac об этом предыдущем поведении, которое является зияющей дырой в безопасности. Я даже предоставил трехстрочный сценарий для проверки концепции, который просто сидел (как обычный пользователь) и ждал появления события sudo в любом месте, а затем мгновенно получал root-доступ к системе. Фанаты выгнали меня из треда, а потом запретили мне лгать. Однако, похоже, Apple прислушивалась. Хорошая работа, на этот раз, Купертино. Плохая, ПЛОХАЯ идея попытаться вернуть старое поведение.

Для справки, вот трехстрочный. Он не делает ничего злонамеренного, просто добавляет фиктивный файл в корень файловой системы после получения sudo. Запустите его в скрипте (или просто вставьте куда-нибудь, где еще нет sudo), затем либо выполните sudo в другом терминальном приложении/окне, либо в приложении, которое использует sudo (например, TrueCrypt/VeraCrypt или подобное), а затем посмотрите, как это работает.

tail -f -n 0 /var/log/system.log | grep -m 1 -E 'sudo\[[0-9]+\]:\s+'$USER
echo "Gonna play around with root privs ..."
sudo touch /kilroy-was-here
person DanielSmedegaardBuus    schedule 11.01.2017
comment
Хорошая история, но на самом деле SO — это не место для рассказывания историй; по крайней мере в моих глазах. Видите ли, ответы должны быть предназначены помочь людям в решении проблем. Но в вашем ответе я бы сказал, что 75% этого текста вообще не добавляют ценности. Итак, моя личная рекомендация (особенно, когда вы заинтересованы в получении репутации за свои ответы): избегайте рассказывания историй. Четкие и точные факты привлекают больше положительных отзывов, чем ответы, начинающиеся с LOL. Но, как уже было сказано, это были мои личные 2 цента. - person GhostCat; 11.01.2017
comment
Знаешь, @GhostCat, это совершенно верное замечание, и я полностью согласен. +1 к этому комментарию от меня. Было 6:30 утра, пытался уйти от Песочного человека на работу. Тем не менее, я просто добавлю быстрый TLDR вверху, потому что... Не уверен... Меня больше не волнуют ошибки Apple :D Также выпьем пива и поиграем в Clash of Clans, вот что: Д - person DanielSmedegaardBuus; 11.01.2017