4

たとえば、10.20.30.11 に Isilon NAS があり、次のようにマウントしました。

mount 10.20.30.11:/folder /content

コマンドを使用lsして、フォルダーまたは/content. modは777です。

bash-3.00# ls -l /content/a/b/1.txt

total 344131

rwxrwxrwx   1 1005     65533    140750 Feb 28 00:58 1.txt

しかし、 access() 関数でアクセスできません。

#include <iostream>
#include <string>
#include <unistd.h>
#include <cerrno>

using namespace std;

#include <stdio.h>
int main( int argc, const char* argv[] )
{
    int returnVal = 0;
    returnVal = access(argv[1], R_OK);
    cout << returnVal << endl;
    cout << errno << endl;
    return 0;
}

結果として -1 と 2 が返されます。これは、「そのようなファイルまたはディレクトリはありません」を意味します。

./a.out /content/a/b/1.txt

-1 

2

#define ENOENT   2 /* No such file or directory */

modは777で、結果は「そのようなファイルまたはディレクトリはありません」であるため、パーミッションの問題ではないと思います。

4

2 に答える 2

2

Linux のマニュアル ページから。

access() は、UID マッピングが有効になっている NFS ファイル システムでは正しく動作しない可能性があります。これは、UID マッピングがサーバー上で行われ、クライアントからは隠され、アクセス許可をチェックするためです。

于 2011-03-03T03:14:11.383 に答える
1

最後に、次のコマンドを使用して Isilon ストレージをマウントする必要があることがわかりました。

mount -o vers=2,proto=tcp 1.2.3.4:/remote /mnt

バージョンとプロトコルを指定する必要があります。

ありがとう!

于 2011-03-10T02:58:15.953 に答える