로컬 네트워크에 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
- 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