ローカルネットワークには2つのUbuntuサーバー(12.04.5 LTSと16.04.1 LTS)があります。私は両方のサーバーの管理者であり、そのサーバーのスーパーユーザーになることができます。各サーバーがAとBであると仮定し、サーバーAにログインします。
AのファイルをBのディレクトリにコピーするには、そのファイルを配置するためにBのroot権限が必要です。どうすればいいですか?
私の試みは次のとおりですが、サーバーBに権限がないため、成功しませんでした。
sudo scp /foobar/foo/bar.txt user@serverB:/bar.txt
scp: /bar.txt: Permission denied
sudo権限は、宛先ディレクトリではなくソースディレクトリの権限にのみ影響します。
もちろん、ターゲットディレクトリの権限を適切に変更すると、権限なしエラーなしでファイルをコピーできます。しかし、ファイルをコピーするたびに権限を変更するのはやや面倒です。
さらに、Ubuntuのデフォルト設定では、ルートが両方のサーバーにログインすることはできません。
もし良い方法知っていれば教えてください。私はbashシェルを使います。
答え1
通常のユーザー(rootではない)で元のシステムのファイルを読み取ることができる場合は、push scpの代わりにpull scpを使用することを検討してください。
serverB:~$ sudo scp user@serverA:/foobar/foo/bar.txt /bar.txt
ソースコンピュータからファイルを読み取れない場合は、上記の2つの手順を実行する必要があります。複数のコンピュータでsudoを動作させることはできません。
答え2
うーん…サーバーBにディレクトリを作成するのはどうですか?いいえ高い権限が必要な場合は、ファイルをその場所にコピーし、サーバーBにログインして目的の場所に移動します。キス。
答え3
エクスパンダで使用できるrsync
ように、次のガイドラインに従ってください。sudo
- rsync パスを探します。
which rsync
- /etc/sudoers ファイルを編集します。
sudo visudo
- ログインに使用するユーザーのログイン名を含む
<username> ALL=NOPASSWD:<path to rsync>
行を追加します。このユーザーはsudoを使用できる必要があります。username
rsync
次に、ソースマシンでsudo rsync
次のものを使用する必要があることを指定します。
rsync ... --rsync-path="sudo rsync" ...
ターゲットマシンでそれを使用しないと、NOPASSWD
次のメッセージが表示されます。
sudo: no tty present and no askpass program specified