rsync 권한이 거부되었습니다(13). 내가 뭘 잘못했나요?

rsync 권한이 거부되었습니다(13). 내가 뭘 잘못했나요?

내 웹사이트 데이터를 새 서버로 이전하려고 하는데 이 오류가 계속 발생합니다. 공개 키 액세스를 설정하고 .txt 파일을 사용하여 rsync를 완료할 수 있었습니다. 그런 다음 디렉터리를 시도하고 싶었지만 작동하지 않았습니다. rsync를 처음 사용하므로 더 많은 정보가 필요하면 알려주시기 바랍니다.

편집하다: 둘 다 원격 서버이며 이전 것은 Ubuntu 14.04.4이고 새 것은 Ubuntu 18.04.3입니다.

각 디렉터리에 대해 sudo 권한이 있지만 이동하려는 디렉터리를 소유하지 않을 수도 있습니다. 어떻게 답을 찾는지 모르겠습니다.

$ rsync -rt /var/www [email protected]:/home
rsync: recv_generator: mkdir "/home/www" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-config.php") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-mail.php") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wordpress") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-signup.php") failed: Permission denied (13)
rsync: readlink_stat("/var/www/vhosts/testing.site.org/wp-trackback.php") failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]

답변1

이 부분은 다음과 같습니다.

rsync: recv_generator: mkdir "/home/www" failed: Permission denied (13)

사용자에게 kiana충분한 권한이 없다고 말하는 것 같습니다 /home.쓰다그것에.

폴더 권한을 확인하는 방법

ls -l | grep home원격 서버에서 이를 실행하면 /폴더 소유자가 누구인지, 폴더에 어떤 액세스 권한이 있는지 알려줍니다. -폴더에 대한 기준은 해당 폴더 권한을 갖는 것 home입니다 (자세한 내용은root:root755여기에 폴더 및 파일 권한이 있습니다.)

$ ls -l | grep home
drwxr-xr-x   3 root root  4096 21 mar 14.24 home

root이 출력은 그룹이 있는 사용자가 root폴더를 소유하고(d) home모든 권한(rwx)을 갖고 있는 반면, 그룹의 다른 사용자 root및 다른 사용자는 읽기/실행 권한(rx)은 있지만 읽기/실행 권한(rx)은 없음을 보여줍니다.쓰다허용하다.

-권한이 있는 사용자 sudo는 인증 후 일시적으로 루트 권한을 가질 수 있음을 의미하며 이는 에 유용합니다 rsync.

결론적으로

root귀하는 작업을 수행하는 실제 사용자가 아니기 때문에 (보안상의 이유로 그렇게 해서는 안 됨) 폴더에 대한 쓰기 권한이 rsync없습니다 . 사용자가 쓸 수 있는 다른 위치(예: 등 ) /home에 웹서버 데이터를 저장해 보는 것이 좋습니다 .kiana/tmp//opt/

답변2

또 다른 해결책은 rsync 명령을 추가하는 것입니다 --rsync-path="sudo rsync". 그렇다면 다음 문제는 원격 서버에서 입력할 수 없다는 것입니다(tty도 없고 대화형 프롬프트도 없습니다). 적어도 하나의 해결 방법은 다음과 같습니다.일시적으로사용자의 sudoers 줄에 설정하세요 NOPASSWD:(안전하지 않음: sudo 비밀번호가 없습니다!). rsync 명령이 실행된 후 안전하지 않은 구성을 삭제할 수 있습니다.

중간 정도의 보안 수준이라도 남용하려면 먼저 누군가가 서버에 로그인해야 합니다 sudo. 하지만 장점과 단점을 비교해 보세요.

답변3

/home 디렉토리 권한은 일반적으로 루트만 쓸 수 있습니다.
예를 들어 내 컴퓨터에서 ls를 실행하면 루트/루트가 표시됩니다.

$ ls -laF /home
total 12
drwxr-xr-x  3 root     root     4096 Aug 20  2018 ./
drwxr-xr-x 24 root     root     4096 Sep  3 09:00 ../

가장 좋은 방법은 실행 중인 시스템에 SSH를 통해 접속하고 /home에 디렉터리를 만드는 것입니다.

#Note the sudo, or you'd have to su to root
sudo mkdir /home/www 
#Then change the ownership so the user kiana can write to it:
sudo chown kiana:kiana /home/www

관련 정보