「sudo rsync」でファイルを別のコンピュータに転送するには、ターゲットコンピュータのルートパスワードが必要なのはなぜですか? [コピー]

「sudo rsync」でファイルを別のコンピュータに転送するには、ターゲットコンピュータのルートパスワードが必要なのはなぜですか? [コピー]

ディレクトリを別のコンピュータに転送しようとしています。

$ rsync -a --delete --stats -h wget 'olive:/tmp'

Number of files: 5 (reg: 4, dir: 1)
Number of created files: 5 (reg: 4, dir: 1)
Number of deleted files: 0
Number of regular files transferred: 4
Total file size: 12.94K bytes
Total transferred file size: 12.94K bytes
Literal data: 12.94K bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 13.31K
Total bytes received: 103

sent 13.31K bytes  received 103 bytes  5.36K bytes/sec
total size is 12.94K  speedup is 0.96

ソースディレクトリにローカルルート権限を必要とするいくつかのファイルが含まれている場合は追加しますsudo。これは正しいですか?

しかし、なぜ他のコンピュータのルートパスワードを尋ね続けるのですか?宛先ルートのパスワードを入力しましたが、引き続きパスワードの入力を求めます。

$ sudo rsync -a --delete --stats -h wget 'olive:/tmp'
root@olive's password: 
Permission denied, please try again.
root@olive's password: 

ローカルルート権限を必要とするソースファイルをコピーするにはどうすればよいですか?

提案された重複エントリを試しましたが、成功しませんでした。

$ sudo rsync -e 'ssh -i /home/t/.ssh/id_rsa' -a --delete --stats -h wget 'olive:/tmp'
root@olive's password: 
Permission denied, please try again.
root@olive's password: 

ありがとうございます。

ベストアンサー1

最後の例では、root以外のユーザー名はですt

を使用するsshか、リモートユーザー名を指定しないと、ツールはリモートユーザー名がローカルユーザー名と同じであると見なします。したがって、最初の例のコマンドは次のようになります。scprsync

rsync -a --delete --stats -h wget 'olive:/tmp'

次のように明示的に作成できます。

rsync -a --delete --stats -h wget 't@olive:/tmp'

コマンドの前にプレフィックスを付けると、ユーザー名が変更され、コマンドラインの残りの部分は(使用しない限り)sudo実行されます。rootsudo -u <username>

2番目の例は次のとおりです。

sudo rsync -a --delete --stats -h wget 'olive:/tmp'

これで、次のようになります。

sudo rsync -a --delete --stats -h wget 'root@olive:/tmp'

コマンドがrsyncrootとして実行され、リモートユーザー名が定義されていないため、リモート側でrootアカウントを使用してrsync操作を実行するとします。


回避策:rsyncwithを使用するときにsudo使用したいリモートユーザー名を明確にしてください。

sudo rsync -a --delete --stats -h wget 't@olive:/tmp'

または、これが機能しない場合(つまり、設定sudoでそのオプションを有効にしてコマンドを実行するユーザーと一致するように実行されるコマンドの環境変数をalways_set_home変更する)、3番目の例の次の形式を試してください。$HOME

sudo rsync -e 'ssh -i /home/t/.ssh/id_rsa' -a --delete --stats -h wget 't@olive:/tmp'

この形式では、rsyncコマンドはローカルで実行されますが、ユーザーとしてログインしますroot。これは、最初の例に基づいてSSHキーを設定するようです。olivet

いいえ、ユーザー名ではありません。持つaの両端が同じですrsync(またはscpリモートユーザー名を省略することは、ユーザー名の一般的なケースを減らして表現したものです)。はい同じ。

おすすめ記事