我正在使用一台我没有root访问权限的计算机,并希望以随机访问模式访问Samba服务器上的文件。我知道我可以使用smbclient完整地传输文件,但文件非常大(> 1GB),我宁愿把它们视为远程文件,我可以随机访问。

注意到的问题是我没有root权限访问此计算机(Linux机器),因此我无法挂载远程Samba文件系统。

是否有一个用户级解决方案可以让我随机访问Samba服务器上的文件内容?似乎应该可以通过用户级应用程序完成内核文件系统客户端正在执行的所有操作。

我只需要只读访问btw,保证远程文件不会改变。

有帮助吗?

解决方案

在浏览Samba源代码后回答我自己的问题:有一个客户端库libsmbclient,其中包含所有常用的文件处理内容:smbc_open,smbc_fstat,smbc_lseek,smbc_read等。例如,这里是我刚才写的一个片段它向后读取一个文件(只是为了检查它是否正在进行真正的搜索):

fd = smbc_open(path, O_RDONLY, 0);
smbc_fstat(fd, &st);

for (offset = st.st_size - BUFLEN; offset > 0; offset -= BUFLEN) {
    smbc_lseek(fd, offset, SEEK_SET);
    smbc_read(fd, buffer, BUFLEN);
}

(为清楚起见,删除了错误检查)

其他提示

尝试使用 smbmount 挂载没有root权限的文件系统:

mkdir ~/temp
smbmount //{server}/{share} ~/temp -o username=username={username},password={password}

编辑:更新为使用 smbmount 而不是 mount

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top