我有一个 Samba 服务器以及 Mac 和 Windows 客户端。在这些客户端上,我有一个应用程序需要知道 Samba 服务器上文件的完整路径。对于 Samba 服务器,我们使用可以处理扩展属性的 vfs_fruit 和 vfs_streams_xattr。
我想知道是否可以以某种方式将文件的真实路径放在 samba 服务器上作为扩展属性,并让客户端读取该扩展属性。
我尝试通过更改 samba 源代码来实现这一点,但无济于事。如能得到帮助,我将不胜感激。
答案1
不确定您为什么要这样做,但您可以将文件的服务器完整路径存储在“NTFS 备用数据流”中,然后 Samba 客户端就可以读取它。Samba 通过将 NTFS 备用数据流存储为扩展属性来“伪造”它们。
您的数据只是路径,所以streams_xattr
没问题。需要调用扩展属性,user.DosStream."ADS-NAME"
如下所示https://www.samba.org/samba/docs/man/manpages/vfs_streams_xattr.8.html
编写脚本来定期将属性添加到现有文件相当setfattr
容易。
要“实时”创建它会更复杂,但不需要修改 Samba 的源代码,您只需要在创建/移动文件时运行脚本来创建/修改扩展属性。请查看incron
,这里有一个例子https://stackoverflow.com/questions/14692353/executing-a-bash-script-upon-file-creation