リモートユーザーとsudoを使用してリモートからフォルダをコピーする方法は?次のいずれも権限のあるフォルダでは機能しません。権限が拒否されると失敗します。
scp -r [email protected]:/source/ /destination/
sudo scp -r [email protected]:/source/ /destination/
リモートでsshを実行して実行すると、sudo su
これらのファイルとフォルダを表示できます。scp
SSHベースである限り、それが使用されたかどうかは私にとって重要ではありません。
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に保存する必要があります。