リモートユーザーとsudoを使用してリモートからフォルダをコピーする方法は? [コピー]

リモートユーザーとsudoを使用してリモートからフォルダをコピーする方法は? [コピー]

リモートユーザーとsudoを使用してリモートからフォルダをコピーする方法は?次のいずれも権限のあるフォルダでは機能しません。権限が拒否されると失敗します。

scp -r [email protected]:/source/ /destination/
sudo scp -r [email protected]:/source/ /destination/

リモートでsshを実行して実行すると、sudo suこれらのファイルとフォルダを表示できます。scpSSHベースである限り、それが使用されたかどうかは私にとって重要ではありません。

scpおそらく、これはセキュリティ上の利点としてsudo権限を使用することによる制限です。ただし、SSHを介してsudo suすべてのフォルダを実行して表示できますが、リモートからダウンロードできないことは本当に面倒です(tarダウンロードを介してこの問題を解決できますが)。

答え1

自分がNOPASSWDアクセス権(すべてのコマンドまたは「tar」または「cat」へのアクセス)を持っているか付与できると仮定すると、次のようになります。

# For a single file
ssh [email protected] 'sudo cat /source/SINGLE_FILE' > /destination/SINGLE_FILE

# for recursive copying, use tar or cpio
ssh [email protected] 'sudo tar -C /source/ -czf - .' | tar -C /destination/ -xzf -

リモート側でsudoを実行し、stdoutを書き込むプログラムを介してファイルをstdinを読み取るプログラムに転送する必要があります。

sudoパスワードを入力する必要がある場合は状況が悪くなりますが、rsyncサーバーとポート転送を使用すると可能です。

答え2

どのユーザーが使用すべきかを確認してくださいsudo地元のまたは離れて(または両方)ユーザーですか?つまり、sudo scp影響を与える地元のコマンドを実行できるユーザーの権限scp

回避策 -sourceファイルを別のディレクトリに移動してみてください。離れてユーザーの所有権と権限と書き込み権限の確認地元のユーザーはdestinationフォルダを作成する必要がある場所にいます。

引っ越してsourceみてください離れてユーザーのホームディレクトリ - そのディレクトリが配置されているパスです~(おそらくサーバーセキュリティポリシーの結果である可能性があります)。

答え3

取得したいファイルには変更権限(この特定のファイルとフォルダに対するrootまたは読み取り不可の権限を所有する)が必要です。これを取得する最も簡単な方法は、ユーザーの代わりにrootとしてscpを実行することです。

scp -r [email protected]:/source /destination/

SSH経由でrootログインを有効にする(RedHatから)

セキュリティの観点からこれらを許可しないことをお勧めしますが、これを行う必要がある場合は、キーを使用して/root/.ssh/authorized_keysに保存する必要があります。

関連情報