На сервере Linux мне нужно удалить привилегии root из группы пользователей. Но у этих пользователей есть веские основания использовать утилиту «поиск» для поиска файлов по именам файлов, датам изменения и другим метаданным.
На сервере имена файлов не являются конфиденциальными, но содержимое файла может быть.
Я хотел бы использовать sudo, чтобы позволить пользователям искать файлы в любом месте на сервере. Утилита "find" хороша, но она допускает всевозможные побочные эффекты, такие как использование -exec для запуска произвольных команд.
Могу ли я получить find
работу с моими ограничениями?
Ответы:
Как насчет найти ?
Или, может быть, даже найти :
источник
locate
не нужноsudo
; только егоupdatedb
работа требует особых привилегий. Таким образом, ваши пользователи никогда не должны запускаться или иметь возможность работатьsudo locate
.-d
флаг только устанавливает путь к базе данных? Может быть, я неправильно тебя понял.Согласно с
man 7 capabilities
Это сработало для меня. (строки, начинающиеся с «#», являются корневыми, строки с «$» - не-root), в этом случае пользователь без полномочий root входит в
wheel
группу.Учитывая, что дает возможность, она соответствует именно тому, что вы хотите. Я не исчерпывающе проверил,
find
есть ли функция, которая позволяет вам читать байты внутри файлов, но такие очевидные вещи, какLD_PRELOAD
и атаки с использованием библиотечных шимов, не должны работать из-за природы проверок setuid в Linux, а биты возможностей не получают наследуется дочерними процессами (в отличие от raw setuid), так что это еще один бонус.Имейте в виду, что то, что вы хотите сделать, поднимает возможные проблемы конфиденциальности в отношении создания или доступа к временным файлам, и программа может использоваться в качестве основы для установки попытки повышения условия / привилегии гонки (по отношению к программам, которые создают хорошо известные имена файлов). но не делайте правильных проверок безопасности).
Кроме того, некоторые плохо написанные приложения могут полагаться на файловые метаданные или древовидную структуру в качестве способа передачи значения или скрытия данных. Это может привести к разглашению ограниченной информации или раскрытию привилегированных документов, о которых иначе не известно (безопасность из-за неясности, я знаю, но это, к сожалению, особенно любят делать производители с закрытыми исходными кодами).
Поэтому будьте осторожны и с осторожностью относитесь к этому и понимайте, что с этим по-прежнему существует риск, даже если очевидные вещи не работают.
О, и мне было бы интересно посмотреть, есть ли у кого-нибудь доказательство концептуальной атаки, которое использует этот механизм в качестве основы для повышения привилегий в комментариях!
источник
find
возможность напрямую выполнять некоторый пользовательский код, аналогично тому, чтоawk
можно сделать.Я бы дал пользователям соответствующие разрешения.
По умолчанию, если используется umask
022
, каталоги создаются так, что каждый может просматривать и оценивать файлы в них. Если нет, вы можете вручную изменить разрешение каталога на побитовое или его старые разрешения и0555
:И если эти пользователи не имеют разрешения на выполнение для всех родителей этого каталога (например, домашнего каталога другого пользователя), это, вероятно, означает, что вы должны поместить первый каталог в другое место.
Если вы хотите, чтобы только некоторые пользователи могли читать и выполнять этот каталог, вы можете изменить его режим на
0750
, поместить этих пользователей в группу и изменить владельца группы каталога на эту группу:источник