FUSE 错误: 传输端点未连接

我正在尝试实现 FUSE 文件系统,我收到了这个错误:

无法访问 MountDir: 传输端点未连接

这是程序的相关部分。有两个目录,MirrorDirMountDir,与所有代码在同一目录中。我这样称呼这个节目:

./myFS -o nonempty -o allow_other MirrorDir MountDir

有人知道我哪里做错了吗?

static struct fuse_operations xmp_oper = {
.getattr    = xmp_getattr,
.readdir    = xmp_readdir,
.open       = xmp_open,
.read       = xmp_read,
};


int main(int argc, char *argv[]) {
int fuse_stat;
char* mirrorDir;


mirrorDir = malloc(sizeof(strlen(argv[argc-2]+1)));
if (mirrorDir == NULL) {
perror("main calloc");
abort();
}


// Pull the rootdir out of the argument list and save it in my internal data
mirrorDir = realpath(argv[argc-2], NULL);


argv[argc-2] = argv[argc-1];
argv[argc-1] = NULL;
argc--;


// turn over control to fuse
fprintf(stderr, "about to call fuse_main\n");
fuse_stat = fuse_main(argc, argv, &xmp_oper, mirrorDir);
fprintf(stderr, "fuse_main returned %d\n", fuse_stat);
return fuse_stat;
}
117583 次浏览

这通常是由于文件系统崩溃导致挂载的挂载目录造成的。转到挂载点的父目录并输入 fusermount -u YOUR_MNT_DIR

如果这招不管用,那就用 sudo umount -l YOUR_MNT_DIR

我安装了一个 ssh 文件系统(sshfs 命令行)并将其挂载,我遇到了同样的问题,fusermount -u YOUR_MNT_DIR解决了我的问题。谢谢

在 Azure 中,我尝试使用用户管理的标识挂载容器。我一直获得 Transport endpoint is not connected,直到向托管标识添加了 Storage Blob Data Contributor权限。

当我使用 rclone将 Microsoft OneDrive 挂载到 Ubuntu 系统时,我遇到了“传输端点未连接”或“权限拒绝”这样的问题。我是系统的普通用户,因此默认情况下,我的主目录只对我可访问。当我创建挂载点目录时,它也只有我可以访问。论坛主持人误导了我,最后粗鲁地关闭了我的问题,因为他意识到他无法回答,所以我只能自己解决问题。经过几天的调查,我终于发现这些错误消息与文件访问权限模式有关。由于我是一个普通用户,但是 fusermount以 root 用户身份运行,所以它在挂载时不能访问挂载点目录,在卸载时也不能访问我的 home 目录,所以它会抱怨。解决方案非常简单: 将挂载点目录和主目录的模式位设置为777,从而向所有人开放文件访问权限。