/etc 内の宛先に rsync できません

/etc 内の宛先に rsync できません

Debian 10 から 11 にアップグレードした後、/etc 内の一部の宛先を持つ rsync ジョブが機能しなくなりました。

サーバー (宛先) 側には次のものがあります:

uid = root
gid = root

hosts allow = mysender

[mymodule]
  # NOGO
  path = /etc/tmp

  # GO
  # path = /root/tmp

  comment = Just for testing
  read only = false

クライアント側 (ソース) で次のコマンドを入力します。

rsync -a /etc/temp/test myserver::mymodule

これにより、rsync は次のメッセージで失敗します:

rsync: [generator] recv_generator: mkdir "/test" (in mymodule) failed: Read-only file system (30)
*** Skipping any contents from this failed directory ***
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1333) [sender=3.2.3]

/etc の外部のパス (たとえば /root/tmp) を使用するようにサーバーを構成すると、期待どおりに動作します。

ルートファイルシステム(/etcディレクトリも含む)はないもちろん読み取り専用でマウントされており、クリーンです。では、なぜ rsyncd は /etc を読み取り専用ファイルシステムの一部と見なすのでしょうか?

答え1

rsyncバージョン3.2.0-1では、「ProtectSystem」と呼ばれる拡張機能が導入され、特に書き込みアクセスを防止します/etc(参照:https://download.samba.org/pub/rsync/ニュース/etc/systemd/system/rsync.service.d/override.conf)。次の内容のファイルを作成することでこれを上書きできます。

[Service]
ProtectSystem=off

最初の投稿から長い時間が経った後でも、それが役に立つことを願っています。

関連情報