대상 시스템에서 sudo와 함께 rsync 사용


답변:


68

대상 컴퓨터에서

  1. 경로를 찾으십시오 rsync.which rsync
  2. /etc/sudoers파일을 편집하십시오 sudo visudo(참조 : visudo를 사용해야합니까? ).
  3. 행을 추가하십시오 <username> ALL=NOPASSWD:<path to rsync>. 여기서 username 은 rsync가 로그온하는 데 사용할 사용자의 로그인 이름입니다. 해당 사용자는 사용할 수 있어야합니다sudo

그런 다음 소스 머신에서 다음을 사용하도록 지정하십시오 sudo rsync.

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

NOPASSWD대상 컴퓨터에서 사용하지 않고 사용 하면 메시지가 표시됩니다

sudo : tty가없고 askpass 프로그램이 지정되지 않았습니다.


특정 그룹의 사용자가이 작업을 수행 할 수 있도록 수정 한 내용은 무엇입니까? <username> 대신 <groupname> 버전이 있습니까?
Brian

3
내가 사용하는, 그래서 덕분에, 단지 내가 PKI를 사용-e="ssh -i $PRIVATE_KEY_PATH" --rsync-path="sudo rsync"
AT를

1
물론 <username>은 rsync, 로컬 및 원격을 사용하여 루트로 모든 것을 읽고 쓸 수 있으므로 보안 문제로 인해 루트로 로그인 할 수없는 부분은 다소 무의미합니다 ... 원인은 지금 그렇게하고 있습니다. .
hmn

1
이 지침을 따른 후에도 "not tty present ..."오류가 계속 발생합니까? 나는 ~이었다. 내가 추가 한 줄 /etc/sudoers이 파일의 끝 부분에 오게 (또는 동일한 사용자에게 영향을 줄 수있는 그룹 규칙 이후) 나에게 문제가 해결 되었는지 확인하십시오 .
CPBL

1
이 솔루션을 사용하고 있지만 대상 서버에서 rsync에 전달할 수있는 인수를 제한하여 보안을 향상시키고 싶습니다. 일반적으로 함께 사용할 수있는 인수를 제한 <username> ALL=NOPASSWD:<path to rsync> <args>하지만 원격으로 호출 할 때 인수가 무엇인지 알 수 없습니다. 어떤 아이디어?
피트 코넬

2

원격 sudo가 X-windows를 통해 비밀번호를 묻도록 할 수 있습니다. 이를 수행하는 방법은 다음과 같습니다.

  1. ssh-askpass원격 호스트에 설치되어 있는지 그리고 물론 X-windows를 사용하고 있는지 확인하십시오.
  2. 이것이 다음에 있는지 확인하십시오 /etc/sudo.conf.
# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass
  1. rsync에 다음 옵션을 추가하십시오. -e "ssh -X" --rsync-path="sudo -A rsync"

    • ssh -X X-windows 정보와 포트를 원격 세션으로 전달합니다
    • sudo -A sudo에서 ssh-askpass를 사용하여 비밀번호를 묻습니다.

0

내 솔루션은을 사용 --rsync-path="sudo rsync"하는 것입니다. 암호를 요청하면 다음과 같은 해결 방법을 사용할 수 있습니다.

rsync -avz --stats --rsync-path="echo <SUDOPASS> | sudo -Sv && sudo rsync"  user@192.168.1.2:/ .

그러나 이것은 암호를 명령 줄에 넣는 것이 안전하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.