it-swarm-ja.com

SudoユーザーとしてSCPを実行する方法

重複の可能性:
Sudoを使用したリモートサーバーへのscp

Sudoユーザーとして1つのボックスから別のボックスにSCPを実行する最良の方法は何ですか。 2つのサーバーがあります

サーバーA

10.152.2.10

/home/Oracle/export/files.txt

ユーザー:デプロイ

サーバーB

10.152.2.11

/ home/Oracle/import /

ユーザー:デプロイ
Sudoユーザー:/ usr/local/bin/tester

私が欲しいのは、SudoユーザーとしてサーバーAからサーバーBにファイルをコピーすることだけです...

これを行うには、最初に通常、ターゲットサーバーにデプロイユーザーとしてログインし、次にパスワードなしでSudoユーザーとして切り替えます。

そのSCPがファイルをコピーした後、これは私がこのアクティビティを実行する通常の方法です...

Auotmateするために私はスクリプトを書きました

#!/bin/sh
ssh [email protected] 
Sudo /usr/local/bin/tester "./tester/deploy.sh"

デプロイユーザーの秘密鍵を生成したので、パスワードなしでデプロイユーザーとしてログインできます。 Sudoコマンドが実行された後、ユーザーをテスターに​​切り替えます。

その後は何も起こりません..スクリプトが実行されていないことを意味します...これを別の方法で実行する方法はありますか...

4
Ramesh.T

次のように、sshのラッパーを作成できます。

#!/usr/bin/Perl
use strict;
my $added = 0;
$added ||= s/^scp /Sudo $&/ for @ARGV;
exec "ssh", @ARGV;

実行可能にし、次のようにscpを実行します。

scp -S ./ssh-wrapper somefile anotherfile hostname.domain.tld:path /

これは、リモートサーバー上のSudoがパスワードを必要としない場合(またはパスワードがキャッシュされている場合)にのみ機能しますが、何もないよりはましです。

10
user1686

私が正しく理解していれば、ファイルは通常のユーザーがアクセスできない場所にあるため、Sudoが必要ですか?また、rootパスワードをお持ちでない場合、または何らかの理由で使用したくない場合は、

1つの解決策は、通常のユーザーがアクセスできる場所にファイルをコピーして(必要に応じて、ファイルのアクセス権も変更して)、scpを実行することです。

0
zpon