【发布时间】:2015-09-25 03:29:21
【问题描述】:
我有一个 REST 服务器,其目的是组织各种用户生成的文件。为简单起见,服务器和用户都可以访问共享的网络文件系统。
工作流程如下:用户在临时文件夹中生成文件。然后他通知服务器,然后服务器将文件放在自己的位置,并将一些元数据存储在数据库中。然后服务器应该拥有这些文件并根据需要处理它们的删除。
我的问题如下:由于文件可能很大,我想避免昂贵的复制,而是简单地将文件从临时文件夹移动到最终目的地。但是,移动文件会阻止服务器更改其所有权 (see here for example)。
有没有办法解决这个问题,而不需要 1)复制文件,以及 2)以 root 身份运行服务器?
编辑:几个精度:
- 要移动的文件可以是具有文件层次结构的目录
- 最好让服务器拥有最终位置的文件以限制其他用户的访问。
【问题讨论】:
-
用户和服务器是否可以在同一个组中,这样您就可以通过这种方式处理权限而无需 chown 文件?
-
@EricRenouf :如果服务器不拥有该文件,它不能限制其他用户的权限。基本上我希望用户将所有权授予服务器并放弃他们的权限,以便稍后他们将通过服务器独占访问文件。
-
对于像 ZFS 和 btrfs 这样的文件系统,复制文件应该很便宜。我不确定(这里不适合测试),但我想那些将文件识别为重复文件并且实际上没有存储两次的文件系统很可能在文件具有不同所有者时仍然有效。
标签: linux security unix permissions