例如,我在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,结果是'没有这样的文件或目录'。
答案 0 :(得分:2)
来自Linux手册页。
access()可能无法在NFS上正常运行 启用了UID映射的文件系统, 因为UID映射是在 服务器和隐藏的客户端, 检查权限。
答案 1 :(得分:1)
最后,发现它需要使用以下命令来安装Isilon存储。
mount -o vers = 2,proto = tcp 1.2.3.4:/remote / mnt
需要指定版本和协议。
谢谢!