Quyền rsync bị từ chối sao lưu một thư mục từ xa vào máy cục bộ của tôi


11

Tôi nhận được lỗi được đề cập trong tiêu đề.

Tôi tìm thấy câu hỏi tương tự: Chạy rsync với quyền root trên máy từ xa . Điều đó không trả lời câu hỏi của tôi.

Tôi là quản trị viên trên máy chủ từ xa và tôi muốn sử dụng rsyncđể sao lưu các tệp vào hộp cục bộ của mình. Đây là lệnh rsync của tôi:

$ rsync -avz me@myserver.com:/var/www/ /backups/Sites/MySite/

Nó chủ yếu hoạt động. Đăng nhập là thông qua một khóa. Tôi không và không thể sử dụng mật khẩu (EDIT: để đăng nhập qua SSH). Chỉ một vài tập tin sẽ không được chuyển do quyền. Tôi không muốn thay đổi các quyền đó.

Đây là lỗi:

receiving file list ... done
rsync: send_files failed to open "/var/www/webapp/securestuff/install.php": Permission denied (13)

Tôi không muốn thay đổi quyền trên tập tin đó. Nó (và những người khác thích nó) không nên đọc được (ngoại trừ bằng root).

Điều này phải chạy trong một công việc định kỳ và tôi thích một giải pháp một dòng đơn giản chỉ sử dụng lệnh rsync. Lựa chọn tiếp theo sẽ là một kịch bản shell mà tôi có thể gọi từ công việc định kỳ. Trong mọi trường hợp, tôi không thể đăng nhập thủ công vào máy từ xa và trở thành root (vì tôi sẽ ngủ khi nó chạy.

Làm cách nào tôi có thể sử dụng rsync để sao lưu vào hộp cục bộ của mình?


bạn có thể vui lòng chỉ cho chúng tôi một cái gì đó như ssh me@myserver.com "cat /var/www/webapp/securestuff/install.php"> localfile không?
Florenz Kley

@Florenz Kley: Tôi không hiểu nhận xét của bạn
MountainX

cho tôi thấy rằng bạn có thể đọc tệp và tôi chỉ cho bạn một lệnh rsync hoạt động :-). Lựa chọn số 2 từ grawity có lẽ là đặt cược tốt nhất của bạn.
Florenz Kley

@Florenz Kley: ssh me@myserver.com "echo mypassword | sudo -S cat /var/www/webapp/securestuff/install.php"> localfile
MountainX

Tôi nhận được rsync: send_files failed to open "/cygdrive/...": Permission denied (13). Vì vậy, máy tính nguồn của tôi là Windows cygwin. Hoàn toàn khác nhau, nhưng đối với hậu thế, giải pháp của tôi là nhấp chuột phải vào cmd.exe và Chạy với tư cách quản trị viên .
Bob Stein

Câu trả lời:


8

Bạn không thể sao lưu một tệp mà bạn không thể đọc khác, vì vậy các quyền sẽ phải được thay đổi hoặc ghi đè bằng root .

Tùy chọn của bạn chi tiết hơn:

  • Ghi đè các quyền bằng cách đồng bộ hóa root@myserver.comtrực tiếp. (

  • ... hoặc bằng cách định cấu hình sudo trên máy chủ để cho phép chạy mật khẩu của rsyncthành phần phía máy chủ.

    me    ALL=(root) NOPASSWD: /usr/bin/rsync --server --sender -vlogDtprze.iLsf . /var/www/
    

    rsync --rsh="ssh me@myserver.com sudo" -avz /var/www/ /backups/...
    
  • Tạo một tài khoản "sao lưu trang web" chuyên dụng trên máy chủ. Thay đổi quyền của tệp để làm cho chúng có thể đọc được vào tài khoản "sao lưu trang web"; bạn có thể sử dụng ACL và setfaclcho điều đó. Không sử dụng tài khoản này cho bất cứ điều gì khác.

    rsync -avz website-backup@myserver.com:/var/www/ /backups/sites/mysite/
    
  • Viết một tập lệnh trên máy chủ sẽ kết xuất / var / www / vào một tarball được mã hóa. Một lần nữa, điều này có thể được thực hiện dưới dạng root (thông qua crontab) hoặc bằng cách cấu hình sudo để không yêu cầu mật khẩu cho tập lệnh đó. Ví dụ:

    #!/bin/sh
    tar c /var/www/ | gpg -e -r mountainx@example.com
    

    Sao lưu sẽ được thực hiện bằng cách kéo toàn bộ tarball mỗi lần, điều này có thể không hiệu quả với các trang web lớn:

    ssh me@myserver.com "sudo /usr/sbin/dump-website" > /backups/sites/mysite.tar.gpg
    

    Yêu cầu mật khẩu sẽ được xóa bằng cách chỉnh sửa sudoers :

    me     ALL=(root) NOPASSWD: /usr/sbin/dump-website
    

Cảm ơn. Gợi ý tốt. Một trong hai có thể sẽ làm việc cho tôi. Tôi cũng đang xem xét sử dụng giải pháp tại superuser.com/questions/270911/, nếu tôi có thể tìm ra tác dụng phụ tiềm năng của nó.
MountainX

BTW, tôi có nghĩa là một trong hai lựa chọn cuối cùng. Đăng nhập bằng root thông qua SSH không được phép trên máy chủ.
MountainX

@MaxX: Tôi tách ra "rsync qua sudo" như một lựa chọn riêng biệt. Nó có thể làm việc như là tốt.
dùng1686

Cảm ơn! "Rsync via sudo" sẽ là lựa chọn ưa thích của tôi. Tôi sẽ làm thử lời đề nghị của bạn. Có vẻ như tôi cần thực hiện điều này bằng cách sử dụng visudo trên Ubuntu trên máy chủ. Tôi đã không nhầm lẫn với visudo nhiều, nhưng bạn đã cho tôi đủ để tôi bắt đầu. Cảm ơn một lần nữa.
MountainX

5

Trong máy chủ từ xa, bạn có thể chạy rsync daemon với

gốc uid

trong /etc/rsyncd.conftập tin

Điều này sẽ cho phép trình nền sử dụng CAP_DAC_OVERRIDEkhả năng và đọc hệ thống tệp cục bộ mà không thay đổi quyền / quyền sở hữu.

Nếu bạn chỉ cần tạo một bản sao lưu thì nên đặt rsync thành chế độ chỉ đọc:

chỉ đọc = đúng


0

Nếu các tệp chỉ có thể đọc được, rootbạn cần có rootquyền truy cập để sao lưu tệp bằng cách đọc tệp từ hệ thống tệp. rsyncđang đọc các tệp từ hệ thống tệp chứ không phải từ thiết bị thô.

Với ngoại lệ dump, ddvà sao lưu tương tự sao chép phân vùng đúng hơn là các chương trình file, sao lưu đọc các tập tin từ hệ thống tập tin. Các tiện ích sao lưu sẽ không thể đọc và sao lưu các tệp mà các quyền của id người dùng được sử dụng để chạy chúng ngăn chặn truy cập. Đây là trường hợp bạn đang chạy vào.

Trong hầu hết các trường hợp, bạn cần tin tưởng vào phần mềm sao lưu của mình đủ để cho phép nó đọc tất cả dữ liệu của bạn. Điều này cũng có nghĩa là bạn cần tin tưởng vào phương tiện sao lưu của mình với tất cả dữ liệu của bạn. Trong một số trường hợp, bạn có thể muốn loại trừ một số tệp khỏi bản sao lưu và sử dụng một phương pháp thay thế để sao lưu nội dung của chúng.

EDIT: Khi bạn đang lưu trữ dữ liệu (sao chép tất cả các quyền), bạn sẽ cần quyền truy cập root trên cả hai máy chủ. Nếu bạn đang làm điều này như một bản sao lưu, bạn có thể muốn xem xét một giải pháp như BackupPC sử dụng rsync để đọc các tệp, nhưng lưu trữ các tệp trong cây thư mục riêng của nó.


Có nhiều cách để cấp quyền truy cập root rsync. Tôi chỉ không biết họ. Những gì tôi đang yêu cầu là làm thế nào để cấp quyền truy cập root rsync để sao lưu các tệp này. Có lẽ tôi cần xem lại câu trả lời cho "Chạy rsync với quyền root trên máy từ xa" và xem liệu tôi có thể tìm ra nó không ...
MountainX
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.