web-dev-qa-db-ja.com

宛先マシンでSudoでrsyncを使用する

rsyncが期待どおりにUIDとGIDを設定しないという問題 があるため、私の直感では、rsyncは宛先マシンでrootとして実行する必要があります。

SSH経由でrootとしてログインすることはできません。セキュリティ上の理由で無効になっているためです。宛先マシンのユーザーはSudoを使用できます。

rsyncSudoとともに使用することはできますか?

32
Thomas Weller

宛先マシン上

  1. rsyncwhich rsyncへのパスを見つけます
  2. /etc/sudoersファイルを編集します:Sudo visudo(参照: visudoを使用する必要がありますか?
  3. <username> ALL=NOPASSWD:<path to rsync>を追加します。usernameは、rsyncがログオンに使用するユーザーのログイン名です。そのユーザーはSudoを使用できる必要があります

次に、ソースマシンで、Sudo rsyncを使用するように指定します。

rsync ... --rsync-path="Sudo rsync" ...

宛先マシンでNOPASSWDなしで使用すると、メッセージが表示されます

Sudo:ttyが存在せず、askpassプログラムが指定されていません

57
Thomas Weller

私の解決策は--rsync-path="Sudo rsync"を使用することです。パスワードを要求された場合、次のような回避策を使用できます。

rsync -avz --stats --rsync-path="echo <SUDOPASS> | Sudo -Sv && Sudo rsync"  [email protected]:/ .

ただし、コマンドラインにパスワードを入力するのは安全ではありません。

0
Bulat

リモートのSudoにX-windowsを介してパスワードを要求させることができます。これを行う方法は次のとおりです。

  1. ssh-askpassがリモートホストにインストールされていることを確認してください(もちろん、X-windowsを使用していることを確認してください)
  2. これが/etc/Sudo.confにあることを確認してください:
# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass
  1. これらのオプションをrsyncに追加します。-e "ssh -X" --rsync-path="Sudo -A rsync"

    • ssh -Xは、X-windows情報とポートをリモートセッションに転送します
    • Sudo -Aは、sudoがssh-askpassを使用してパスワードを要求するようにします
0
Bill Burdick