如果以(非 root)用户 A 身份运行的进程在磁盘上创建了一个锁定文件以保留共享资源,那么有什么好方法可以将该锁定无缝“移交”给以用户 B 身份运行的另一个进程,该进程继续使用共享资源,最后完成后删除锁定文件?
在理想的解决方案中(要求按优先级排序):
- 除了用户 A 和 B 之外,没有人可以修改锁定文件。
- 只有用户 A 可以创建锁定文件。
- 用户 A 可以选择在创建锁定文件之后但在移交之前删除它。
- 用户 A 还可以选择在切换后删除锁定文件。
到目前为止我想到的两个选项是
- 锁定文件位于包含用户 A 和 B 的用户组可写的目录中。这通常有效,但不满足要求 2,并且如果我将用户 C 添加为与用户 B 类似的“锁定使用者”角色,则变得不太令人满意。
- 锁定文件位于设置了粘性位的目录中,用户 A 通过使其成为用户 B 拥有的预先存在文件的硬链接来创建它。因此,锁定文件始终由用户 B 拥有。我喜欢这不需要一个专门的用户组,但我希望满足 2-4 的要求。