2

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

如上所述的问题是我没有对这台机器(Linux 机器)的 root 访问权限,所以我无法挂载远程 Samba 文件系统。

是否有用户级解决方案可以让我随机访问 Samba 服务器上的文件内容?似乎应该可以做内核文件系统客户端正在做的所有事情,但来自用户级应用程序。

顺便说一句,我只需要只读访问权限,并且保证远程文件不会更改。

4

2 回答 2

2

在深入研究 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);
}

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

于 2008-11-06T12:21:25.343 回答
0

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

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

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

于 2008-11-05T12:13:19.603 回答