直接从 SSHFS 复制到 SD 时权限被拒绝

直接从 SSHFS 复制到 SD 时权限被拒绝

我在本地挂载点上安装了使用 sshfs 挂载的远程硬盘。此外,我还在同一台计算机上安装了 SD 卡。当我尝试从远程磁盘复制到 SD 卡时,即使具有 sudo 权限,权限也会被拒绝。但是,如果我将远程文件内容复制到 ~,然后将其复制到 SD,则没有任何问题。有人能解释一下可能出了什么问题吗?

命令如下:

sshfs remote:path local/mount/point
sudo mount /dev/mmcblk0p2 /other/local/mount/point
sudo cp local/mount/point/file /other/local/mount/point/directory/

答案1

SSHFS 是保险丝。如果没有allow_other文件系统,则以运行它的用户的权限运行,并且只有该用户可以访问文件系统。在您的情况下,即使是 root 也无法访问文件系统。

使用allow_other不建议。还有allow_root,查看man 8 fuse并不要错过其中提到的user_allow_other配置选项。

另一方面,/dev/mmcblk0p2它由 root 挂载。不清楚文件系统是什么。可能性:

  1. 如果内核支持该文件系统类型,并且该文件系统支持 UNIX 权限和所有权,则适用这些。

  2. 如果文件系统类型受内核支持,但不支持 UNIX 权限/所有权,则它们很可能在挂载时为整个挂载而固定。在这种情况下,也许您可​​以提供一个选项来指定挂载应属于哪个用户。你没有。它很可能属于 root,其他用户都无法写入它。

  3. 如果文件系统类型不受内核支持,但用户空间程序支持,则它会被挂载到用户空间(再次是 FUSE)。挂载用户是 root allow_other,所以只有 root 可以访问它。

无论如何,只有您的用户可以访问 SSHFS,但您的用户显然无法写入另一个挂载。cp您的用户或 root 的单次运行将命中permission denied一端或另一端。可能的解决方案:

  • 安装 FUSE allow_other(不推荐)。
  • 为您的用户安装 SD 卡(情况 2 或 3)。
  • 改变所有权/权限(在情况 1 中)。
  • 通过中间位置复制,以便您的用户和根用户都可以访问它(您已经尝试过并且有效)。
  • 使用两个进程:一个用于您的用户,一个用于root:

    cat local/mount/point/file | sudo tee /other/local/mount/point/directory/file >/dev/null
    

    此命令可以复制多个文件(我的意思是目录):

    tar -c -C local/mount/point file1 file2 directoryA … \
    | sudo tar -x --no-same-owner -C /other/local/mount/point/directory
    

相关内容