
限られたrsyncスクリプトを見てみると、同期、これはで言及されていますman rsync
。デフォルトでは、クライアントコマンドはSSHを介して実行されるリモートコマンド rsync
にすべてのオプションを渡すようです。人々がサーバーが許可するパスとオプションを制限するために使用する200行以上のPerlスクリプト。これに対する私の最初の反応は「悪」でした。このオプションが実際にどのように使用されるかについて、文書が意図的にあいまいであることは役に立ちません。rsync
rrsync
rsync
--server
また、2016年のバグレポートには次のような内容が記載されています。巨大なセキュリティ欠陥存在するrrsync
。まだ解決されていません。
:-(
私は法的目的とオプションの定義を好みますrsyncd.conf
。また、SSH暗号化と認証を使用してrsyncサーバーへの接続を保護したいと思います。
それそうだ~/.authorized_keys
同様に、制限オプションを持つプライベートSSHキーを使用してこれを実行できますcommand="/usr/bin/rsync --server --daemon --config=./rsyncd.conf .",restrict
。たとえば、rsync
デーモン構文を使用してクライアントコマンドを実行できますrsync -e "ssh" "$SOURCE_PATH" "$SSH_HOST"::"$RSYNC_MODULE"/"$DEST_PATH"
。
(SSHキーを使用していない場合は、/etc/sshd_config
専用ユーザー、Match、およびForceCommandを使用して同じ操作を実行できますが、現在はブランケットに対応するものはなく、restrict
すべての権限を個別に無効にする必要があります。)
この作品は信頼できますか?
いくつかの他のオプションをテストしました。クライアントコマンドにオプションを追加しても(rsync
例:rsync --server --daemon .
-vlogDtprze.iLsf --numeric-ids
質問:上記の内容を信頼できますか?それとは対照的に、クライアントが別のオプションセットを使用してデーモンサーバーを起動する必要がある状況はありますか?
3番目のパラメータ - .
- 別の値に設定されていますか?それは何をしますか? ?
答え1
はい、私の考えはかなり安全な家庭だと思います。
これがうまくいく自然な方法です。これらの詳細を文書化することは避けましたが、今後のバージョンでも引き続き同じ方法で動作する可能性が高くなります。コマンドラインオプションはrsync --server
実際にはネットワークプロトコルの一部であり、通常以前のバージョンと互換性があります。
- ソースコード
- 「Literature Review」(いくつかの推奨事項、否定的なレビューなし)
1. ソースコード
ソースコードは、「daemon_over_rsh」モードでは、常にコマンドラインオプションのみを使用してサーバー側を実行することが非常に明確に見えます--server --daemon .
。
rsync
(たとえば、他のオプションを実行できるオプションがあると思います/home/alan/rsync-custom-build/rsync
。しかし、そうしていることを既にご存知です。)
2390 void server_options(char **args, int *argc_p)
2391 {
2392 static char argstr[64];
2393 int ac = *argc_p;
2394 uchar where;
2395 char *arg;
2396 int i, x;
2397
2398 /* This should always remain first on the server's command-line. */
2399 args[ac++] = "--server";
2400
2401 if (daemon_over_rsh > 0) {
2402 args[ac++] = "--daemon";
2403 *argc_p = ac;
2404 /* if we're passing --daemon, we're done */
2405 return;
2406 }
512 server_options(args,&argc);
513
514 if (argc >= MAX_ARGS - 2)
515 goto arg_overflow;
516 }
517
518 args[argc++] = ".";
519
520 if (!daemon_over_rsh) {
...
534 }
535
536 args[argc] = NULL;
3番目のパラメータ -
.
- 別の値に設定されていますか?それは何をしますか? ?
いいえ、何もしません。
オプションではない引数が少なくとも1つ必要です。これがなければ、メッセージがrsync
印刷さ--help
れ、終了コード1が返されます。を実行すると、rsync --server --daemon
ヘルプメッセージがstderr(つまり端末)の代わりにsyslogに書き込まれます。
これは必須ですが、オプションではない引数はrsync --server --daemon
完全に無視されます。
1661 if (argc < 1) {
1662 usage(FERROR);
1663 exit_cleanup(RERR_SYNTAX);
1664 }
1665
1666 if (am_server) {
1667 set_nonblocking(STDIN_FILENO);
1668 set_nonblocking(STDOUT_FILENO);
1669 if (am_daemon)
1670 return start_daemon(STDIN_FILENO, STDOUT_FILENO);
1671 start_server(STDIN_FILENO, STDOUT_FILENO, argc, argv);
1672 }
2.文学評論」
Google クエリ:
- rsyncデーモンサーバー(sshd_config forcecommand)または(authorized_keysコマンド)
- SSHによるrsyncデーモンモード
結果の最初のページをスキャンしました。この特定の問題についていくつかの肯定的な提案を見つけましたが、否定的なフィードバックはありませんでした。否定的なフィードバックがないことは強力な証拠ではありません。セキュリティの脆弱性は私にとってrrsync
より重要な問題のようですが、「rrsync」munge link」を検索する必要がありました。 Google では外部参照が見つからず、バグレポート自体のみが見つかりました。
- https://gist.github.com/trendels/6582e95012f6c7fc6542
- https://indico.cern.ch/event/577279/contributions/2354037/attachments/1366772/2071442/Hepsysman-keeping-in-sync.pdf
- https://serverfault.com/questions/6367/cant-get-rsync-to-work-in-daemon-over-ssh-mode
- 何らかの理由で/代わりにカスタムシェルを使用する専用ユーザーを使用する
command=""
珍しいバリエーション:ForceCommand
http://mennucc1.debian.net/howto-ssh-rsyncd.html