rsyncd.conf

Section: ユーザコマンド (5)
Updated: 2026年 9月 21日
Index JM Home Page roff page

 

名前

rsyncd.conf - デーモンモードにおける rsync の設定ファイル

 

書式

rsyncd.conf

このマニュアルページのオンラインバージョン (トピックの相互リンクを含む) は、次の URL で入手できます https://download.samba.org/pub/rsync/rsyncd.conf.5 。

 

説明

rsyncd.conf ファイルは、rsync デーモンとして実行される時の rsync のためのランタイム設定ファイルです。

rsyncd.conf ファイルは、認証、アクセス、ロギング、および使用可能なモジュールを制御します。

 

ファイル形式

ファイルは、モジュールとパラメータで構成されます。モジュールは、角括弧で囲まれたモジュール名で始まり、次のモジュールが始まるまで続きます。モジュールには、name = value 形式のパラメータが含まれます。

このファイルは行単位です -- つまり、改行で終わる各行は、コメント、モジュール名、パラメータのいずれかを表します。

パラメータ内の最初の等号のみが重要です。最初の等号の前後の空白は無視されます。モジュール名およびパラメータ名の先頭、末尾、および内部の空白は関係ありません。パラメータ値の前後の空白は無視されます。パラメータ値内の内部空白はそのまま保持されます。

行頭にハッシュ(#)があるすべての行は、空白のみを含む行と同様に無視されます。(先頭の空白文字以外の文字の後にハッシュが現れた場合、その行の内容の一部とみなされます。

\ で終わる行は、UNIX の慣習に従って次の行に "継続" されます。

パラメータ内の等号に続く値は、すべて文字列 (引用符は不要)または真偽値で、yes/no、0/1、true/false のいずれかで表されます。真偽値では大文字と小文字は区別されませんが、文字列値では区別されます。

 

RSYNC デーモンの起動

rsync デーモンを起動するには、rsync に --daemon オプションを指定します。

chroot を使用したり、1024 より小さい番号のポート (既定値 873 など) にバインドしたり、ファイルの所有者を設定したりする場合は、デーモンを root 権限で実行する必要があります。それ以外の場合は、適切なデータ、ログ、およびロックファイルの読み取りと書き込みの権限を持っている必要があります。

スタンドアロンデーモンとして inetd 経由で起動するか、リモートシェル経由で rsync クライアントから起動できます。スタンドアローンデーモンとして実行する場合は、適切な起動スクリプトからコマンド "rsync --daemon" を実行します。

systemd を使用するシステムでは、ソース・ツリーの packaging/systemd ディレクトリにあるサンプルの unit ファイルを使用することができます。rsync.service ファイルは、rsync --daemon --no-detach を使用してスタンドアロン・デーモンを実行します。一方、rsync.socket および rsync@.service は、着信接続用のソケットアクティブ化セットアップを示しています。これらのファイルは、インストールされている rsync のパス、パッケージのレイアウト、およびモジュールのポリシーに合わせて、ローカルで調整する必要がある場合があります。

inetd 経由で実行する場合は、次のような行を /etc/services に追加する必要があります:

rsync           873/tcp

そして次のような1行を /etc/inetd.conf に追加します:

rsync   stream  tcp     nowait  root   /usr/bin/rsync rsyncd --daemon


 "/usr/bin/rsync" を、システム上で rsync をインストールした場所へのパスに置き換えます。それから inetd に HUP シグナルを送って、設定ファイルを再読み込みするように指示する必要があります。

注意して欲しいのは、notrsync デーモンに HUP シグナルを送って、強制的に rsyncd.conf ファイルを再読み込みさせてはいけないことです。このファイルは、クライアント接続のたびに再読み込みされます。

 

グローバルパラメータ

ファイルの最初のパラメータ ([module] ヘッダーの前) は、グローバルパラメータです。

motd file
このパラメータを使用すると、接続ごとにクライアントに表示する "今日のお知らせ" (MOTD) を指定できます。これには通常、サイト情報と法的通知が含まれます。既定値は MOTD ファイルは使用しません。これは、デーモンの起動時に --dparam=motdfile=FILE コマンドラインオプションによって上書きできます。
pid file
このパラメータは、rsync デーモンに対して、プロセス ID をそのファイルに書き込むように指示します。rsync はファイルをロックしたままにするため、既存のファイルを上書きしても安全なタイミングを知ることができます。
ファイル名は、デーモンの起動時に --dparam=pidfile=FILE コマンドラインオプションによって上書きできます。
port
この値を指定する(既定値は 873 ) ことで、デーモンが待機する既定値のポートを上書きできます。このデーモンが inetd によって実行されている場合、これは無視され、--port コマンドラインオプションによって置き換えられます。
address
この値を指定すると、デーモンが待機する既定値の IP アドレスを上書きできます。このデーモンが inetd によって実行されている場合、これは無視され、--address コマンドラインオプションによって置き換えられます。
socket options
このパラメータは、システムを最大限に調整したい人に無限の楽しみを提供します。あらゆる種類のソケットオプションを設定できますが、転送が速くなる (または遅くなる!) 可能性があります。設定できるオプションの詳細については、setsockopt() システムコールのマンページを参照してください。既定では特殊なソケットオプションは設定されていません。これらの設定は、--sockopts コマンドラインオプションを使用して指定することもできます。
listen backlog
デーモンが接続を待機するときのバックログ既定値を上書きできます。既定値 は 5 です。

また、設定ファイルのグローバル部分に MODULE PARAMETERS を含めることもできます。この場合、指定した値がそのパラメータの既定値よりも優先されます。

パラメータの値には、環境変数への参照を使用できます。文字列パラメータは、できるだけ後 (文字列がプログラムで最初に使われたとき) に展開される %VAR% 参照が使え、rsync が接続時に設定する RSYNC_USER_NAME などの変数の使用を許可します。文字列以外のパラメータ (true/false 設定など) は、設定ファイルから読み込まれるときに展開されます。変数が環境内に存在しない場合、または文字シーケンスが有効な参照ではない場合 (ペアになっていないパーセント記号など) 、未処理の文字はそのまま渡されます。これは、下位互換性と安全性に役立ちます (たとえば、存在しない %VAR% をパス内の空の文字列に展開すると、非常に安全でないパスになる可能性があります)。リテラル % を値に挿入する最も安全な方法は、%% を使用することです。

 

モジュールパラメータ

グローバルパラメータの後に、多数のモジュールを定義する必要があります。各モジュールは、ディレクトリツリーをシンボリック名としてエクスポートします。モジュールをエクスポートするには、大括弧で囲んだモジュール名 [module] の後に、そのモジュールのパラメータを指定します。モジュール名にスラッシュ (/) または大括弧を含めることはできません。名前に空白が含まれている場合、内部の空白の各シーケンスは単一のスペースに変更され、先頭または末尾の空白は破棄されます。

"[global]" という名前の特殊なモジュールもありますが、これはモジュールを定義するのではなく、既定値パラメータを指定できるグローバル設定コンテキストに戻るものです。定義された各モジュールは、設定ファイル内のその位置に設定された既定値値と独自のパラメータリストの組み合わせとして、パラメータの完全なセットを取得するため、 "[global]" セクションを使用すると、複数のモジュールで共有される設定値を維持するのに役立ちます。

グローバルパラメータと同様に、パラメータの値には環境変数への参照を使用できます。詳細については、そのセクションを参照してください。

comment
このパラメーターは、クライアントが利用可能なモジュールの一覧を取得するときに、モジュール名の横に表示される説明文字列を指定します。既定値はコメントなしです。
path
このパラメータは、デーモンのファイルシステム内のディレクトリを指定して、このモジュールで使用できるようにします。rsyncd.conf の各モジュールに対して、このパラメータを指定する必要があります。
値に "/./" 要素が含まれている場合、パスはその時点で chroot ディレクトリと内部 chroot サブディレクトリに分割されます。ただし、use chroot が false に設定されている場合は、余分なドットディレクトリがパスから削除されます。このイディオムの例を次に示します:
path = /var/rsync/./module1
これは (chroot の場合) chroot を "/var/rsync" に設定し、内部 chroot のパスを "/module1" に設定します。
環境変数名をパーセント記号で囲むと、環境変数に基づいてパスの値を設定できます。ユーザーが接続したときに rsync によって設定される変数を参照することもできます。たとえば、次のようにパスに承認ユーザの名前を使用します:
path = /home/%RSYNC_USER_NAME%
パスの内部にスペースが含まれていても問題ありません。スペースはそのまま保持されます (つまり、スペースをエスケープしようとしないでください)。最後のディレクトリの末尾にスペースがある場合 (そして、それが何らかの理由で修正したいものではない場合)、末尾の空白が失われないように、パスの末尾にスラッシュを追加します。
use chroot
"use chroot" が true の場合、rsync デーモンはクライアントとのファイル転送を開始する前に、"path" に chroot します。これには、実装のセキュリティホールに対する保護を強化できるという利点がありますが、スーパーユーザ権限が必要である、絶対パスまたは新しいルートパスの外部にあるシンボリックリンクをたどることができない、およびユーザとグループを名前で保存するのが複雑になる (下記を参照) という欠点があります。
use chroot が設定されていない場合、既定値は chroot を有効にしようとしますが、失敗した場合は (警告をログに記録した後) デーモンを続行させます。唯一の例外は、モジュールの path の中に "/./" という chroot ディバイダがある場合です。この場合、設定されていない値がそのモジュールに対して真として扱われます。
rsync 3.2.7 より前では、既定値は "true" でした。新しい "unset" の既定値は、非 root ユーザとして rsync デーモンを設定するか、chroot が失敗したシステム上でデーモンを実行することを容易にします。rsyncd.conf で明示的に値を "true" に設定するには、chroot が成功する必要があります。
モジュールの "パス" にドットdir を指定して、パスの最初の部分に chdir して、パスの最後の部分からファイルを提供するように指示することもできます (サニタイズと既定値のシンボリックリンクの munging を伴います)。これは、chroot 内にいくつかのライブラリディレクトリが必要ですが (通常は uid と gid の検索のため)、lib ディレクトリを提供パスの先頭に置きたくない場合に便利です (exclude ディレクティブで隠すことができますが)。しかし、最近の rsync の設定では、name converter" を使用し、内部の lib ディレクトリを完全に避けることをお勧めします。daemon chroot パラメータも参照してください。このパラメータを指定すると、rsync は、パス関連の chroot を実行する前に、独自の chroot 領域に chroot します。
デーモンが "/" ディレクトリにサービスを提供している場合 (直接、またはモジュールのパスに chroot されているため)、rsync はパスのサニタイズや (既定値の) munging を行いません。
特定のサブディレクトリへのアクセスを制限する必要がある場合 (chroot が無効になっているか、内部 chroot パスが設定されている)、rsync は (既定値によって) シンボリックリンクを削除し、パスをサニタイズします。シンボリックリンクの破棄が嫌いな人は、"munge symlinks" パラメータでシンボリックリンクの破棄を無効にすることができます。その場合、入ってくるシンボリックリンクの値は削除されます (パラメータ参照)。
rsync がパスをサニタイズしている場合、モジュール階層の上で arg を取る "." パス要素を解決します。--backup-dir や --compare-dest など、オペレータが指定するオプションパスの場合、先頭のスラッシュはモジュールのパスにも置き換えられます (したがって、絶対パスはモジュールの "path" ディレクトリをルートとするものと解釈されます)。転送自体のソース引数の場合、先頭のスラッシュは単純に削除されます。
chroot が有効になっている場合 かつ "name converter" パラメータが設定されていない場合、"numeric ids" パラメータは既定値されて有効になります (名前のルックアップは無効になります。つまり、(名前コンバータを使用する代わりに) chroot で名前検索ライブラリを手動で設定する場合は、rsync が名前検索を行うため、明示的に numeric ids = false を設定する必要があります。
ライブラリリソースをモジュールの chroot 領域にコピーする場合は、これらのリソースをオペレーティングシステムの通常のユーザ/グループ設定または ACL 設定によって保護し (rsync モジュールのユーザがこれらのリソースを変更できないようにするため)、 "exclude" を使用してユーザのビューから非表示にする必要があります (このパラメータの説明で方法を参照してください)。ただし、名前コンバータをセットアップする方が簡単で安全です。
daemon chroot
このパラメータは、デーモンがクライアントとの通信を開始する前に chroot するパスを指定します。モジュールパス(および "chrootを使用する" 設定) は、このモジュールパスに関連付けられます。これにより、デーモン全体を chroot するか (この設定を使用)、転送だけを chroot するか ( "use chroot" を使用)、またはその両方を選択できます。 "daemon chroot" 領域では、デーモンが機能できるようにするために、さまざまな OS/lib/etc ファイルをインストールする必要がある場合があることに注意してください。既定値では、このデーモンは chroot せずに動作します。
proxy protocol
このパラメータが有効になっている場合、すべての着信接続は V1 または V2 プロキシプロトコルヘッダーで始まる必要があります。ヘッダーが見つからない場合、接続は閉じられます。
これを true に設定する場合は、プロキシサーバがソース IP 情報を rsync に転送する必要があります。これにより、適切な IP/ホスト情報をログに記録し、クライアント指向の IP 制限を使用できます。既定値の false は、IP 情報がソケットのメタデータから直接取得されることを意味します。rsync がプロキシの背後にない場合は、これを無効にする必要があります。
注意: このオプションを使用すると、rsync ポートに接続できるのがプロキシだけであることを保証しない場合、危険が生じる可能性があります。非プロキシ接続が許可されている場合、クライアントは変更された rsync を使用して、必要なリモート IP アドレスをスプーフィングできます。iptables -uid-owner root (ローカルホストへの厳密なアクセスのための) ルールのようなものや、さまざまなファイアウォールルールを使って、これをロックすることができます。あるいは、ユーザによるスプーフィングが余分なアクセスを許可しないように、パスワード認証を要求することもできます。
この設定はグローバルです。いくつかのモジュールがこれを必要とし、他のものは必要としない場合、異なるポート上で複数の rsync デーモンプロセスを設定する必要があります。
proxy protocol hosts
このグローバルパラメータは、proxy protocol ヘッダーを提供できるソケットピアの IP アドレスを一覧表示します。構文は、hosts allow で使用されるトークン形式と同じです。proxy protocol = true の場合、rsync が転送されたクライアントアドレスを信頼する前に、このリストが直接のピアと一致する必要があります。
name converter
このパラメータを使用すると、名前と ID の間でユーザーとグループの変換を行うために rsync デーモンによって実行されるプログラムを指定できます。このスクリプトは、chroot がセットアップされる前に開始され、デーモンユーザー (転送ユーザーではない) として実行されます。完全修飾パス名、または $PATH にあるプログラム名を指定できます。
このプログラムを使えば、モジュールの chroot エリアに余分なファイルを置かなくても、通常のユーザおよびループ検索を行うことができます。あるいはカスタマイズされた変換を行うことができます。
nameconvert プログラムは、pre-xfer exec のセクションで説明されているすべての環境変数にアクセスできます。これは、モジュールやコピー要求に関する情報を使用して変換をカスタマイズする場合に便利です。
support ディレクトリに "nameconvert" という名前のサンプル Python スクリプトがあります。これは通常のユーザとグループのルックアップを実装しています。自由にカスタマイズすることも、独自のドキュメントを実装するためのドキュメントとして使用することもできます。
numeric ids
このパラメータを有効にすると、現在のデーモンモジュールの名前によるユーザーとグループのマッピングが無効になります。これにより、デーモンがユーザー/グループ関連のファイルまたはライブラリをロードしようとするのを防ぎます。これを有効化すると、クライアントが --numeric-ids コマンド行オプションを渡したかのように転送が行われます。既定では、このパラメータは chroot モジュールでは有効になり、chroot 以外のモジュールでは無効になります。また、uid/gid を保持するには、モジュールが root として実行されているか ("uid"を参照)、"fake super" が設定されている必要があることにも注意してください。

 "名前コンバータ" プログラムを使用している場合、または モジュールが名前を変換するために必要なリソースを持っていること、およびユーザーがそれらのリソースを変更できないことを保証するための措置を講じている場合を除き、chroot 対応モジュールではこのパラメータを false に設定しないでください。
munge symlinks
このパラメータは、(デーモンに影響しない) --munge-links コマンドラインオプションと同じ方法で、すべての入ってくるシンボリックリンクを修正するように rsync に伝えます。これは、文字列 "/rsyncd-munged/" を、それぞれ保存されたシンボリックリンクの値の前に置きます。このディレクトリは通常存在しないため、削除されたシンボリックリンクをたどることはできず、アップロードされたシンボリックリンクを使用してファイルを読み書きすることはできません。戻る途中でプレフィックスは取り除かれるので、クライアントは元のシンボリックリンクの値を見ることができます。このパラメータを有効にすると、 "/rsyncd-munged/" がディレクトリとして、またはディレクトリへのシンボリックリンクとしてすでに存在する場合、 rsync はモジュールの実行を拒否します。既定値は chroot に依存します。既定値されたモジュールでは、 -- "use chroot" on と "path" に "/./" の分割がないので、デーモンはモジュールに直接 chroot し、chroot root として動作します -- chroot 自身が既にシンボリックリンクのエスケープを止めているので、chroot によ るmunging は無効になっています。それ以外の場合はすべて有効になります。つまり、chroot 以外のモジュール、または chroot モジュールの "パス" が "/./" 分割を使用して、chroot ルートの下の内部サブディレクトリとして機能するモジュールです。
アクセスがサブディレクトリに制限されている書き込み可能なモジュールでこのパラメータが無効になっている場合 (つまり、"use chroot" がオフになっているか、内部 chroot パスが "/" ではない場合)、受信したシンボリックリンクはプレフィックスされませんが、保存時にサニタイズされます。先頭のスラッシュは削除され、モジュールの上の値を取る先頭の ".." コンポーネントはすべて削除されるため、保存されたシンボリックリンクの値は、モジュール外のパスを指定することはできません(モジュール内の別の名前を指すことはできます)。
保存されているシンボリックリンクの値のみを変更します。デーモンが転送パスを解決するときに pre-existing モジュール内のシンボリックリンクに従うかどうかは別の問題であり、既定値がオンにしている安全なパスリゾルバによって管理されます。正確なルールとそれをオプトアウトする方法については、 "安全でないリンク" パラメータを参照してください。
内部 chroot パスが "/" の chroot 領域で "munge symlinks" パラメータを使用する場合は、モジュールの exclude 設定に "/rsyncd-munged/" を追加して、ユーザーがモジュールを作成できないようにする必要があります。
"/rsyncd-munged/" プレフィックスを自分でシンボリックリンク (例えばモジュール内でローカルに作成したリンク) に付けたり外したりするには、ソースコードの support ディレクトリに "munge-symlinks" という Python スクリプトがあります。
insecure links
このパラメータ (既定値は "false" ) は、デーモンがシンボリックリンクを持つパスを、通常のシンボリックリンクの競合に対する防御で解決するか、旧来の follow-any-symlink の振る舞いで解決するかを制御します。
false (既定値) の場合、デーモンは作成しなかったシンボリックリンクをたどることを拒否します -- 提供されたモジュールのディレクトリ列挙とファイル内容のオープン、およびオペレータが指定したパス (--backup-dir , --temp-dir , --partial-dir、alt-dest basis dirs など ) はすべて、シンボリックリンクコンポーネントが uid 0 によって所有されている場合、またはモジュールが実行されているときの uid によって所有されている場合にのみ、シンボリックリンクコンポーネントをたどる処理によって解決され、他のユーザーによって埋め込まれたシンボリックリンクは拒否されます。クライアントはこれを緩和することはできません。--insecure-links をデーモンに送信するクライアントは、その要求を拒否されます。
このパラメータを "true" に設定すると、このモジュールのみの事前強化動作が復元されます。デーモンは、これらのパス内の 任意のシンボリックリンクに従います。
警告: "安全でないリンク" を有効にすると、既定値が閉じている(CVE-2026-53797 と CVE-2026-53801を含む) symlink-escape / TOCTOU の脆弱性をふたたび開くことになります: モジュール内にシンボリックリンクを作成できる攻撃者 -- またはホストをサービスツリーと共有する攻撃者 -- は、デーモンの読み取りと書き込みをモジュールの 外側にあるファイルにリダイレクトできます。信頼できないローカルユーザがサーバツリーにシンボリックリンクを張ることができない、シングルテナント、完全に分離されたホスト、またはその他の信頼できるホストでのみ有効にします。これは、クライアントの --insecure-links のデーモン版であり、同じ狭い "隔離された環境でのリスクを受け入れる" 場合に存在します。
charset
ここでは、モジュールのファイル名を保存する文字セットの名前を指定します。クライアントが --iconv オプションを使用する場合、クライアントが実際に渡した文字セットに関係なく、デーモンは "charset" パラメータの値を使用します。これにより、デーモンは、chroot 領域に余分なファイルを置かなくても、chroot モジュールで文字セットの変換をサポートできます。また、名前の変換が一貫した方法で行われるようになります。"charset" パラメータが設定されていない場合、--iconv オプションは拒否されます。これは、"iconv" が "refuse options" によって指定されている場合と同様です。
ユーザが常に --iconv を使用するように強制したい場合、特定のモジュールでは、 "refuse options" パラメータに "no-iconv" を追加します。これにより、モジュールへのアクセスが非常に新しい rsync クライアントに制限されることに注意してください。
max connections
このパラメーターを使用すると、許可する同時接続の最大数を指定できます。最大数に達したときに接続しているクライアントは、後で再試行するように指示するメッセージを受信します。既定値は 0 で、制限なしを意味します。負の値は、モジュールを無効にします。"lock file" パラメータも参照してください。
log file
"log file" パラメータを空でない文字列に設定すると、rsync デーモンは syslog を使用せずに、指定されたファイルにメッセージを記録します。これは、syslog() が chroot されたプログラムでは動作しないシステム (AIXなど) で特に便利です。ファイルは chroot() が呼び出される前に開かれ、転送の外に配置できるようになります。この値がグローバルではなくモジュール単位で設定されている場合でも、グローバルログには許可の失敗または設定ファイルエラーメッセージが記録されます。
デーモンは、指定されたファイルのオープンに失敗すると、syslog の使用に戻り、失敗に関するエラーを出力します。(指定されたログ・ファイルを開けないというエラーは、以前は致命的なエラーでした)。
この設定は、コマンドラインオプション --log-file=FILE または --dparam=logfile=FILE を使用して上書きできます。前者は、デーモンのすべてのログファイルパラメータとすべてのモジュール設定を上書きします。後者は、デーモンのログファイルとすべてのモジュールの既定値を設定します。これにより、モジュールは既定値の設定を上書きできます。
syslog facility
このパラメータを使用すると、rsync デーモンからのメッセージをロギングするときに使用する syslog ファシリティ名を指定できます。システムで定義されている標準の syslog ファシリティ名を使用できます。一般的な名前は、auth、authpriv、cron、daemon、 ftp、kern、lpr、mail、news、security、syslog、user、uucp、 local0、local1、local2、local3、local4、local5、local6、およびlocal7 です。既定値は daemon です。この設定は、 "ログファイル" 設定が空でない文字列(モジュールごとの設定で設定されているか、グローバル設定から継承されている)の場合は効果がありません。
syslog tag
このパラメータを使用すると、rsync デーモンからのメッセージをログに記録するときに使用する syslog タグを指定できます。既定値は "rsyncd" です。この設定は、 "ログファイル" 設定が空でない文字列(モジュールごとの設定で設定されているか、グローバル設定から継承されている)の場合は効果がありません。
たとえば、認証された各ユーザの名前を syslog タグに含める場合は、次のように記述します:
syslog tag = rsyncd.%RSYNC_USER_NAME%
max verbosity
このパラメーターを使用すると、デーモンが生成できる詳細情報の最大量を制御できます(情報はログ・ファイルに書き込まれるため)。既定値は 1 です。この場合、クライアントは 1 レベルの冗長性を要求できます。
これは、より高いレベルの --info および --debug ロギングを要求するユーザーの能力にも影響します。max 値が 2 の場合、-vv によって設定される値よりも高い情報値やデバッグ値は、デーモンによってログに記録されません。特定の info/debug レベルに対してどの程度の冗長レベルを受け入れる必要があるかを調べるには、rsync --info=help および rsync --debug=help を参照してください。たとえば、デバッグ情報 TIME2 および FLIST3 を出力できるようにするには、max-verbosity 4 が必要です。
lock file
"max connections" パラメータをサポートするために使用するファイルを指定します。rsync デーモンは、このファイルにレコードロックを使用して、ロックファイルを共有するモジュールの最大接続制限を超えないようにします。既定値は /var/run/rsyncd.lock です。
read only
このパラメータは、クライアントがファイルをアップロードできるかどうかを決定します。"read only" が true の場合、アップロードは失敗します。"read only" が false の場合、デーモン側のファイルパーミッションで許可されていれば、アップロードが可能になります。既定値では、すべてのモジュールが読み取り専用になります。

 "auth users" は、ユーザごとにこの設定を上書きできることに注意してください。
write only
このパラメータは、クライアントがファイルをダウンロードできるかどうかを決定します。 "write only" が true の場合、ダウンロードは失敗します。"write only" が false の場合、デーモン側のファイルパーミッションで許可されていれば、ダウンロードが可能です。既定値では、このパラメータは無効になっています。
役に立つヒント:書き込み専用のモジュールには、おそらく "refuse options=delete" を指定したいでしょう。
open noatime
このパラメータを True に設定すると、転送中のファイルのアクセス時間が変更されるのを避けるため、(それをサポートするシステム上で) O_NOATIME フラグ付きでファイルを開くように rsync デーモンに指示します。使用している OS が O_NOATIME フラグをサポートしていない場合、rsync は黙ってこのオプションを無視します。また、ファイルシステムの中には、O_NOATIME フラグが設定されていなくても、読み取りアクセス時に atime が更新されないようにマウントされるものがあることにも注意してください。
このパラメータを False に設定すると、サーバ上のファイルを O_NOATIME で開かないようにします。

 "未設定" (既定値)に設定されている場合、ユーザーは --open-noatime を介して設定を制御します。
list
このパラメータは、クライアントが使用可能なモジュールのリストを要求したときに、このモジュールをリストするかどうかを決定します。さらに、これが false の場合、 "hosts allow" または "hosts deny" によって拒否されたクライアントがモジュールにアクセスしようとすると、デーモンはモジュールが存在しないふりをします。 "逆ルックアップ" がグローバルに無効になっていても、モジュールに対しては有効になっている場合、クライアントが制御する可能性のある DNS サーバーへの逆ルックアップの結果、既存のモジュールにヒットしたことがクライアントに明らかになる可能性があることに注意してください。既定値は、モジュールをリスト可能にします。
uid
このパラメーターは、デーモンが root として実行された場合と同様に、そのモジュールとの間のファイル転送が行われるユーザー名またはユーザー ID を指定します。"gid" パラメータと組み合わせて、利用可能なファイルのパーミッションを決定します。スーパーユーザによって実行された場合の既定値は、システムの "nobody" ユーザに切り替えることです。非スーパーユーザーにとっての既定値は、ユーザーを変更しようとしないことです。"gid" パラメータも参照下さい。
RSYNC_USER_NAME 環境変数を使用して、rsync を認証ユーザとして実行するように要求できます。例えば、rsync 認証用に受け取ったユーザと同じユーザとして rsync を実行させたい場合、この設定は便利です。
uid = %RSYNC_USER_NAME%
gid = *
gid
このパラメーターは、モジュールへのアクセス時に使用される 1 つ以上のグループ名/ID を指定します。最初のものは既定値グループで、余分なものは補足グループとして設定されます。また、リスト内の最初の gid として "*" を指定することもできます。この gid は、転送するユーザーのすべての通常のグループに置き換えられます( "uid" を参照)。スーパーユーザによって実行された場合の既定値は、他の補足グループなしで、オペレーティングシステムの "nobody" (または "nogroup" )グループに切り替えることです。非スーパーユーザにとっての既定値は、いかなるグループ属性も変更しないことです (実際、あなたのオペレーティングシステムは、非スーパーユーザがグループ設定を変更しようとすることを許可しないかもしれません)。
指定されたリストは通常、スペースとコンマに基づいてトークンに分割されます。ただし、リストがカンマで始まる場合、リストはカンマでのみ分割されます。これにより、グループ名にスペースを含めることができます。いずれの場合も、前後の空白はトークンから削除され、空のトークンは無視されます。
daemon uid
このパラメータは、デーモンが実行される uid を指定します。このデーモンは通常、ユーザ root として実行されます。これを設定しないと、ユーザは変更されません。"uid" パラメータも参照してください。
daemon gid
このパラメータは、デーモンが実行される gid を指定します。このデーモンは通常、root グループとして実行されます。これを設定しないと、グループは変更されません。"gid" パラメータも参照下さい。
fake super
モジュールに対して "fake super=yes" を設定すると、デーモン側は --fake-super コマンドラインオプションが指定されたかのように動作します。これにより、デーモンを実際にルートとして実行しなくても、ファイルの完全な属性を保存できます。
filter
デーモンは、クライアントにどのファイルへのアクセスを許可するかを決定する独自のフィルターチェーンを持っています。このチェーンはクライアントには送信されず、クライアントが指定したフィルタとは無関係です。デーモンフィルタチェーンによって除外されたファイル (daemon-excludedfiles) は、クライアントがプルしようとすると、存在しないものとして扱われ、クライアントがプッシュしようとすると、エラーメッセージが表示されてスキップされ (終了コード 23 がトリガーされます)、モジュールから削除されることはありません。デーモンフィルタを使用すると、クライアントがプライベート管理ファイル (uid/gid 名前変換をサポートするために追加するファイルなど) をダウンロードしたり改ざんしたりするのを防ぐことができます。
デーモンフィルタチェーンは、 "filter" 、 "include from" 、 "include" 、 "exclude from" 、および "exclude" パラメータから、この優先順位の順に構築されます。アンカー付きパターンは、モジュールのルートにアンカーされます。サブツリー全体、たとえば "/secret" へのアクセスを防ぐには、サブツリー内のすべてを除外する必要があります。これを行う最も簡単な方法は、 "/secret/***" のような三重星パターンを使用することです。
フィルタチェーンは、各項目の logical name を、解決先の物理ファイルではなく、モジュールルートに相対的に一致させます。これは可視化と改ざんのためのフィルタであって、シンボリックリンクに対するセキュリティバウンダリではありません: モジュール内部のシンボリックリンクのうち、それ自身の名前が除外されていないものは、除外されているリンク先までたどることができます (フィルタが見る名前 -- たとえば "link"  -- は、除外されている名前 -- たとえば "secret" ではありません)。書き込み可能なモジュールをシンボリックリンクの策略から保護するのは、このフィルタではなく、"munge symlinks" パラメータです(書き込み可能で chroot されていないモジュールに対して既定値によって有効にされます)。シンボリックリンクを導入またはトラバースできるピアを制限するために、 exclude / filter に依存しないでください。
"filter" パラメータはデーモンフィルタルールの空白で区切られたリストをとりますが、ルールの内部の空白でトークンを分割しないことを知っている程度には賢いです (例えば、"- /foo  - /bar" は2つのルールとして解析されます)。通常の構文を使用して、1 つ以上のマージファイル規則を指定できます。設定ファイル内の特定のモジュールに適用できる "フィルタ" パラメータは 1 つだけなので、必要なすべてのルールを 1 つのパラメータにまとめます。ディレクトリ単位のマージファイルのルールは、グローバルルールほどの保護を提供しないことに注意してください。しかし、ディレクトリ単位のマージファイルが転送に含まれ、クライアントがそれらの使用を要求した場合、クライアントのダウンロード操作中に --delete がよりよく動作するようにするために使用できます。
exclude
このパラメーターは、スペースで区切られたデーモン除外パターンのリストをとります。クライアントの --exclude オプションと同様に、パターンを "- " または "+ " で修飾して、除外 / 包含を明示的に示すことができます。特定のモジュールに適用できる "exclude" パラメータは 1 つだけです。除外されたファイルがデーモンに与える影響については、 "filter" パラメータを参照してください。
include

 "include" を使用して、 "exclude" パラメータの効果を上書きします。1 つのモジュールに適用できる "include" パラメータは 1 つだけです。除外されたファイルがデーモンに与える影響については、 "filter" パラメータを参照してください。
exclude from
このパラメータは、デーモン除外パターン (1 行に 1 つ) を含むデーモン上のファイルの名前を指定します。特定のモジュールに適用できる "exclude from" パラメータは1つだけです。複数の exclude from ファイルがある場合は、"filter" パラメータでマージファイルとして指定できます。除外されたファイルがデーモンに与える影響については、 "filter" パラメータを参照してください。
include from
デーモンインクルードパターンのファイルに対する "exclude from" と同じものです。1 つのモジュールに適用できる "include from" パラメータは 1 つだけです。除外されたファイルがデーモンに与える影響については、 "filter" パラメータを参照してください。
incoming chmod
このパラメータを使用すると、カンマで区切られた chmod 文字列のセットを指定できます。この文字列は、すべての受信ファイル (デーモンが受信するファイル) のアクセス権に影響します。これらの変更は、他のすべての権限計算の後に発生します。また、クライアントが --perms を指定していない場合は、宛先既定値や既存の権限が上書きされます。この文字列の形式については、--chmod rsync オプションの説明と chmod(1) のマニュアルページを参照してください。
outgoing chmod
このパラメータを使用すると、すべての送信ファイル (デーモンから送信されるファイル) の権限に影響する、カンマで区切られた chmod 文字列のセットを指定できます。これらの変更が最初に行われ、送信された権限がファイルシステム自体に保存されている権限とは異なるように見えます。たとえば、サーバー上でグループの書き込み権限を無効にしながら、クライアントにはサーバーがオンになっているように見せることができます。この文字列の形式については、--chmod rsync オプションと chmod(1) マニュアルページの説明を参照してください。
auth users
このパラメーターは、コンマまたはスペースで区切られた許可ルールのリストを指定します。最も単純な形式では、このモジュールへの接続を許可するユーザー名をリストします。ユーザ名はローカルシステムに存在する必要はありません。ルールにはシェルのワイルドカード文字を含めることができます。これらのワイルドカード文字は、認証のためにクライアントから提供されたユーザー名と照合されます。"auth users" が設定されている場合、クライアントへは、モジュールに接続するためのユーザ名とパスワードが要求されます。この処理には、チャレンジレスポンス認証プロトコルが使用されます。平文のユーザー名とパスワードは、"secrets file" パラメータで指定されたファイルに格納されます。既定値は、すべてのユーザがパスワードなしで接続できるようにするためのものです (これは "匿名rsync" と呼ばれます)。
ユーザ名での一致に加えて、'@' プレフィックスを使用してグループ名での一致を指定できます。グループ名での一致を使用する場合、認証するユーザ名はシステム上の実際のユーザである必要があります。そうでない場合、そのユーザはどのグループのメンバでもないと見なされます。たとえば、 "@rsync" を指定すると、指定されたユーザーが rsync グループのメンバーである場合、認証中のユーザーと一致します。
最後に、コロン (:) の後にオプションを指定できます。オプションを使用して、ユーザーまたはグループを "拒否" したり、アクセスを "ro" (読み取り専用)に設定したり、アクセスを "rw" (読み取り/書き込み)に設定したりできます。auth-rule-specific ro/rw を設定すると、モジュールの "read only" 設定が上書きされます。
ルールは、一致させたい順序で配置してください。これは、最初に一致したユーザまたはグループでチェックが停止し、それがチェックされる唯一の認証であるためです。例:
auth users = joe:deny @guest:deny admin:rw @rsync:ro susan joe sam
上記のルールでは、ユーザー joe はどのような場合でもアクセスを拒否されます。グループ "guest" 内のユーザーもアクセスを拒否されます。ユーザ "admin" は読み取り / 書き込みモードでアクセスできますが、これは admin ユーザがグループ "guest" に属していない場合に限られます (ユーザがグループ "guest" に属している場合、admin ユーザの一致規則には到達しないため)。グループ "rsync" 内の他のユーザーは、読み取り専用アクセスを取得します。最後に、ユーザー susan、joe、および sam は、モジュールの ro/rw 設定を取得しますが、これはユーザーが以前のグループ一致ルールに一致しなかった場合に限られます。
スペースを含むユーザー名またはグループ名を指定する必要がある場合は、リストの先頭にカンマを付けて、リストがカンマでのみ分割されるようにします (ただし、先頭と末尾の空白も削除され、空のエントリは単に無視されます)。例:
auth users = , joe:deny, @Some Group:deny, admin:rw, @RO Group:ro
ユーザーごとのパスワードとグループごとのパスワードを設定する方法については、シークレットファイルの説明を参照してください。また、認証される規則に応じて、ユーザパスワードまたは (該当する場合は) グループパスワードを使用してユーザを認証する方法についても説明します。
リモートシェルを使用して rsync デーモンに接続するときに、リモートシェルレベルのユーザー名と異なる rsyncd.conf レベルのユーザー名を処理する方法については、rsync(1) の "リモートシェル接続による RSYNC デーモン機能の使用" の節も参照してください。
secrets file
このパラメータは、このモジュールの認証に使用されるユーザー名:パスワードおよび/または @グループ名:パスワードのペアを含むファイルの名前を指定します。このファイルは、"auth users" パラメータが指定された場合にのみ参照されます。このファイルは行ベースで、1 行に 1 つの名前とパスワードのペアが含まれています。すべての行にはハッシュ (#) が使え、行の最初の文字に使われると、その行はコメントと見なされてスキップされます。パスワードには任意の文字を含めることができますが、多くのオペレーティングシステムでは、クライアント側で入力できるパスワードの長さが制限されているため、8 文字を超えるパスワードは機能しない場合があります。
グループ指定行の使用は、一致する "@groupname" ルールを使用してモジュールが許可されている場合にのみ関係します。この場合、認証をトリガーしたグループの "ユーザー名:パスワード" 行または "@グループ名:パスワード" 行のいずれかを介してユーザーを認証できます。
どのような種類のパスワードエントリを含めるかは、ユーザー、グループ、またはその両方に依存します。 "auth users" でグループルールを使用する場合、共有パスワードを使用しないのであれば、グループパスワードを指定する必要はありません。

 "secrets file" パラメータには既定値がないため、(/etc/rsyncd.secretsなどの) 名前を選択する必要があります。"strict modes" が無効になっていない限り、ファイルは "other" によって読み書き可能であってはならず、(デーモンが root として実行されている場合) root によって所有されていなければなりません。正確なチェックについては "strict modes" を参照してください。ファイルが見つからないか拒否された場合、 "auth users" モジュールへのログインはできません。
auth digest
このパラメータは、"auth users" モジュールのチャレンジ / レスポンス認証のためにデーモンが受け付ける minimum メッセージダイジェストを設定します。利用可能なダイジェストは、最も強いものから順に、sha512,sha256,sha1,md5,md4 です。このデーモンは、接続しているクライアントのアドバタイズリストにも表示されている最も優先度の高いダイジェストを選択し、md5 または md4 プロトコル 30 未満で、アドバタイズしないクライアントの場合にフォールバックします。そのため、弱いダイジェストだけをアドバタイズするクライアントは、弱いネゴシエートされたダイジェストを強制することができます。設定された名前よりも弱い場合は、チャレンジが送信される前に接続が拒否されます。値は単一のダイジェスト名です。次に例を示します:
auth digest = sha256
これは sha256 または sha512 を要求し、md5 または md4 の使用を拒否します。
これで auth-digest downgrade を防ぎます。ダイジェストリストを送信しないピア (macOS に同梱されている openrsync を含む、3.2.0 より前の rsync) は、デーモンを md5 または md4 プロトコル 30 以下にフォールバックさせ、経路上の攻撃者は、認証されていないネゴシエーションを書き換えて、同じ弱い選択を強制することができます。捕捉されたチャレンジレスポンスは、弱いダイジェストに対してオフラインでブルートフォースするよりもはるかに安価です。したがって、クライアントがすべて最新と見なせるサイトは、強いものを要求することができます。詳細については、 "rsync SECURITY.md" 脅威モデル全体のドキュメントを参照してください。
既定値はありません  -- floor はオフで、デーモンはネゴシエートされたダイジェストをすべて受け入れ、古いクライアントとの互換性を維持します。floor を有効にすると、少なくともそのダイジェストを提供できないすべてのクライアントが拒否されます。特に、3.2.0 よりも古い rsync (SHA ダイジェストが追加された時点) と、Mac OS にバンドルされている openrsync は、md4 / md5 でのみ認証されます。SHA ダイジェストでは、両端で openssl を使用して構築された rsync が必要です。この構築で提供されないダイジェストに名前を付けると、モジュールへのすべてのログインが拒否されます (fail-closed)。
他の認証パラメータと同様に、これはモジュールごとに設定することも、すべてのモジュールに適用される既定値については、設定ファイルのグローバル部分で設定することもできます。
strict modes
このパラメータは、シークレット・ファイルの権限をチェックするかどうかを決定します。 "strictモード" が true (既定値) の場合、secrets ファイルは、 "other" によって読み取り / 書き込みが可能な場合 (つまり、other-read または other-write アクセス権ビットのいずれかが設定されている場合)、およびデーモンが root として実行されているときに、ファイルが root によって所有されていない場合は、拒否されます。グループのパーミッションや他の実行ビットは無視されます。したがって、 600 や 640 などのモードは受け付けられますが、644 (またはその他の読み取り / 書き込み可能モード) は拒否されます。"strict modes" が偽の場合、権限のチェックは行われません。このパラメータは、Windows オペレーティングシステム上で実行される rsync に対応するために追加されました。
hosts allow
このパラメータを使用すると、接続しているクライアントのホスト名と IP アドレスに対して照合する、カンマ区切りまたは空白区切り (あるいはその両方) のパターンのリストを指定できます。どのパターンも一致しない場合、接続は拒否されます。
各パターンは、次の6つの形式のいずれかになります:
o
a.b.c.d 形式のドット付き 10 進数の IPv4 アドレス、または a:b:c::d:e:f 形式の IPv6 アドレス。この場合、着信マシンの IP アドレスが正確に一致する必要があります。
o
ipaddr/n 形式のアドレス / マスク。ipaddr は IP アドレス、n はネットマスクの 1 の位のビット数です。マスクされた IP アドレスと一致するすべての IP アドレスが許可されます。
o
ipaddr/maskaddr 形式のアドレス/マスク。ここで、ipaddr は IP アドレス、maskaddr はネットマスクで、IPv4 の場合はドット付き 10 進表記、IPv6 の場合も同様の表記になります。たとえば、/64 の代わりに ffff:ffff:ffff:ffff:: を使用します。マスクされた IP アドレスと一致するすべての IP アドレスが許可されます。
o
ワイルドカードを使用したホスト名パターン。接続 IP のホスト名 (逆引き参照で決定) がワイルドカードを含む名前 (通常の Unix ファイル名マッチングと同じルールを使用) と一致する場合、クライアントは許可されます。これは、 "逆ルックアップ" が有効になっている場合 (既定値) にのみ機能します。
o
ホスト名。プレーンなホスト名が接続先 IP アドレスの逆引き DNS にマッチした場合 ("reverse lookup" が有効な場合) 、および / または、与えられたホスト名の IP アドレスが接続先 IP アドレスにマッチした場合 ("正引き" が有効な場合、これは既定値によるものです)。任意の一致が許可されます。
o

 "@" の後にネットグループ名を指定します。ネットグループ名は、接続先 IP の逆引き DNS が指定したネットグループに含まれている場合に一致します。
rsync が IDN をサポートして構築されている場合 (rsync --version 内の "IDN" を参照)、ホスト名パターンに非 ASCII 文字が含まれている可能性があります。このファイルは UTF-8 として読み取られ、非 ASCII 文字ラベルは、照合前にそれぞれの IDNA A-ラベル ("Punycode") 形式に変換されます。これは、デーモンが持つクライアント用の名前が、常に DNS から ASCII として到着するためです。合成文字で書かれたパターンは途中で正規化されるので、あらかじめ合成されたスペルと同じようにマッチします。これらのラベルのみが変更されるため、アドレス、マスク、すでにコード化された名前、およびワイルドカード文字はすべて、記述されたとおりに正確に一致します。この方法で変換できないパターンはそのままマッチされるため、何もマッチしません。これには、IDNA マッピングが "*" に変わる U+FF0A FULLWIDTH ASTERISK のような、変換によって書き込まれていない文字が導入されるパターンが含まれます。
注:IPv6 リンクローカルアドレスは、アドレス指定にスコープを持つことができます。
fe80::1%link1
fe80::%link1/64
fe80::%link1/ffff:ffff:ffff:ffff::
拒否リストに例外を追加する方法として、 "hosts allow" と "hosts deny" を組み合わせることもできます。両方のパラメータを指定すると、"hosts allow" パラメータが最初にチェックされ、一致した場合、クライアントは接続可能になります。許可されていないホストは、 "hosts deny" リストと照合され、拒否されるかどうかが確認されます。どちらのリストにも一致しないホストは、接続を許可されます。
既定値には "hosts allow" パラメータはありません。つまり、すべてのホストが接続できます。
hosts deny
このパラメータを使用すると、カンマや空白文字で区切られたパターンのリストを指定して、接続先クライアントのホスト名およびIPアドレスと照合できます。パターンが一致する場合、接続は拒否されます。詳細については、 "hosts allow" パラメータを参照してください。
既定値には "hosts deny" パラメータはありません。つまり、すべてのホストが接続できます。
reverse lookup
デーモンがホスト名を決定するために、クライアントの IP アドレスに対して逆ルックアップを実行するかどうかを制御します。この制御は、 "hosts allow" および "hosts deny" チェックと "%h" ログエスケープに使用されます。これは既定値によって有効にされていますが、もし検索が有用な結果を返さないことがわかっている場合は、時間を節約するために無効にすることもできます。その場合、デーモンは代わりに "UNDETERMINED" という名前を使用します。
このパラメータがグローバルに (既定値によっても) 有効になっている場合、rsync はクライアントが接続するとすぐに検索を実行するため、モジュールに対して無効にしても検索は回避されません。したがって、おそらくグローバルに無効にしてから、情報を必要とするモジュールに対して有効にする必要があります。
forward lookup
デーモンが、ホストの許可/拒否設定で指定された任意のホスト名に対して正引きを実行するかどうかを制御します。既定値によってこれは有効にされ、接続している IP の逆引き DNS によって返されないであろう明示的なホスト名の使用を許可します。
ignore errors
このパラメーターは、転送の削除フェーズを実行するかどうかを決定するときに、デーモン上の入出力エラーを無視するように rsyncd に指示します。I/O エラーが発生した場合、一時的なリソース不足やその他の I/O エラーによる破壊的な削除を防ぐために、通常 rsync は --delete ステップをスキップします。場合によっては、このテストは逆効果になるため、このパラメータを使用してこの動作をオフにすることができます。
ignore nonreadable
これは rsync デーモンに、ユーザが読むことができないファイルを完全に無視するように伝えます。これは、ディレクトリ内に読み取り不能なファイルが含まれている可能性があり、システム管理者がこれらのファイルをまったく表示したくないパブリックアーカイブの場合に便利です。
transfer logging
このパラメータを指定すると、ダウンロードおよびアップロードのファイルごとのログが、ftp デーモンで使用される形式と多少似た形式で記録されます。デーモンは必ず最後に転送のログを取るので、転送が中止されても、ログファイルには記録されません。
ログ行をカスタマイズする場合は、 "log format" パラメータを参照してください。
log format
このパラメーターを使用すると、転送ログが有効な場合にファイル転送のログに使用する形式を指定できます。フォーマットは、先頭にパーセント (%) 文字が付いた 1 文字のエスケープ・シーケンスが埋め込まれたテキスト文字列です。オプションの数値フィールド幅をパーセントとエスケープ文字の間に指定することもできます (例: "%-50n %8l %07p"。さらに、数値エスケープの前に 1 つ以上のアポストロフィを指定して、数値をより人間が読みやすいものにする必要があることを示すことができます。サポートされている 3 つのレベルは、--human-readable コマンドラインオプションの場合と同じですが、人間が読みやすいようにするための既定値はオフになっています。アポストロフィを追加するたびにレベルが上がります (例: "%''l %'b %f" )。
既定値のログ形式は "%o %h [%a] %m (%u) %f %l" です。"log file" パラメータを使用する場合は、常に "%t [%p] " が前に付加されます。(この既定値のログ・フォーマットを要約する perl スクリプトは、rsync のソース・コード配布物の "サポート" サブディレクトリー、rsyncstats の中に含まれています。)
解釈される1文字のエスケープは次のとおりです:
o
%a リモート IP アドレス (デーモンでのみ使用可能)
o
%b 実際に転送されたバイト数
o
%B ファイルのパーミッションビット (例:rwxrwxrwt)
o
%c basis ファイル用に受信したブロックチェックサムの合計サイズ (送信時のみ)。
o
%C ファイルに対して既知の場合は、ファイル全体のチェックサム。以前の rsync プロトコル / バージョンでは、チェックサムはソルトされていたため、有用な値ではありません (その場合は表示されません)。ファイルのチェックサムを出力するには、--checksum オプションが有効になっているか、ソルトされたチェックサムを使用せずにファイルが転送されている必要があります。アルゴリズムの選択方法については、--checksum-choice オプションを参照してください。
o
%f ファイル名(送信側では長い形式、末尾に"/"なし)
o
%G ファイルの gid (10進数) または "既定値"
o
%h リモート・ホスト名 (デーモンでのみ使用可能)
o
%i 更新中のリスト (項目別)
o
%l ファイルの長さ (バイト単位)
o
%L 文字列 "->SYMLINK"、"=>HARDLINK"、または "" (ここで、SYMLINK または HARDLINK はファイル名)
o
%m モジュール名
o
%M ファイルの最終変更時刻
o
%n ファイル名 (短い形式: dir の後に "/" が付きます)
o
%o 操作。"send"、"recv"、または "del." (最後のものは末端のピリオドを含みます)。
o
%p この rsync セッションのプロセス ID
o
%P モジュールパス
o
%t 現在の日付と時刻
o
%u 認証されたユーザー名または空の文字列
o
%U ファイルの uid (10進数)
"%i" によって出力される文字の意味の一覧は、rsync マニュアルページの --itemize-changes オプションを参照してください。
古いバージョンの rsyncと 通信すると、ログに記録される出力の一部が変更されることに注意してください。たとえば、rsync 2.6.4 より前では、削除されたファイルは冗長メッセージとしてのみ出力されていました。
timeout
このパラメータを使用すると、クライアントが選択した、このモジュールの I/O タイムアウトを上書きできます。このパラメータを使用すると、rsync が停止したクライアントを永久に待たないことを保証できます。タイムアウトは秒単位で指定します。ゼロの値はタイムアウトなしを意味し、既定値です。匿名 rsync デーモンに適した値は、600 です (タイムアウトは 10 分です)。
refuse options
このパラメータを使用すると、rsync デーモンによって拒否される rsync コマンドラインオプションのスペース区切りリストを指定できます。完全なオプション名、1 文字の省略形、または複数のオプションと一致するワイルドカード文字列を指定できます。3.2.0 からは、 "!" で始めることで、一致する用語を否定することもできます。
オプションが拒否されると、デーモンはエラーメッセージを出力して終了します。
例えば、以下のように指定すると、--checksum (-c) と各種の削除オプションを拒否します。
refuse options = c delete
上記がすべての削除オプションを拒否する理由は、オプションが --delete を暗示し、暗黙のオプションが明示的なオプションと同様に拒否されるためです。
否定一致を使用すると、次のようにワイルドカード後の拒否を微調整できます。
refuse options = delete-* !delete-during
否定マッチングでは、拒否されたオプションのリストを受け入れられたオプションのリストに変えることもできます。これを行うには、リストを "*" (すべてのオプションを拒否する) で開始し、受け入れる 1 つ以上の否定一致を指定します。例:
refuse options = * !a !v !compress*

 "*" が --dry-run、--server、--no-iconv、--seclude-args などの特定の重要なオプションを拒否することを心配しないでください。これらの重要なオプションはワイルドカードでは一致しないため、正確な名前で上書きする必要があります。たとえば、iconv の転送を強制する場合は、次のようなものを使用できます。
refuse options = * no-iconv !a !v
追加支援 (3.2.0 から開始) として、 "a" または "archive" オプションを拒否 (または "!refusing" ) すると、--archive オプションが (-rdlptgoD を意味するすべてのオプションにも影響します。ただし、オプションが明示的に一致する場合 (ワイルドカードを使用しない場合) に限ります。何か難しいことをしたい場合は、"archive*" を使用してこの副作用を回避できますが、通常の rsync クライアントは実際のアーカイブオプションをサーバに送信しないことに注意してください。
追加の安全機能として、 "削除" の拒否はデーモンが送信者の場合 remove-source-files も拒否します。前者なしで後者が必要な場合は、代わりに "delete-*" を拒否します。これは、--remove-source-files に影響を与えることなくすべての削除モードを拒否するためです。(クライアントの --delete オプションは通常、--delete-during になることに注意してください。
削除オプションを拒否しない場合は、"!delete*" を指定してすべての削除オプションを受け入れるか、次のように "delete" を含む限定セットを指定する必要があります。
refuse options = * !a !delete !delete-during
... 一方、これは--delete-after 以外の削除オプションを受け付けます。
refuse options = * !a !delete* delete-after
"compress" を拒否する場合の注意: "dont compress" デーモンパラメータを "*" に設定し、デーモンの環境で RSYNC_COMPRESS_LIST=zlib が設定されていることを確認して、クライアントに -z オプションの削除を強制するエラーを返すのではなく、暗黙のうちに圧縮を無効にする方がよい場合があります。
圧縮オプションを拒否しない場合、--compress-level オプションも許可する場合は、 "!compress*" を一致させることができます。
"copy-devices" と "write-devices" オプションは既定値によって拒否されますが、"!copy-devices" や "!write-devices" によって明示的に受け入れることができます。オプション "log-file" および "log-file-format" は強制的に拒否され、受け入れることはできません。
ワイルドカードで一致しないすべてのオプションを次に示します。
o
--server: rsync が動作するためにも必要です。
o
--rsh,-e: 互換性フラグをサーバに伝達するために必要です。
o
--out-format: これは、出力動作をリモートの受信者に伝えるために必要です。rsync は古いエイリアス--log-format を渡しますが互換性の理由により、このオプションを --log-file-format と混同しないでください。
o
--sender: これを拒否する代わりに、 "write only" パラメータを使用します。
o
--dry-run,-n: これを無効にしたいのは誰ですか?
o
--seclude-args,-s: 最も古い arg 保護メソッドです。
o
--from0,-0: --files-from の受け入れ / 拒否を容易にします。この便利な修飾子には影響しません。
o
--iconv: これは、 "charset" パラメータに基づいて自動的に無効になります。
o
--no-iconv: ほとんどの転送でこのオプションを使用します。
o
--checksum-seed: かなりまれな、安全なオプションです。
o
--write-devices: ワイルドではありませんが、自動で無効になります。
dont compress
注意: このパラメータは現在、1つのインスタンスを除いて効果がありません。 "*" に設定されている場合、すべてのファイルの圧縮を最小化または無効にします (--compress オプションを完全に拒否したくない場合)。
このパラメータを使用すると、ワイルドカードパターンに基づいて、デーモンからファイルを引き出すときに圧縮しないファイル名を選択できます (デーモンへのファイルのプッシュを制御する類似のパラメータは存在しません)。圧縮は CPU 使用率の点でコストが高くなる可能性があるため、すでに圧縮されているファイルなど、うまく圧縮できないファイルは圧縮しないことをお勧めします。
"dont compress" パラメータは、大文字小文字を区別しないワイルドカードパターンの空白区切りのリストを取ります。パターンの 1 つに一致するソースファイル名は、転送中に可能な限り圧縮されません。圧縮アルゴリズムが "オフ" レベルの場合、これらのファイルに対して圧縮は行われません。アルゴリズムの途中でレベルを変更できる場合は、CPU 使用率を可能な限り削減するために、レベルを最小限に抑えます。
このパラメーターが設定されていない場合に --skip-compress がスキップするファイル接尾辞の一覧については、rsync(1) マニュアルページの既定値パラメーターを参照してください。
early exec, pre-xfer exec, post-xfer exec
接続の初期段階、または転送の直前や直後に実行するコマンドを指定できます。early exec または pre-xfer exec コマンドがエラーコードを返した場合、転送は開始前に中止されます。pre-xfer exec コマンドから stdout へのすべての出力(最大で数KB)は、中断時にユーザに表示されますが、スクリプトが成功を返した場合は表示されません。他のプログラムは、ユーザーにテキストを送信できません。pre-xfer exec stdout を除くすべての出力は、対応するデーモンのstdout / stderr に送られます。stdout / stderr は通常破棄されます。デーモンの出力を表示する方法については、--no-detach オプションを参照してください。これはデバッグに役立ちます。
early exec コマンドは、転送要求のモジュール名以外の部分が認識される前に実行されることに注意してください。このヘルパー・スクリプトは、ディスク・マウントを設定したり、一部のデータを復号化してモジュール・ディレクトリーに入れたりするために使用できますが、並行性の問題を避けるために lock file と max connections を使用する必要があるかもしれません。クライアント rsync が --early-input=FILE オプションを指定した場合、約 5K までのデータを初期スクリプトの stdin に送信できます。それ以外の場合、標準入力は空になります。
他のスクリプトのいずれかがエラーコードを返した場合でも、post-xfer exec コマンドは実行されます。ただし、pree\xecコマンドが失敗した場合、pre-xfer execコマンドは実行されません。
次の環境変数が設定されます。ただし、一部の環境変数は、転送前または転送後の環境に固有のものです。
o
RSYNC_MODULE_NAME: アクセスされているモジュールの名前。
o
RSYNC_MODULE_PATH: モジュール用に設定されたパス。
o
RSYNC_HOST_ADDR: アクセスしているホストの IP アドレス。
o
RSYNC_HOST_NAME: アクセスしているホストの名前。
o
RSYNC_USER_NAME: アクセスしているユーザーの名前 (ユーザーがいない場合は空)。
o
RSYNC_PID: この転送の一意の番号。
o
RSYNC_REQUEST: (転送前のみ) ユーザが指定したモジュール / パス情報。ユーザーは複数のソースファイルを指定できるため、リクエストは "mod/path1 mod/path2" のようなものになる可能性があることに注意してください。
o
RSYNC_ARG#: (転送前のみ) 事前要求引数は、これらの番号付きの値に設定されます。RSYNC_ARG0 は常に "rsyncd" で、その後に RSYNC_ARG1 で使われたオプションなどが続きます。"."の値は、オプションが設定され、path 引き数が開始されたことを示します -- これらは RSYNC_REQUEST と同様の情報を持ちますが、値が分離され、モジュール名が取り除かれます。
o
RSYNC_EXIT_STATUS: (転送後のみ)サーバ側の終了値。実行が成功した場合は 0 、サーバが生成したエラーの場合は正の値になります。rsync が正常に終了できなかった場合は、-1 になります。クライアント側で発生するエラーは現在のところサーバ側に送信されないことに注意してください。そのため、これは転送全体の最終終了ステータスではありません。
o
RSYNC_RAW_STATUS: (転送後のみ) waitpid() からの生の終了値。
これらのコマンドの 1 つに展開された %VAR% reference は、そのコマンドが現れる引用の文脈のためにエスケープされます。これは、そのコマンドを実行する単一のシェルにとって正しいことです。これは、sh -c '... %RSYNC_USER_NAME% ...' のような 2番目のシェルを起動するコマンドでは正しくありません: 外側のシェルはエスケープを消費し、内側のシェルは値をそのまま見ます。touc? の値は /usr/bin/ に対してグロブ展開されるので、置換はもはやデータではなく -- コマンドを選択します。
rsync はシェルパスの未知数に対してエスケープできないため、シェルが動作する可能性のある文字を含む値は完全に拒否され、転送は以下で中止されます:
efusing to run shell hook: %VAR% holds a shell metacharacter (実行を拒否するshellフック: %VAR% がシェルメタ文字を保持しています)
拒否される文字は、空白、引用符および拡張文字 ' " ` $ \、区切り文字 ; & |、リダイレクション < >、小括弧、パターン文字 * ? [ ]、#、!、 ~、 { }および任意の制御文字です。それらのいくつかは、それ自体は無害であり、second シェルがそれらに対して行うことが拒否されます。-- ! はコマンド位置を否定するので、アクセスチェックとして書かれたフックは、拒否から承認に変えることができ、 ~ はチルダ展開されます。
これは、自分で入力したものを含む、すべての %RSYNC_*% 値に適用されます。特に、path がそれらのいずれかを含むモジュールは、以下のコマンドのいずれにも挿入できません。%RSYNC_MODULE_PATH% に言及するコマンドを持つ path = /srv/My Backups は、悪意のあるモジュールだけでなく、そのモジュールのすべての転送を拒否します。この制限は意図的なものです -- rsync は、あなたの空間と攻撃者の空間の両方が同じ文字列内にあり、path それ自体は path = /home/%RSYNC_USER_NAME% のようなピアの値から構築されるかもしれません。
このような値がフック内で必要な場合は、値を補間するのではなく、環境を介して渡します。同じ名前がコマンドにエクスポートされるため、"$RSYNC_MODULE_PATH" スクリプト内はこのチェックによって制限されません。以下のように引用します。 -- rsync はもはや、スクリプトがどのように値を分割するかについて何の発言権も持ちません。
コマンドを特定のモジュールに関連付けることができますが、コマンドはデーモンを起動したユーザーの権限 (モジュールの uid/gid 設定ではない) を使用して実行され、chroot の制限はありません。
これらの設定では、次の 2 つの環境変数が使用されます。RSYNC_SHELL を使用して、コマンドの実行時に使用するシェルを設定します (そうしないと、system() コールの既定値シェルが使用されます)。RSYNC_NO_XFER_EXEC を使用して、両方のオプションを完全に無効にします。
temp dir
更新されたファイルの転送中に作成される一時ファイルに対して rsync が使用するディレクトリを指定します。そのディレクトリが別のパーティションにある場合、転送後、ファイルはリンク解除されずにコピーされます。
このパラメータは --temp-dir オプションと等しいため、詳細については rsync マニュアルページを参照してください。

 

設定ディレクトリ

現在、構成ファイルに他のファイルの内容を組み込むことができる 2つの構成ディレクティブ、&include と &merge が利用可能です。どちらも、ファイルまたはディレクトリへの参照を許可します。これらは、ファイルの内容がどのように分離されているとみなされるかという点で異なります。

&include ディレクティブは、各ファイルをより明確なものとして扱います。各ファイルは親ファイルの既定値を継承し、パラメータの解析をグローバル / 既定値として開始し、親ファイルの残りの解析のために既定値を変更しません。

一方、&merge ディレクティブは、ファイルの内容を、ディレクティブの代わりに単に挿入されたかのように扱います。したがって、別のファイルで開始されたモジュールのパラメータを設定したり、他のファイルの既定値に影響を与えたりすることがあります。

&include または &merge ディレクティブがディレクトリを参照する場合、そのディレクトリ内に含まれるすべての *.conf または *.inc それぞれのファイルを (再帰的なスキャンなしで) 読み取り、ファイルはアルファベット順にソートされます。したがって、 "rsyncd.d" という名前のディレクトリがあり、その中に "foo.conf" 、 "bar.conf" 、 "baz.conf" というファイルがある場合、次のディレクティブを使用します。

&include /path/rsyncd.d

これは、次のディレクティブのセットと同じになります。

&include /path/rsyncd.d/bar.conf
&include /path/rsyncd.d/baz.conf
&include /path/rsyncd.d/foo.conf

ただし、ディレクトリにファイルが追加されたり削除されたりするたびに調整される点が異なります。

&include ディレクティブの利点は、1 つ以上のモジュールを個別のファイルに定義できることです。この場合、自己完結型のモジュールファイル間での予期しない副作用を心配する必要はありません。

&merge ディレクティブの利点は、複数のモジュール定義に含めることができる構成スニペットをロードできること、また接続に影響を与えるグローバル値 (motd fileなど) や、他のインクルードファイルに影響を与えるグローバル変数を設定できることです。

次に、便利な/etc/rsyncd.confファイルの例を示します:

port = 873
log file = /var/log/rsync.log
pid file = /var/lock/rsync.lock

&merge /etc/rsyncd.d
&include /etc/rsyncd.d

これにより、すべての /etc/rsyncd.d/*.inc ファイル(有効なグローバル値用)がマージされ、すべての /etc/rsyncd.d/*.conf ファイル (グローバル値のクロストークなしでモジュールを定義) が含められます。

 

セキュリティ

rsync デーモンはファイルシステムの一部をネットワーククライアントに公開し、そのマスタープロセスは通常 root として実行されるため、防御的に構成する必要があります。以下は実用的なチェックリストです。プロジェクトの SECURITY.md は、基礎となる脅威モデルとプラットフォームごとの差分を記述します。

各モジュールをそのパスに限定します。
"use chroot" を有効にし (既定値は chroot を試みます)、接続ごとのワーカーがモジュールの "path" 内に閉じ込められるようにします。chroot が使用できない場合でも、rsync はすべての転送パスを解決するため、シンボリックリンクされた親を介してモジュールから逃れることはできませんが、chroot はより強力な境界です -- 特別な理由がない限り、オンにしておいてください。path = /outer/./inner は /outer まで chroot し、モジュールの root として /inner を提供します。"
権限を下げます。
各モジュールには低い権限の "uid" と "gid" を与えてください。そうすればワーカは決してファイルを root として扱いません。マスタープロセスだけが root を必要とします (chroot してポートをバインドするため)。アップロードを受け入れる必要がない限り、モジュールは "読み取り専用" にしておきます。また、悪意のあるファイルリストが予期しないローカル所有者にファイルをマッピングできないように、 "数値ID" (または "名前コンバータ" )を使用します。
接続対象を制限します。

 "hosts allow" / "hosts deny" で到達可能性を制限し、デーモンを特定の "アドレス" にバインドし、ホストファイアウォールを使用します。 "auth users" のないモジュールは、そのポートに到達できる人なら誰でも到達可能です。
強力なシークレットとダイジェストを使用して認証します。
ログインには "auth users "と、デーモンユーザのみが読める "secrets file" を必要とし ("strict modes" が無効になっていない限り、rsync は開きすぎたファイルを拒否します)、長くてエントロピーの高い secret を使用してください。古いクライアントがネゴシエートできる弱い MD4 / MD5 チャレンジダイジェストを拒否するには、 "auth digest" (たとえばauth digest = sha512)。後述の "認証強度" のセクションを参照)を使用してフロアを設定します。
接続を暗号化します。
デーモンプロトコルは、データストリームを認証しますが、暗号化しません。クリアテキストデーモンを信頼できないネットワークに公開しないでください。TLS プロキシを前面に配置するか (後述の "SSL/TLSデーモンのセットアップ" セクションを参照)、ssh 経由で実行します。
シンボリックリンクの処理を安全に保ちます。
書き込み可能なモジュールでは "munge symlinks" を有効にしておき (既定値) 、アップロードされた symlink が後の操作をモジュール外にリダイレクトできないようにします。信頼できないローカルユーザーと共有されているホストに "insecure links = yes" を設定しないでください。これは、デーモンの symlink-escape 保護 (CVE-2026-53797 および CVE-2026-53801 を含むsymlink TOCTOU / escape 脆弱性を再オープンする) を無効にし、シングルテナントの完全に分離されたホストにのみ適しています。
希望しないオプションを拒否します。
モジュールが許可すべきでないクライアントオプションを拒否するには、"refuse options" を使用します。

 

認証強度

デーモン認証はチャレンジ/レスポンスシステムです。このシステムでは、クライアントが共有秘密のダイジェストとサーバーが選択したチャレンジを返します。最新の rsync (openssl で構築された3.2.7 以降) は、双方がサポートする --sha512 が既定値 -- 最も強いダイジェストをネゴシエートしますが、下位互換性のために、ダイジェストリストをアドバタイズしないクライアントの場合は md5 (または md4 以下のプロトコル 30) にフォールバックしますが、ダイジェストネゴシエーション自体は認証されません。強力なダイジェストを要求したいデーモンは、 "auth digest" を設定できます。最善の防護策としては、rsync を ssh や検証された TLS トランスポート (rsync-ssl) 上で実行してください。これはトランスポート層での交換を防護します。そして、高エントロピー共有秘密鍵を使用してください (これは、ダイジェストにかかわらず、ブルートフォースでは実行不可能です)。

また、rsync デーモンプロトコルは現在、接続を介して転送されるデータの暗号化を提供していないことにも注意してください。認証のみが提供されます。暗号化が必要な場合は、トランスポートとして ssh を使用します。

SSL プロキシの背後に rsync を配置すると、SSL/TLS 暗号化を利用することもできます。

 

SSL/TLSデーモンの設定

SSL/TLS 経由のアクセス用に rsync デーモンを設定する場合、暗号化を処理するフロントエンドとして TCP プロキシ (haproxy や nginx など) を設定する必要があります。

o
backend-rsyncd ポートへのアクセスを制限して、プロキシの接続のみを許可する必要があります。プロキシと同じホスト上にある場合は、ローカルホストでのみリッスンするように設定することをお勧めします。
o
使用しているプロキシサーバがその情報の送信をサポートしている場合は、proxy protocol rsync-daemon パラメータを有効にすることを検討してください。以下の例では、これが有効になっていることを前提としています。

haproxyの設定例を次に示します:

frontend fe_rsync-ssl
   bind :::874 ssl crt /etc/letsencrypt/example.com/combined.pem
   mode tcp
   use_backend be_rsync

backend be_rsync
   mode tcp
   server local-rsync 127.0.0.1:873 check send-proxy

nginx プロキシのセットアップ例は次のとおりです:

stream {
   server {
       listen 874 ssl;
       listen [::]:874 ssl;

       ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/example.com/privkey.pem;

       proxy_pass localhost:873;
       proxy_protocol on; # Requires rsyncd.conf "proxy protocol = true"
       proxy_timeout 1m;
       proxy_connect_timeout 5s;
   }
}

暗号化された rsyncd と暗号化されていない rsyncd に同時にアクセスできるようにする必要がある場合は、プロキシがポート 873 でもリッスンし、両方のストリームを処理できるようにします。

 

デーモンの設定例

/home/ftp の ftp エリアへの匿名 rsync を可能にする単純な rsyncd.conf ファイルは、次のようになります。

[ftp]
        path = /home/ftp
        comment = ftp export area

より高度な例を次に示します:

uid = nobody
gid = nobody
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid

[ftp]
        path = /var/ftp/./pub
        comment = whole ftp area (approx 6.1 GB)

[sambaftp]
        path = /var/ftp/./pub/samba
        comment = Samba ftp area (approx 300 MB)

[rsyncftp]
        path = /var/ftp/./pub/rsync
        comment = rsync ftp area (approx 6 MB)

[sambawww]
        path = /public_html/samba
        comment = Samba WWW pages (approx 240 MB)

[cvs]
        path = /data/cvs
        comment = CVS repository (requires authentication)
        auth users = tridge, susan
        secrets file = /etc/rsyncd.secrets

/etc/rsyncd.secretsファイルは、次のようになります:

tridge:mypass
susan:herpass

 

ファイル

/etc/rsyncd.conf または rsyncd.conf

 

関連項目

rsync(1), rsync-ssl(1)

 

バグ

バグを報告してください!rsync バグ管理システムは、 https://rsync.samba.org/ にあります。

 

バージョン

このマニュアルページは、バージョン 3.5.1 の rsync に対応しています。

 

クレジット

Rsyncは、GNU一般公衆利用許諾契約書に基づいて配布されます。詳細は、ファイル COPYING を参照してください。

rsync に関する Web サイトは、 https://rsync.samba.org/ にあります。このサイトの github プロジェクトは、 https://github.com/RsyncProject/rsync です。

 

THANKS

rsync デーモンの独創的なアイデアとパッチを提供してくれた Warren Stanley に感謝します。Karsten Thygesen 氏の多くの提案とドキュメントに感謝します。

 

著者

Rsync はもともと Andrew Tridgell と Paul Mackeras によって書かれました。世界中から多くの人々がその維持と改善に協力してきました。

2004 年から 2024 年まで rsync をメンテナンスしてくれた Wayne Davison に特別に感謝します。

サポートおよび開発に関するメーリングリストは、次の URL でご利用いただけます。 https://lists.samba.org/


 

Index

名前
書式
説明
ファイル形式
RSYNC デーモンの起動
グローバルパラメータ
モジュールパラメータ
設定ディレクトリ
セキュリティ
認証強度
SSL/TLSデーモンの設定
デーモンの設定例
ファイル
関連項目
バグ
バージョン
クレジット
THANKS
著者

This document was created by man2html, using the manual pages.