2013-01-16 11 views
8

Celem jest synchronizacja folderów lokalnych i zdalnych przez ssh.Synchronizowanie katalogów lokalnych i zdalnych za pomocą rsync + ssh + klucz publiczny jako użytkownik inny niż właściciel klucza ssh

Mój obecny użytkownik user1 i mam mniej hasłem konfiguracja dostępu przez SSH do serwera server1. Chcę zsynchronizować folder lokalny z folderem pod numerem serwer1 przy pomocy narzędzia rsync. Normalnie bym uruchomić:

rsync -rtvz /path/to/local/folder server1:/path/to/remote/folder 

ssh prace dostępu zgodnie z oczekiwaniami, rsync jest w stanie połączyć się przez ssh, ale zwraca "Permission denied" błąd ponieważ na serwer1 do folderu /path/to/remote/folder jest jest własnością użytkownika użytkownik2: użytkownik2. Uprawnienia do plików w folderze nie zezwalają na ich modyfikację przez nikogo innego. user1 jest sudoer na serwer1 tak sudo su - user2 utwory podczas ssh sesji. Jak ustawić rsync, aby przełączyć użytkownika, gdy zostanie on przetransferowany na serwer?

Dodawanie user1 do grupy użytkownik2 nie jest opcją, ponieważ wszystkie zarządzanie użytkownik/grupa na serwerze odbywa się automatycznie i powielane z centralnym repo co X minut, że nie mają dostępu.

To samo dotyczy zmiany uprawnień/prawa własności do folderu docelowego: jest ono automatycznie aktualizowane na bieżąco z resetem wszystkich uprawnień.

Możliwe rozwiązanie przychodzi mi do głowy to skrypt, który synchronizuje lokalny folder tymczasowy pośredniego zdalnym folderze należącym user1 na serwerze, a następnie synchronizuje dwa piloty foldery jako użytkownik2.

Googling dla krótszego i ładniejszego rozwiązania nie przyniósł żadnego sukcesu.

Odpowiedz

5

nie próbowałem go przez siebie, ale jak o użyciu rsync jest '--rsync-path' opcję?

rsync -rtvz --rsync-path='sudo -u user2 rsync' /path/to/local/folder server1:/path/to/remote/folder 
+0

To jest dokładnie to, czego potrzebuję. Działa zgodnie z oczekiwaniami. Wielkie dzięki! – schatten

0

Konfigurowanie hasłem mniejszy dostęp do user1 dostępu do użytkownik2 @ server1, a następnie wykonaj:

rsync -rtvz /path/to/local/folder [email protected]:/path/to/remote/folder 
+1

Czy chodzi ci o dodanie publicznego klucza _user1_ do listy autoryzowanych kluczy ssh użytkownika _user2_? Jeśli tak, te również zostaną nadpisane. – schatten

1

Aby rozwiązać ten problem uprawnienia trzeba uruchomić rsync nad sesji SSH, który loguje się zdalnie jako użytkownik2:

rsync avz -e 'ssh -i privatekeyfile' /path/to/local/folder/ [email protected]:/path/to/local/folder 

Poniższa odpowiedź wyjaśnia, jak skonfigurować klucze SSH.

+0

Nie ma problemu z uprawnieniami. _user1_ ma ustawione klucze SSH, a _user1_ jest sudoerem na zdalnym komputerze. Tak więc potencjalnie _user1_ ma wszystkie potrzebne uprawnienia do wykonania zadania rsync. – schatten

+0

@schatten To jest problem uprawnień. Domyślnie rsync nie użyje sudo, jak pokazała Twoja zaakceptowana odpowiedź. Właściwie to całkiem sprytnie, jak można w ten sposób zaadaptować rsync! –

Powiązane problemy