如何解决samba(v 4.10.16) win10无法打开centos7中通过setxattr()设置扩展属性的文件如.xlsx .pptx
请原谅我蹩脚的英文
我尝试使用 setxattr()
为某个文件设置扩展属性的值,代码如下:
int set_scl(string file_name,char scl)
{
char scl_data[16];
scl_data[0] = scl;
ssize_t size = 1;
size = setxattr(file_name.c_str(),"user.Dosstream.easescl",scl_data,size,0);
if (size == -1)
{
perror("set scl:");
return -1;
}
return 0;
}
但是一旦我对文件(例如 1234.xlsx
)执行此操作,然后我无法打开它,但是我仍然可以看到它。 Excel 的错误信息是:
找不到 \\192.168.2.163\wy\1234.xlsx。
顺便说一下,在 smb.cnf
中我已经将 vfs objects = acl_xattr streams_xattr
设置为 https://www.samba.org/samba/docs/current/man-html/vfs_streams_xattr.8.html
当我使用Process Monitor来跟踪它时,我发现一个事件的路径是\\192.168.2.163\wy\1234.xlsx:easescl,操作是'CreateFile',结果是'NAME NOT FOUND'
我该怎么做才能解决这个问题?
解决方法
目前我找到了两种方法,
1)在smb.conf中添加“streams_xattr:store_stream_type = no”
2)像这样在我的代码中添加“:$DATA”
size = setxattr(file_name.c_str(),"user.DosStream.easescl:$DATA",scl_data,size,0);
他们都工作了,现在我可以打开文件
然而,我之前设置的xattr的值会在我修改文件并保存后发生变化,我找不到解决方法.....
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。