sshfs 写入时不允许操作

sshfs 写入时不允许操作

我使用 image-backup 来备份我的 Rpi。我直接在 FTP 服务器上进行备份,并通过 sshfs 进行备份。

这就是我在 /etc/fstab 中连接的方式:

MYUSERNAME@MYSERVER:/home/myuser/rpi_backup /mnt/MYSERVER fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/pi/.ssh/id_rsa,allow_other,default_permissions 0 0

这是我的/etc/fuse.conf

user_allow_other

我收到错误消息,提示我没有权限:

rsync: [generator] symlink "/tmp/img-backup-mnt/boot/cmdline.txt" -> "firmware/cmdline.txt" failed: Operation not permitted (1)

我也尝试过以下命令,但这并没有解决它:

sudo groupadd fuse
sudo usermod -a -G fuse pi

有人知道我还能尝试什么来解决这个问题吗?

非常感谢!

编辑:

所以最终它根本就不是 SSHFS。

当使用sudo image-backup然后输入目的地 /mnt/test.img 时,我得到同样的错误。

我知道自定义程序很难排除故障并查找问题所在,但是我可以测试哪些 rsync 命令来重现或缩小错误范围?谢谢。

答案1

我在问题中删除了 sudo echo 的部分。由于某种原因,现在这可以工作。

@waltinator 已经在他的评论中解释了这一点,这是长版本:

shell 通过几个不同的步骤来解释命令行。其中一个步骤(相当早的步骤)是处理重定向。这就是为什么像这样的命令:

sudo -s /some/command > /some/where

不是解释为“传递/some/command > /some/wheresudo -s” 但首先会处理重定向,并将 的输出sudo -s /some/command重定向到/some/where。然后才sudo调用并传递选项-s和命令行参数/some/command

这意味着,一个进程运行在你的用户 ID 和你的权限写入重定向目标,并且您的权限可能不包括在那里写入。

解决方案是创建一个确实能够在那里写入的进程:

sudo -s /some/command | sudo -s tee [-a] /some/where > /dev/null

您会看到,“/some/command”和“tee”都以提升的权限运行写入操作。

请注意,如果您想要附加文件,则需要使用“-a”标志,否则将覆盖文件。还请注意,如果您不想让写入文件的内容弄乱您的屏幕,则需要将输出重定向tee到。/dev/null

相关内容