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

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

Я знаю, что по умолчанию он доступен для записи всем, но мне интересно, а нужно ли это? Должна ли операционная система MacOS и любые ее поддерживающие приложения быть доступны для /tmp -> /private/tmpзаписи всем?

Я не могу найти в документации Apple никаких указаний на этот счет и надеялся, что кто-то другой знает?

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

решение1

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

Позвольте мне рассказать, как изменение разрешений /private/tmpповлияет на различные типы программного обеспечения:

  • Приложения в песочнице (т. е. те, которые выбирают механизм песочницы macOS) в основном ограничены своим собственным контейнером песочницы (в ~/Library/Containers), с ограниченным доступом к чему-либо за его пределами. Я не думаю, что им вообще разрешено использовать /private/tmp(независимо от того, какие разрешения на это есть). Если только нетправоэто позволило бы им получить к нему доступ, но я не знаю никого, кто бы это сделал.
  • Программное обеспечение, использующее любой из стандартных способов создания/расположения временных файлов (включая сценарии оболочки, использующие $TMPDIRили mktemp -t ...), автоматически будет использовать личный (для каждого пользователя) каталог в /var/folders/something..., что гораздо более защищено, чем можно было бы сделать с помощью /private/tmp.
  • Программное обеспечение, которое использует/private/tmp правильно(что нетривиально, но, как я уже сказал, вполне возможно) скорее всего, просто не сработает, если изменение прав доступа не позволяет получить к нему доступ (возможно, безопасным способом, а возможно, и нет — зависит от деталей).
  • Программное обеспечение, которое использует/private/tmp неправильнотакже, вероятно, просто не удастся, если изменение ваших прав доступа не разрешает к нему доступ (опять же, может быть, безопасным способом, а может и нет — зависит от деталей).

Так что, насколько я понимаю, блокировка, /private/tmpскорее всего, просто сломает часть программного обеспечения и, скорее всего, создаст больше проблем, чем решит.

Связанный контент