ファイルシステムをマウントせずにランダムアクセスに Samba を使用しますか?

StackOverflow https://stackoverflow.com/questions/264950

  •  06-07-2019
  •  | 
  •  

質問

root アクセス権を持たないマシンを使用しており、ランダム アクセス モードで Samba サーバー上のファイルにアクセスしたいと考えています。smbclient を使用してファイル全体を転送できることはわかっていますが、ファイルが非常に大きい (>1 GB) ため、ランダム アクセスが可能なリモート ファイルとして扱いたいと考えています。

前述した問題は、このマシン (Linux ボックス) への root アクセス権がないため、リモート Samba ファイル システムをマウントできないことです。

Samba サーバー上のファイルの内容にランダムにアクセスできるユーザーレベルのソリューションはありますか?カーネルファイルシステムクライアントが実行していることはすべて、ユーザーレベルのアプリケーションから実行できるはずです。

ところで、必要なのは読み取り専用アクセスのみであり、リモートファイルは変更されないことが保証されています。

役に立ちましたか?

解決

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 を使用してみてください:

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

編集: mount ではなく smbmount を使用するように更新されました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top