rsyncd.conf
12 Feb 1999
NAME
rsyncd.conf - rsync サーバ設定ファイル
SYNOPSIS
rsyncd.conf
概要
rsyncd.conf ファイルは rsync を --daemon オプションで走らせた時に使われるランタイムの設定ファイルです。この方法で rsync を走らせると rsync サーバは TCP の 873 番ポートで受け付けます。rsync のクライアントからの接続は anonymous、または認証による rsync のセッションによって確立します。
rsyncd.conf ファイルは、認証、接続、ログ、利用可能モジュールを設定します。
ファイル・フォーマット
ファイルはモジュールとパラメータから構成されます。モジュールは大カッコの中に記述され、次のモジュールが始まるまで続きます。モジュールには'name = value'形式のパラメータがあります。
ファイルは行単位で書かれます。つまり、それぞれの行はコメントかモジュール名、パラメータのいずれかになります。
パラメータにある最初のイコール記号は重要です。最初のイコール記号の前後にある空白は無視されます。モジュール名とパラメータ名の前後、内部の空白は不適切です。パラメータ値の前後の空白は無視されます。パラメータ値の内部にある空白はその通りに解釈されます。
ハッシュ(#)で始まる行は、空白行として全て無視されます。
行末が \ で終っていれば、通例の UNIX の記述として次の行に続きます。
パラメータでイコール記号に続く値は、文字列か、あるいは yes/no、0/1、true/false のように与えられるブーリーンです。大文字と小文字はブーリーン値では重要ではありませんが、文字列値では維持されます。
rsync デーモンの起動
rsync デーモンは --daemon オプションを指定してやると起動します。デーモンは root 権限で走らせなければなりません。
inetd 経由か、スタンドアローンのデーモンで起動することができます。デーモンとして走らせるなら、単に適当な起動スクリプトから "rsync --daemon" を走らせるだけです。
inetd 経由で起動するなら /etc/services に次のような行を追加します:
rsync 873/tcp
そして /etc/inetd.conf に次のような一行を追加します:
rsync stream tcp nowait root /usr/bin/rsync rsyncd
--daemon
"/usr/bin/rsync" は、あなたがインストールした rsync のパスに置き換えて下さい。また、設定ファイルを読み直すために inetd に HUP シグナルを送ってやる必要があります。
/etc/rsyncd.conf を読み直すために rsync サーバに HUP シグナルを送る必要はありません。rsync の設定ファイルはクライアントの接続毎に読み直されます。
グローバル・オプション
ファイルの最初のパラメータ([module] ヘッダの前)は、グローバルなパラメータです。
与えられた値がデフォルトのパラメータを無効にする場合には、設定ファイルのグローバルの部分にモジュールのパラメータを持つかもしれません。
- motd file"motd file" オプションは、接続毎のクライアントに
表示する"message of the day"を指定することができます。通常はサイト情報や、法的な通知等を表示します。
デフォルトでは motd ファイルを使いません。
- log file
"log file"オプションは、rsync デーモンが syslog とは別のファイルにログメッセージを出力するようにします。
syslog() が chroot のプログラムで動かないようなシステム(AIX など)で便利でしょう。
- pid file
"pid file"オプションは、rsync デーモンがプロセス id をそのファイルに書き込むようにします。
- syslog facility
"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 がデフォルトです。
- socket options
このオプションはシステムを最大限までチューンしたい人には非常におもしろいでしょう。
転送を高速化(もしくは低速化!)するかもしれない、あらゆるソケットオプションを設定することができます。
設定したオプションの詳細については setsockopt() system call の man ページを読んでください。
デフォルトでは特別なソケットオプションは設定されません。
モジュール・オプション
グローバル・オプションの後にモジュールを定義します。それぞれのモジュールはシンボリック名のような
ディレクトリ・ツリーをエクスポートします。モジュールは大カッコの中でモジュール名を指定することで
エクスポートされます。そしてそのモジュールの後にオプションが記述されます。
- comment
"comment" オプションは、クライアントがモジュールのリストを入手したときにモジュール名の次になんらかの
記述を表示します。デフォルトではこの機能を使用しません。
- path
"path" オプションはモジュールが利用するサーバのファイルシステムにあるディレクトリを指定します。
/etc/rsyncd.conf ファイル内では、それぞれのモジュールについてこのオプションを指定
しなければなりません。
- use chroot
"use chroot" が true なら、rsync サーバはクライアントにファイル転送する前に "path" で chroot します。
このオプションの利点は、セキュリティホールの可能性を排除することです。しかし、スーパーユーザの権限を要求することと、新しい root パスの外にあるシンボリックリンクを利用できない点においては欠点になります。デフォルトで
この機能を使用します。
- max connections
"max connections" オプションは rsync サーバのモジュールに対する最大同時接続数を指定します。
最大接続数に達したクライアントには、「後で接続してください」というメッセージを出力します。
デフォルトでは 0 に設定されています。0 は無制限を意味します。
- lock file
"lock file" オプションは "max connections" オプションをサポートするために使うファイルを指定します。
rsync サーバは最大接続数の制限を超えないようにするために、このファイルでレコード・ロックを使います。
デフォルトでは
/var/run/rsyncd.lock です。
- read only
"read only" オプションは、クライアントがファイルをアップロードできるかどうかを設定します。もし "read only" が true ならアップロードはできません。"read only" が false の場合には、サーバにあるファイルのパーミッションが許す限りアップロードが可能になります。デフォルトではデフォルトでは全てのモジュールに関して "read only" です。
- list
"list" オプションは、クライアントが利用できるモジュールのリスト表示を求めた時に、このモジュールを
表示するかどうかを設定します。この設定が false ならモジュールを隠すことができます。デフォルトでは
true です。
- uid
"uid" オプションは、デーモンが root で走っているときに、
モジュールからの転送、またはモジュールへの転送で生じるユーザ名とユーザ id を指定します。
"gid" オプションとの組み合わせでファイルのパーミッションを設定します。デフォルトのユーザは
"nobody" です。
- gid
"gid" オプションは、デーモンが root で走っているときに、
モジュールからの転送、またはモジュールへの転送で生じるグループ名とグループ id を指定します。
"uid" オプションの補足です。デフォルトのグループは"nobody" です。
- exclude
"exclude" オプションは、除外リストにスペースで区切られたパターンのリストを追加します。
これは、クライアントが --exclude オプションを用いてこれらのパターンを指定するのと同じですが、
除外リストはクライアントには不可視で、サーバ上でのみ適用されます。"exclude" オプションは一つ
だけ指定されますが、指定する exclude/include パターンの前に "-" と "+" を使うことができます。
このオプションはセキュリティを意識したものではないので、クライアントはこの除外リストを
無視することが可能です。ファイルへのアクセスを完全に無効にするには、uid/gid オプションと
ファイルのパーミッションを組み合わせて使って下さい。
- exclude from
"exclude from" オプションは1行毎に、除外パターンを含んだサーバのファイル名を指定します。
これは、クライアントが --exclude-from オプションを用いてこれらのファイル名を指定するのと同じですが、
除外リストはクライアントには不可視で、サーバ上でのみ適用されます。exclude オプションのセキュリティに
ついては上の記述を見てください。
- include
"include" オプションは rsync が除外するべきでない、スペースで区切られたパターンのリストを
指定します。これは、クライアントが --include オプションを用いてこれらのパターンを指定するのと
同じです。exclude/include ルールを組み合わせれば複雑な構築が可能です。指定される"include" オプションは
一つですが、include/exclude を切り替える前に "+" と "-" を使うことができます。
このオプションのシンタックスについては rsync man ページにある exclude patterns の章を見てください。
- include from
"include from" オプションは1行毎に、除外すべきでないパターンを含んだサーバのファイル名を指定します。
これは、クライアントが --include-from オプションを用いてこれらのファイルを指定するのと
同じです。
- auth users
"auth users" オプションは、このモジュールへの接続を許可するユーザ名の、コンマとスペースで区切られたリストを
指定します。ユーザ名がローカルのシステムに存在する必要はありません。"auth users" が設定されると、クライアントはモジュール接続時にユーザ名とパスワードの入力を要求されます。ここではチャレンジ・レスポンス認証プロトコルが
使われます。プレインテキストのユーザ名とパスワードは "secrets file" オプションによって指定されるファイルに
書き込んでおくことができます。デフォルトでは、全てのユーザがパスワードなしで接続することができます
(これは "anonymous rsync" と呼ばれます)。
- secrets file
"secrets file" オプションは、このモジュールの認証で使われる username:password を記述した
ファイル名を指定します。このファイルは "auth users" オプションが指定されているときにだけ
機能します。ファイル内の記述は行区切りで、シングルコロンによって区切られた username:password の
形式で記述されます。行頭にハッシュ(#)があるとコメント行として解釈されます。パスワードには様々な文字が
入りますが、多くの OS ではクライアントが入力するパスワード長を制限しています。おそらく 8 文字以上
では認証できません。
"secrets file" オプションにはデフォルトがないので /etc/rsyncd.secrets のようなファイル名を
設定しなければなりません
- strict modes
"strict modes" オプションは secrets file のパーミッションをチェックするかどうかを設定します。
"strict modes" が true なら secrets file は rsync のデーモンを走らせているユーザ以外のアクセスを
禁止します。"strict modes" が false ならチェックは行われません。デフォルトでは true です。
このオプションは Windows マシンで rsync を走らせるために使われます。
- hosts allow
"hosts allow" オプションは、接続を許可するクライアントのホスト名と IP アドレスのパターンリストを指定します。
パターンと一致しなければ接続は拒否されます。
パターンの記述は次の5つの内の1つです:
- ドットで区切られた 10 進法の IP アドレス。IP アドレスと完全に一致していれば接続が許可されます。
- a.b.c.d/n という記述の address/mask。この場合、ネットマスクの1ビットの番号は n です。
マスクされた IP アドレスと一致していれば接続が許可されます。
- a.b.c.d/e.f.g.h という記述の address/mask。この場合、ドットで区切られた 10 進法のネットマスクは
e.f.g.h です。マスクされた IP アドレスと一致していれば接続が許可されます。
- ホスト名。逆引きのルックアップによるホスト名がパターンと一致(大文字小文字の区別をしない)していれば接続が許可されます。完全一致だけが許可されます。
- ワイルドカードを使ったホスト名。Unix のファイル名一致と同じルールを使います。
パターンと一致していれば接続が許可されます。
"hosts deny" オプションと "hosts allow" オプションを組み合わせて使うこともできます。
両方のオプションが指定されると、まず "hosts allow" オプションがチェックされて、クライアント側と一致すれば
接続を許可します。"hosts deny" オプションはその後にチェックされて、クライアント側と一致すれば接続を
拒否します。もし "hosts allow" と "hosts deny" の両方に一致しなければ接続は許可されます。
デフォルトでは "hosts allow" オプションは設定されていません。全てのホストが接続できます。
- hosts deny
"hosts deny" オプションは、接続を拒否するクライアントのホスト名と IP アドレスのパターンリストを指定します。
パターンと一致していれば接続は拒否されます。詳しくは "hosts allow" オプションを見てください。
デフォルトでは "hosts deny" オプションは設定されていません。全てのホストが接続できます。
- ignore errors
"ignore errors" オプションは、転送の delete フェーズを走らせるかどうかを決定するときに、
サーバの IO エラーを無視するようにします。普通 rsync は、テンポラリのリソースが不足しているか、
他の IO エラーがあれば、誤って削除するのを避けるために --delete をスキップします。
このテストが非生産的な場合は、このオプションを off にして使うことができます。
- transfer logging
"transfer logging" オプションは ftp デーモンで使われるものと類似した、ダウンロードとアップロードの
ファイル毎のロギングを可能にします。ログフォーマットをカスタマイズしたければ、log format オプション
を見てください。
- log format
"log format" オプションは、転送のロギングが可能であるときにファイル転送のログフォーマットを指定します。
フォーマットはパーセント (%) 文字のプレフィックスが付いた、一文字のエスケープ・シーケンスが組み込まれたテキスト文字です。
決められたプレフィックスは:
- %h ホスト名
- %a リモート IP アドレス
- %l ファイル長(バイト)
- %p この rsync セッションのプロセス id
- %o "send" または "recv" のどちらかの操作
- %f ファイル名
- %P モジュールのパス
- %m モジュール名
- %t 現在のデータ時間
- %u 認証されたユーザ名 (または null 文字列)
- %b 実際に転送されたバイト数
- %c ファイル転送時にファイルに受信されたチェックサムのバイト数
デフォルトのログフォーマットは "%o %h [%a] %m (%u) %f %l", and a "%t [%p] " です。"log file" オプション
使用開始時にはこれが使われます。
このフォーマットを要約するための rsyncstats という perl スクリプトが、rsync のソースコードの配布に
あります。
- timeout
"timeout" オプションはこのモジュールに対する IO のタイムアウトを設定します。
このオプションを使えば、rsync は接続が切れたクライアントを待ち続けずに済みます。
タイムアウトは秒数で指定します。0 という値はタイムアウトがないことを意味します。
デフォルトは 0 です。anonymous rsync サーバなら 600 (タイムアウトは 10 分間)が妥当でしょう。
- refuse options
"refuse options" オプションは、rsync サーバが拒否するコマンドラインのオプションを、
スペースで区切ったリストで指定することができます。オプションはフルネームでなければなりません
(例えば、チェックサムを無効にする場合は "c" ではなくて "checksum" を使わなければなりません)。
オプションが拒否されると、サーバはエラーメッセージを出力して終了します。全ての圧縮をしないように
するには "refuse options = compress" の代わりに "dont compress = *" (以下を参照)を使うことができます。
こうすれば、圧縮のリクエストをしたユーザにエラーメッセージを出さずに済みます。
- dont compress
"dont compress" オプションは、転送の際に圧縮したくないファイル名を指定することができます。
ファイル名にはワイルドカードを使うことができます。圧縮は過度の CPU 時間を消費することがあるので、
既に圧縮済みのファイル等を圧縮しないようにすると良いでしょう。
"dont compress" オプションは大文字小文字の区別をしないワイルドカードのパターンリストで記述されます。
リストはスペース区切りです。パターンに一致するソースファイルは転送の際に圧縮されません。
デフォルトでは
*.gz *.tgz *.zip *.z *.rpm *.deb
が設定済みです。
認証ストレングス
rsync で使われる認証プロトコルは、チャレンジ・レスポンスシステムを基にした 128 ビットの MD4 です。
この種のシステムの突破を実証できる人はいないと思いますが、これは"ミリタリー・ストレングス"ではないことを
理解してください。実用性は十分だと思いますが、最強のセキュリティを実現するなら、ssh で rsync を走らせる
と良いでしょう。
また、rsync のサーバプロトコルは転送データの暗号化を行っていません。認証だけが暗号化されています。
転送を暗号化する場合には ssh をお使いください。
将来的には認証と暗号化に SSL を使うかもしれませんが、それについては現在開発調査中です。
設定例
/home/ftp という ftp の領域に対して anonymous rsync を許可するrsyncd.conf ファイルは単純に:
[ftp]
path = /home/ftp
comment = ftp export area
もっと高度な設定例としては:
uid = nobody
gid = nobody
use chroot = no
max connections = 4
syslog facility = local5
pid file = /etc/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
FILES
/etc/rsyncd.conf
SEE ALSO
rsync(1)
DIAGNOSTICS
バグ
rsync サーバはクライアントにすべてのエラーメッセージを出力する訳ではありません。
ですので、なぜ転送に失敗したのか、クライアントには不可解です。
エラーはサーバの syslog にログされます。
バグを報告してください!rsync のバグ・トラッキングシステムは
http://rsync.samba.org/にあります。
バージョン
この man ページは rsync version 2.0 です。
CREDITS
rsync is distributed under the GNU public license. See the file COPYING
for details.
The primary ftp site for rsync is ftp://rsync.samba.org/pub/rsync.
A WEB site is available at http://rsync.samba.org/
We would be delighted to hear from you if you like this program.
This program uses the zlib compression library written by Jean-loup
Gailly and Mark Adler.
THANKS
Thanks to Warren Stanley for his original idea and patch for the rsync
server. Thanks to Karsten Thygesen for his many suggestions and documentation!
AUTHOR
rsync was written by Andrew Tridgell and Paul Mackerras. They may be
contacted via email at tridge@samba.org and Paul.Mackerras@cs.anu.edu.au