書き込み中に sshfs 操作が許可されない

書き込み中に sshfs 操作が許可されない

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はまったくありません。

ターゲット/mnt/test.imgを使用して入力するとsudo image-backup同じエラーが発生します。

カスタムプログラムは問題を解決して見つけるのが難しいことを知っていますが、エラーを再現したり範囲を狭めるためにどのrsyncコマンドをテストできますか?ありがとうございます。

答え1

質問からsudo echo部分を削除しました。何らかの理由で今は動作します。

@waltinatorはすでに彼のコメントでこれについて説明しています。ここに長いバージョンがあります。

シェルはいくつかの手順でコマンドラインを解釈します。ステップの1つ(かなり初期ステップ)は、リダイレクトを処理することです。そのため、次のコマンドが使用されます。

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

はいいいえ「と解釈されます。/some/command > /some/whereパスsudo -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

関連情報