передать файл блокировки другому пользователю Unix - PullRequest
0 голосов
/ 03 января 2012

Если процесс, работающий от имени пользователя (не root), создал файл блокировки на диске для резервирования общего ресурса, то это хороший способ беспрепятственно «передать» эту блокировку другому процессу, работающему как пользователь B, который продолжаетиспользовать общий ресурс и, наконец, удалить файл блокировки, когда закончите?

В идеальном решении (требования в порядке приоритета):

  1. Никто, кроме пользователей A и B, не может изменятьФайл блокировки.
  2. Только пользователь А может создать файл блокировки.
  3. Пользователь А может по желанию удалить файл блокировки после его создания, но перед передачей.
  4. Пользователь А также можетпо-прежнему, возможно, удалите файл блокировки после передачи.

Два варианта, о которых я до сих пор думал, это:

  • Файл блокировки находится в каталоге, доступном для записи пользователемгруппа, содержащая пользователей A и B. Это в основном работает, но не удовлетворяет требованию 2 и становится менее удовлетворительным, если я добавлю пользователя C в роли, аналогичной роли «потребителя блокировки», как пользователь B.
  • Файл блокировки находится вдиректори с установленным липким битом, и пользователь A создает его, делая его жесткой ссылкой на существующий ранее файл, принадлежащий пользователю B. Таким образом, файл блокировки всегда принадлежит пользователю B. Мне нравится, что для этого не требуется выделенная группа пользователей,но я бы предпочел, чтобы выполнялись требования 2-4.
...