Должен ли /tmp или /private/tmp на MacOS быть доступен для записи всем?

Вопрос или проблема

Я знаю, что по умолчанию /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 по умолчанию имеет права на запись для всех пользователей. Это поведение вызывает обсуждения в сообществе ИТ-специалистов, касающиеся целесообразности таких прав и их влияния на безопасность системы. В этой статье мы рассмотрим, нужно ли поддерживать эти права, а также возможные последствия их изменения.

Обоснование необходимости записи для всех

  1. Потребности приложений: Многие приложения и сценарии обращаются к /tmp для хранения временных файлов. Они часто используют стандартные методы получения пути к временным директориям, такие как переменные окружения и системные вызовы, которые предполагают наличие доступа к /tmp. Если права на запись будут ограничены, это может привести к поломке приложений, которые зависят от данного поведения.

  2. Проблемы с совместимостью: Программное обеспечение, использующее /private/tmp корректно, может столкнуться с проблемами, если права доступа будут изменены. Приложения, работающие с временными файлами, могут не предусматривать обработки ошибок, связанных с доступом, и это может привести к непредсказуемым сбоям.

  3. Пользовательские сценарии: В средах, где требуется создание временных файлов различными пользователями, необходимо обеспечение совместного доступа. Лимитирование прав может создать препятствия в совместной работе, особенно в окружениях, где используются скрипты или команды, делающие обращения к временным директориям.

Альтернативные подходы к безопасности

  1. Песочница приложений: Популярные современные приложения на macOS обычно работают в песочнице, что означает, что они ограничены доступом к системным директориям. Такие приложения обращаются к временным файлам в своих контейнерах в ~/Library/Containers, что минимизирует зависимость от /tmp. Это снижает риски, благодаря чему ограничения на директорию /private/tmp могут не иметь большого значения для большинства ответственных приложений.

  2. Использование локальных временных директорий: Другие приложения и сценарии (особенно на базе Unix) используют переменную окружения $TMPDIR для определения местоположения временных файлов. Многие из них создают временные директории в более защищенных местах, таких как /var/folders, что может обеспечить дополнительный уровень безопасности без переписывания системных директорий.

Заключение

Хотя по умолчанию директория /tmp и её содержимое имеют права на запись для всех пользователей, устойчивость и совместимость приложений накладывают серьезные ограничения на изменение этих настроек. Существует множество программных и системных решений, позволяющих минимизировать риски и повышать уровень безопасности, не прибегая к изменению стандартной конфигурации.

Следовательно, изменение прав доступа к /private/tmp с целью ограничения записи, скорее всего, приведет к большей проблеме с совместимостью приложений, чем к улучшению безопасности. Важно помнить, что практики работы с временными файлами должны адаптироваться под современные реалии и требования безопасности, и правильная архитектура приложений может снизить зависимость от временных директорий системы.

Оцените материал
Добавить комментарий

Капча загружается...