Sử dụng rsync với sudo trên máy đích


Câu trả lời:


68

Trên máy đích

  1. Tìm ra đường dẫn đến rsync:which rsync
  2. Chỉnh sửa /etc/sudoerstập tin: sudo visudo(xem thêm: tôi có phải sử dụng visudo không? )
  3. Thêm dòng <username> ALL=NOPASSWD:<path to rsync>, trong đó tên người dùng là tên đăng nhập của người dùng mà rsync sẽ sử dụng để đăng nhập. Người dùng đó phải có khả năng sử dụngsudo

Sau đó, trên máy nguồn, xác định rằng sudo rsyncsẽ được sử dụng:

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

Sử dụng nó mà không có NOPASSWDmáy đích sẽ dẫn đến thông báo

sudo: không có tty hiện tại và không có chương trình hỏi


Điều chỉnh này sẽ cho phép bất kỳ người dùng nào trong một nhóm cụ thể thực hiện việc này? Thay vì <tên người dùng> có phiên bản <tên nhóm> không?
Brian

3
Cảm ơn, chỉ có tôi sử dụng pki nên tôi đã sử dụng-e="ssh -i $PRIVATE_KEY_PATH" --rsync-path="sudo rsync"
AT

1
Tất nhiên <tên người dùng> hiện có thể đọc / ghi mọi thứ dưới dạng root bằng rsync, cục bộ và từ xa, do đó, phần không thể đăng nhập bằng root do lo ngại bảo mật là do ... về cơ bản bạn đang làm điều đó ngay bây giờ .
hmn

1
Vẫn nhận được lỗi "không tty hiện ..." sau khi làm theo các hướng dẫn này? Tôi đã. Đảm bảo rằng dòng tôi đã thêm vào /etc/sudoerscuối tệp (hoặc sau bất kỳ quy tắc nhóm nào có thể ảnh hưởng đến cùng một người dùng) đã giải quyết vấn đề cho tôi.
CPBL

1
Tôi đang sử dụng giải pháp này nhưng muốn cải thiện bảo mật bằng cách hạn chế các đối số mà người dùng có thể chuyển sang rsync trên máy chủ đích. Thông thường tôi sẽ giới hạn các đối số có thể được sử dụng <username> ALL=NOPASSWD:<path to rsync> <args>nhưng tôi không biết các đối số sẽ là gì khi được gọi từ xa như thế này. Có ý kiến ​​gì không?
Pete Cornell

3

Bạn có thể yêu cầu sudo từ xa hỏi bạn mật khẩu của bạn thông qua X-windows. Đây là một cách để làm điều đó:

  1. Đảm bảo ssh-askpassđược cài đặt trên máy chủ từ xa (và tất nhiên là bạn đang sử dụng X-windows)
  2. Hãy chắc chắn rằng đây là trong /etc/sudo.conf :
# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass
  1. Thêm các tùy chọn này vào rsync: -e "ssh -X" --rsync-path="sudo -A rsync"

    • ssh -X sẽ chuyển tiếp thông tin và cổng X của bạn tới phiên từ xa
    • sudo -A sẽ khiến sudo sử dụng ssh-askpass để hỏi bạn mật khẩu của bạn

Hoạt động trên Ubuntu 18; tạo /etc/sudo.conf (nếu nó chưa tồn tại) trên đích đến m / c
Snidhi Sofpro

0

Giải pháp của tôi là sử dụng --rsync-path="sudo rsync", nếu nó hỏi mật khẩu, bạn có thể sử dụng cách giải quyết như thế này:

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

Nhưng điều này không an toàn để đặt mật khẩu trong dòng lệnh.

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.