rsync_xal_set: lremovexattr("/my/path/file.zPXUj1", "security.selinux") 失敗: 権限が拒否されました (13)

rsync_xal_set: lremovexattr(

現在、Ubuntu 20.04からFedora 34に移行しています。次のバックアップスクリプトはこれまでうまく機能します。

rsync                        \
  -avixXEH                   \
  --stats                    \
  --delete                   \
  --numeric-ids              \
  --log-file="$LOG_FILE"     \
  --link-dest "$LATEST"      \
  --exclude '/some/exclude'  \
  admin@nas:/{a,b,c}         \ # source is remote nas (via ssh)
  "$TARGET"                  \ # $TARGET is ext. USB disk on fedora OS desktop

残念ながら、Fedoraではコピーされたすべてのパスで警告が発生し、ログが汚染されます。

rsync_xal_set: lremovexattr("/my/path/file.zPXUj1", "security.selinux") 失敗: 権限が拒否されました (13)

研究

-Xこれは、拡張属性()とSELinuxを維持/削除しようとしているrsyncの問題のようです。

最近の引用Red HatのMichal Ruprich:

この問題は、実行中のシステムを中断しないようにエラーメッセージを抑制することによってRHEL5で「修正」されました。 [...]

rsync-2.6は、ソースファイルの拡張属性が削除された場合、ターゲットファイルの拡張属性を削除しません。これをバグと呼ぶことができます。

rsync-3.0 は、消去された拡張属性を削除しようと正しく試みます。

selinuxがターゲットシステムにある場合、rsyncはファイルのセキュリティコンテキストを削除できず、上記のエラーを出力します。したがって、情報エラーメッセージを除いて、2.6と3.0の動作は同じです。 」

rsync 3.2.3SELinux以外のソースを使用すると、私の解釈は次のようになります。それ以外の場合は修正してください。

このセキュリティ機能を使用してSELinuxなしでソースからターゲットにファイルをコピーすることは、拡張"security.selinux"ファイル属性を削除すると解釈されます。rsyncターゲットのSELinuxセキュリティ制限のため、削除できません。

これは次の質問につながります。

これらの警告を表示したくない場合はどうすればよいですか?

-Xそれでもおよびを使用して拡張属性をコピーしたいと思います。いいえ一時的にSELinux全体を無効にします。ここで提案されているように。返品、ねじるもう一つの提案setsebool -P rsync_full_access 1- 正確に何をするかはよくわかりません。

この特別な場合にのみ問題の根本原因を解決することは本当に良いでしょう。 USBディスクマウントポイントが与えられたら、/run/media/user/<SOME-UID>このパスまたは同様のパスに対してのみSELinuxで必要な権限を付与する方法はありますか?

事前にありがとう

ベストアンサー1

より多くの研究と発見を経てこの古い回答、このオプションを使用すると問題が解決するようです。

--filter='-x security.selinux'

その男によると:

       --xattrs, -X

              [...]

              The above name filtering can be overridden by using one or
              more filter options with the x modifier.  When you specify
              an xattr-affecting filter rule, rsync requires that you do
              your own system/user filtering, as well as any additional
              filtering for what xattr names are copied and what names
              are allowed to be deleted.  For example, to skip the
              system namespace, you could specify:

                  --filter='-x system.*'

例:

    rsync -aHAXX \
      --filter='-x security.selinux' \
      --numeric-ids \
      --no-inc-recursive \
      --delete \
      --exclude={"/lost+found"} \
      --info=progress2 \
      source \
      target

おすすめ記事