Читая справочные страницы для fchown
, я нахожу это утверждение:
Системный вызов fchown () особенно полезен, когда используется вместе с примитивами блокировки файлов (см. Flock). (2)).
Вот загадка: в справочной странице для flock(2)
не упоминается fchown
или даже как владение влияет на нее в целом.
Так может кто-нибудь объяснить, что происходит, когда fchown
и flock
используются вместе и почему это так "полезно?"
Я занимаюсь разработкой для macOS (Дарвин), но я нахожу то же утверждение (и отсутствие объяснения) в Linux, BSD, POSIX и практически во всех других справочных страницах * NIX, которые я искал.
Backstory (потому что каждый великий злодей имеет предысторию):
У меня есть вспомогательный процесс set-UID, который выполняется как root, но большую часть своего времени работает как пользователь . Пока он работает как пользователь , создаваемые файлы принадлежат пользователь . Пока все хорошо.
Тем не менее, иногда ему нужно создавать файлы, работая как root. Когда это происходит, файлы принадлежат root, и я хочу, чтобы они принадлежали user . Поэтому я планировал создать + открыть файл, а затем позвонить fchown()
, чтобы изменить владельца обратно на user .
Но некоторые из этих файлов являются общими, и я использую flock()
чтобы заблокировать одновременный доступ к файлу, и теперь мне интересно, что будет с моей паствой.