sudo 기능을 bash 쉘의 대상 디렉터리/파일로 확장할 수 있나요?

sudo 기능을 bash 쉘의 대상 디렉터리/파일로 확장할 수 있나요?

로컬 네트워크에 2개의 Ubuntu 서버(12.04.5 LTS 및 16.04.1 LTS)가 있습니다. 저는 두 서버의 관리자이며 해당 서버의 수퍼유저가 될 수 있습니다. 각 서버가 A와 B라고 가정하고 이제 서버 A에 로그인합니다.

A에 있는 파일을 B에 있는 디렉터리로 복사하려면 해당 파일을 배치하기 위해 B의 루트 권한이 필요합니다. 어떻게 해야 합니까?

내 시도는 다음과 같지만 서버 B에 권한이 없으므로 성공하지 못했습니다.

sudo scp /foobar/foo/bar.txt user@serverB:/bar.txt
scp: /bar.txt: Permission denied

sudo 권한은 대상 디렉터리가 아닌 소스 디렉터리의 권한에만 영향을 미칩니다.

물론 대상 디렉터리에 대한 권한을 적절하게 변경하면 권한 없음 오류 없이 파일을 복사할 수 있습니다. 하지만 파일을 복사할 때마다 권한을 변경하는 것은 다소 귀찮습니다.

게다가 Ubuntu의 기본 구성에서는 루트가 두 서버 모두에 로그인하는 것을 허용하지 않습니다.

혹시 좋은 방법 아시면 가르쳐 주세요. 저는 bash 쉘을 사용합니다.

답변1

일반 사용자(루트 아님)로 원본 시스템의 파일을 읽을 수 있는 경우 push scp 대신 pull scp 사용을 고려하세요.

serverB:~$ sudo scp user@serverA:/foobar/foo/bar.txt /bar.txt

원본 컴퓨터에서 파일을 읽을 수 없는 경우 설명한 두 단계를 수행해야 합니다. 여러 컴퓨터에서 sudo가 작동하도록 할 수 없습니다.

답변2

흠... 서버 B에 디렉터리를 만드는 게 어떨까요?아니요높은 권한이 필요한 경우 파일을 해당 위치에 복사한 다음 서버 B에 로그인한 상태에서 원하는 위치로 이동하세요.키스.

답변3

확장기에서 사용할 rsync수 있도록 다음 지침을 따르는 것이 좋습니다 .sudo

  1. rsync 경로를 찾으십시오.which rsync
  2. /etc/sudoers 파일을 편집합니다.sudo visudo
  3. 로그인에 사용할 사용자의 로그인 이름이 <username> ALL=NOPASSWD:<path to rsync>있는 행을 추가합니다 . 이 사용자는 sudo를 사용할 수 있어야 합니다.usernamersync

그런 다음 소스 머신에서 sudo rsync다음을 사용해야 함을 지정합니다.

rsync ... --rsync-path="sudo rsync" ...

대상 머신에서 이를 사용하지 않으면 NOPASSWD다음 메시지가 나타납니다.

sudo: no tty present and no askpass program specified

관련 정보