Używanie rsync z sudo na maszynie docelowej


Odpowiedzi:


68

Na maszynie docelowej

  1. Znajdź ścieżkę do rsync:which rsync
  2. Edytuj /etc/sudoersplik: sudo visudo(patrz też: czy muszę używać visudo? )
  3. Dodaj wiersz <username> ALL=NOPASSWD:<path to rsync>, w którym nazwa użytkownika to nazwa użytkownika, którego rsync użyje do zalogowania. Ten użytkownik musi mieć możliwość korzystaniasudo

Następnie na maszynie źródłowej określ, która sudo rsyncma być używana:

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

Używanie go bez NOPASSWDurządzenia docelowego spowoduje wyświetlenie komunikatu

sudo: brak tty i nie określono programu askpass


Jaka jest modyfikacja tego, która pozwoliłaby na to każdemu użytkownikowi z określonej grupy? Czy zamiast <nazwa użytkownika> istnieje wersja <nazwa grupy>?
Brian

3
Dzięki, tylko używam pki, więc użyłem-e="ssh -i $PRIVATE_KEY_PATH" --rsync-path="sudo rsync"
AT

1
Oczywiście <nazwa użytkownika> może teraz odczytywać / zapisywać wszystko jako root przy użyciu rsync, lokalnie i zdalnie, więc część niemożności zalogowania się jako root z powodów bezpieczeństwa jest trochę dyskusyjna ... ponieważ zasadniczo robisz to teraz .
hmn

1
Nadal pojawia się błąd „nie jest obecny ...” po wykonaniu tych instrukcji? Byłam. Upewnienie się, że linia, do której dodałem, /etc/sudoersznajduje się na końcu pliku (lub po regułach grupowych, które mogą mieć wpływ na tego samego użytkownika) rozwiązało problem.
CPBL

1
Korzystam z tego rozwiązania, ale chciałbym poprawić bezpieczeństwo, ograniczając argumenty, które użytkownik może przekazać do rsync na serwerze docelowym. Zazwyczaj ograniczałbym argumenty, których można używać, <username> ALL=NOPASSWD:<path to rsync> <args>ale nie wiem, jakie byłyby argumenty, gdy byłyby wywoływane w ten sposób zdalnie. Jakieś pomysły?
Pete Cornell

3

Możesz poprosić zdalnego sudo o podanie hasła za pomocą X-Windows. Oto sposób, aby to zrobić:

  1. Upewnij się, że ssh-askpassjest zainstalowany na zdalnym hoście (i oczywiście używasz X-Windows)
  2. Upewnij się, że to jest w /etc/sudo.conf:
# Path to askpass helper program
Path askpass /usr/bin/ssh-askpass
  1. Dodaj te opcje do rsync: -e "ssh -X" --rsync-path="sudo -A rsync"

    • ssh -X przekaże informacje o X-Windowsie i port do sesji zdalnej
    • sudo -A sprawi, że sudo użyje ssh-askpass, aby poprosić cię o hasło

Działa na Ubuntu 18; utwórz /etc/sudo.conf (jeśli jeszcze nie istnieje) w miejscu docelowym m / c
Snidhi Sofpro

0

Moim rozwiązaniem jest użycie --rsync-path="sudo rsync", jeśli poprosisz o hasło, możesz użyć obejścia takiego:

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

Ale umieszczenie hasła w wierszu polecenia nie jest bezpieczne.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.