rrsync

Section: ユーザコマンド (1)
Updated: 21 Sep 2026
Index JM Home Page roff page

 

名前

rrsync - 制限付き rsync ユーザを ssh ログイン経由でセットアップするスクリプト

 

書式

rrsync [-ro|-wo] [-munge] [-absolute] [-no-del] [-no-lock] [-no-overwrite] DIR

オプションではない単一の引数は、使用を制限された DIR を指定します。ユーザのホームディレクトリからの相対パス、または絶対パスを指定できます。

このマニュアルページのオンライン版 (トピックの相互リンクを含む) は、 https://download.samba.org/pub/rsync/rrsync.1 です。

 

説明

ユーザの ssh ログインを制限して、rsync 転送の実行のみを許可するには、次の 2 つの簡単な方法のいずれかを使用できます。

o
rrsync スクリプトの実行を強制します。
o
rsync daemon-over-ssh コマンドの実行を強制します。

これらの設定は両方とも、対話型シェルの代わりにコマンドを強制的に実行できる ssh の機能を使用します。ただし、ユーザのホームシェルが bash の場合は、 "BASH のセキュリティ問題" 節 を参照して潜在的な問題を確認してください。

rrsync スクリプトを使用するには、ユーザの ~/.ssh/authorized_keys ファイルを編集し、制限する各 ssh-key 行の前に、次のような接頭辞を追加します (後にスペースを 1 つ追加します):

command="rrsync DIR"
command="rrsync -ro DIR"
command="rrsync -munge -no-del DIR"

次に、rrsync スクリプトに必要なオプション制限があることを確認します。複数の設定が必要な場合は、スクリプトを一意の名前でローカルの bin ディレクトリにコピーすることもできます。転送をさらに制限する場合は、DIR の前に 1 つまたは複数の rrsync オプションを指定できます。

rsync デーモンのセットアップを使用するには、ユーザの ~/.ssh/authorized_keys ファイルを編集し、制限する必要がある各 ssh-key 行の前に、次のいずれかのような接頭辞 (スペースが続く) を追加します。

command="rsync --server --daemon ."
command="rsync --server --daemon --config=/PATH/TO/rsyncd.conf ."

次に、rsyncd.conf ファイルが、1つ以上のモジュール名と適切なパスおよびオプション制限を使用して作成されていることを確認します。もし rsync の --config オプションが省略された場合、~/rsyncd.conf を既定値とします。rsync デーモンの設定方法の詳細については、rsyncd.conf(5) マニュアルページを参照してください。

rrsync を使用する場合、許可されたキーごとに制限されたディレクトリが 1つだけ存在できます。一方、デーモンのセットアップでは、構成ファイル内に複数のモジュール名を含めることができ、それぞれに独自のパス設定があります。

このマニュアルページの残りの部分は、rrsync スクリプトを使用するためのものです。

 

オプション

-ro
DIR からの読み取りのみを許可します。-no-del および -no-lock を仮定します。
-wo
DIR への書き込みのみを許可します。
-munge
rsync の--munge-links サーバ側を有効にします。
-absolute
ファイル転送のための引数が、絶対サーバパスを使用して、制限されたディレクトリを指定できるようにします。たとえば、rrsync -absolute /path/to/root と指定すると、転送のための引数 /path/to/root/dir1 は dir1 のエイリアスとして受け付けられます。
-no-del
rsync の --delete* と --remove* オプションを無効にします。
-no-lock
(ユーザ毎の) 単独での実行時におけるロックチェックを防止します。-munge で便利です。
-no-overwrite
サーバ上で --ignore-existing を強制します。サーバが受信側の場合に、既存のファイルが上書きされないようにします。
--ignore-existing は転送中のファイルのみを保護するため、制限されたdir:--log-file, --partial-dir, --delay-updates,およびバックアップモード (-b, --backup-dirの公開されたバックアップは、バックアップ名をすでに占有しているものを置き換えます) 内の別の既存のファイルに到達できるオプションも拒否されます。したがって、このオプションでは、明示的な --partial-dir、--delay-updates およびサーバ側ロギングを使用した再開可能なアップロードは使用できません。
-help, -h
このヘルプメッセージを出力して終了します。

 

セキュリティの制限

rrsync スクリプトは、送信されたパス引数を検証し、指定された DIR 内に収まるように制限しようとします。

rrsync スクリプトは (既定で) rsync の --copy-links オプションを拒否するため、コピーが DIR 内のシンボリックリンクを間接参照して DIR 外のファイルにアクセスすることはできません。

rrsync スクリプトは、rsync の --protect-args (-s) オプションを拒否します。これは、スクリプトがチェックできないオプションがサーバ側に送信される可能性があるためです。--protect-args をサポートしたい場合は、daemon-over-ssh セットアップを使用します。

rrsync スクリプトは、実際の rsync が server コマンドを実行するときに使用する rsync のオプションのサブセットのみを受け入れます。いくつかの追加の便利なオプションも含まれており、BackupPC と対話したり、便利なユーザオーバーライドを受け入れたりするのに役立ちます。

オプション処理をカスタマイズしたい場合は、スクリプト (またはそのコピー) を手動で編集できます。

 

BASHのセキュリティ問題

ユーザがホームシェルとして bash を設定している場合、bash はあまりにも便利で、強制されたコマンドを実行する前にユーザのログイン bashrc ファイルが実行しようとするかもしれません。これは、ユーザが自分のホームにある bashrc ファイルを、制限付きコピーや共有ホームディレクトリなどを使って、何らかの方法で更新できる場合には問題になります。

この問題を回避する簡単な方法の 1つは、ユーザを dash などのより単純なシェルに切り替えることです。新しいホームシェルを選択するときは、セキュリティの問題を回避できるかどうかが不明であるため、偽装している bash を選択していないことを確認してください。

もう 1 つの修正方法は、ユーザのホームディレクトリが共有マウントではないこと、および制限されたディレクトリ以外にファイルをコピーする手段がないことを確認することです。そのためには、サーバ側で強制的にシンボリックリンクの破棄を有効にする必要があるかもしれません。

openssh の将来のバージョンでは、強制コマンドの処理方法が変更され、ユーザのホームシェルを使用しなくなる可能性があります。

 

例

~/.ssh/authorized_keys ファイルには、次のような行が含まれている場合があります:

command="rrsync client/logs" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAzG...
command="rrsync -ro results" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAmk...

 

ファイル

~/.ssh/authorized_keys

 

関連項目

rsync(1), rsyncd.conf(5)

 

バージョン

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

 

著作権

rsync は、GNU General Public License の下で配布されます。詳細は、COPYING ファイルを参照してください。

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

 

著者

元の rrsync perl スクリプトは Joe Smith によって書かれました。後に多くの人々がそれに貢献しました。Python バージョンは Wayne Davison によって作成されました。


 

Index

名前
書式
説明
オプション
セキュリティの制限
BASHのセキュリティ問題
例
ファイル
関連項目
バージョン
著作権
著者

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