Вопрос или проблема
Я знаю, что по умолчанию /tmp
имеет разрешения на запись для всех, но интересно, нужно ли это? Нужно ли операционной системе MacOS и любым её вспомогательным приложениям, чтобы /tmp
->
/private/tmp
имел разрешения на запись для всех?
Я не могу найти ничего в документации Apple, что подтверждало бы одну или другую точку зрения, и надеялся, что кто-то другой может знать?
Есть аргументы за удаление разрешений на запись для всех для повышения безопасности, поскольку приложения должны использовать свою собственную папку для временных файлов.
Если вы закроете разрешения для /private/tmp
(на что /tmp
является символьной ссылкой), то любое программное обеспечение, которое попытается использовать его каким-либо образом, нарушающим изменения разрешений, выйдет из строя (даже если оно использовало эту папку безопасным образом, что вполне возможно).
Позвольте мне объяснить, как изменение разрешений для /private/tmp
повлияет на различные типы программного обеспечения:
- Приложения в песочнице (т.е. те, которые используют механизм песочницы MacOS) в основном ограничены своим собственным контейнером песочницы (в папке
~/Library/Containers
), с ограниченным доступом к чему-либо за её пределами. Я не думаю, что им разрешено использовать/private/tmp
вообще (независимо от предоставленных на него разрешений). Если только нет прав, которые позволят им получить к нему доступ — но я не знаю о таких. - Программное обеспечение, которое использует стандартные способы создания/находки временных файлов (включая оболочки, которые используют
$TMPDIR
илиmktemp -t ...
), будет автоматически использовать частную (по пользователю) папку в/var/folders/something...
, которая гораздо более защищена, чем можно сделать с/private/tmp
. - Программное обеспечение, которое использует
/private/tmp
правильно (что не просто, но, как я уже сказал, это вполне возможно), вероятно, просто не сможет работать, если ваши изменения разрешений не позволят к нему доступ (возможно, безопасным образом, возможно, нет — зависит от деталей). - Программное обеспечение, которое использует
/private/tmp
неправильно, вероятно, также просто не сможет работать, если ваши изменения разрешений не позволят к нему доступ (снова, возможно, безопасным образом, возможно, нет — это зависит от деталей).
Таким образом, насколько я могу судить, закрытие /private/tmp
скорее всего просто нарушит работу некоторых программ, и вероятно создаст больше проблем, чем решит.
Ответ или решение
Нужно ли, чтобы /tmp
или /private/tmp
на macOS имели права на запись для всех пользователей?
Введение
Директория /tmp
(которая является символьной ссылкой на /private/tmp
) в macOS по умолчанию имеет права на запись для всех пользователей. Это поведение вызывает обсуждения в сообществе ИТ-специалистов, касающиеся целесообразности таких прав и их влияния на безопасность системы. В этой статье мы рассмотрим, нужно ли поддерживать эти права, а также возможные последствия их изменения.
Обоснование необходимости записи для всех
-
Потребности приложений: Многие приложения и сценарии обращаются к
/tmp
для хранения временных файлов. Они часто используют стандартные методы получения пути к временным директориям, такие как переменные окружения и системные вызовы, которые предполагают наличие доступа к/tmp
. Если права на запись будут ограничены, это может привести к поломке приложений, которые зависят от данного поведения. -
Проблемы с совместимостью: Программное обеспечение, использующее
/private/tmp
корректно, может столкнуться с проблемами, если права доступа будут изменены. Приложения, работающие с временными файлами, могут не предусматривать обработки ошибок, связанных с доступом, и это может привести к непредсказуемым сбоям. -
Пользовательские сценарии: В средах, где требуется создание временных файлов различными пользователями, необходимо обеспечение совместного доступа. Лимитирование прав может создать препятствия в совместной работе, особенно в окружениях, где используются скрипты или команды, делающие обращения к временным директориям.
Альтернативные подходы к безопасности
-
Песочница приложений: Популярные современные приложения на macOS обычно работают в песочнице, что означает, что они ограничены доступом к системным директориям. Такие приложения обращаются к временным файлам в своих контейнерах в
~/Library/Containers
, что минимизирует зависимость от/tmp
. Это снижает риски, благодаря чему ограничения на директорию/private/tmp
могут не иметь большого значения для большинства ответственных приложений. -
Использование локальных временных директорий: Другие приложения и сценарии (особенно на базе Unix) используют переменную окружения
$TMPDIR
для определения местоположения временных файлов. Многие из них создают временные директории в более защищенных местах, таких как/var/folders
, что может обеспечить дополнительный уровень безопасности без переписывания системных директорий.
Заключение
Хотя по умолчанию директория /tmp
и её содержимое имеют права на запись для всех пользователей, устойчивость и совместимость приложений накладывают серьезные ограничения на изменение этих настроек. Существует множество программных и системных решений, позволяющих минимизировать риски и повышать уровень безопасности, не прибегая к изменению стандартной конфигурации.
Следовательно, изменение прав доступа к /private/tmp
с целью ограничения записи, скорее всего, приведет к большей проблеме с совместимостью приложений, чем к улучшению безопасности. Важно помнить, что практики работы с временными файлами должны адаптироваться под современные реалии и требования безопасности, и правильная архитектура приложений может снизить зависимость от временных директорий системы.