linux下如何允许用户向其他用户传输文件

Jon*_*rst 11 linux filesystems hpc

我们有一个数千名用户在大约 40 个集群上运行应用程序的环境,集群的大小从 20 个计算节点到 98,000 个计算节点不等。这些系统上的用户生成由传统 unix 权限控制的大量文件(有时> 1PB)(由于文件系统的特殊性质,ACL 通常不可用或不实用)。

我们目前有一个名为“give”的程序,它是一个 suid-root 程序,允许用户在组权限不足时将文件“给”给另一个用户。因此,用户会键入以下内容以将文件提供给另一个用户:

> give username-to-give-to filename-to-give ...
Run Code Online (Sandbox Code Playgroud)

然后,接收用户可以使用名为“take”的命令(give 程序的一部分)来接收文件:

> take filename-to-receive
Run Code Online (Sandbox Code Playgroud)

然后文件的权限被有效地转移到接收用户。

这个程序已经存在多年了,我们想从安全和功能的角度重新审视这些事情。

我们当前的行动计划是在我们将其重新部署到生产中之前,消除我们当前“give”实现中的位腐烂并将其打包为开源应用程序。

当只有传统的 unix 权限可用时,有没有人使用另一种方法在用户之间传输超大文件?

小智 0

您可以使用具有共享目录的系统(可能没有执行权限),其中给定用户的内容使用特定的文件名结构(to-$username_from-$username.tar例如 )进行存档。Give 制作文件并将chowns其提供给目标用户;take 提取文件并将其删除。

如果您想将其作为实际移动(IE,更改文件位置和权限;由于文件大小巨大而无需复制),您可能可以使用 -x perms 移动到共享目录(因此没有人可以列出那里的文件),以及相同的chown方法。 mv, chown/ mv.