sudo tar zmienia wyodrębnioną własność plików nieznanemu użytkownikowi

10

Uruchamiam to polecenie:

$ sudo tar xvzf nexus-latest-bundle.tar.gz

Wyodrębnione pliki należą do nieznanego (1001) użytkownika:

drwxr-xr-x 8     1001     1001      4096 Dec 16 18:37 nexus-2.12.0-01
drwxr-xr-x 3     1001     1001      4096 Dec 16 18:47 sonatype-work

Czy nie powinien to być użytkownik root w normalnej konfiguracji?

Pracuję nad instalacją Linuksa zreplikowaną z AWS AMI.

raspacorp
źródło

Odpowiedzi:

15

Podczas rozpakowywania plików jako root, tar użyje oryginalnej własności. Możesz to zmienić, korzystając z --no-same-owneropcji (alternatywnie -o).

Twój plik tar odnosi się do użytkownika / grupy, które nie istnieją w systemie, w którym go rozpakowałeś.

Jeśli wyodrębnisz pliki jako Ty (użytkownik nieuprzywilejowany), możesz tworzyć tylko pliki należące do Ciebie.

Podręcznik tar GNU mówi:

--same-owner
Podczas rozpakowywania archiwum, tar będzie próbował zachować właściciela określonego w archiwum tar z tą opcją. Jest to domyślne zachowanie superużytkownika; ta opcja działa tylko dla zwykłych użytkowników. Zobacz rozdział Obsługa atrybutów plików .

Thomas Dickey
źródło
1
Ok, więc dzieje się tak tylko wtedy, gdy jestem rootem, ponieważ jeśli uruchomię polecenie bez sudo: „tar xzvf nexus-latest-bundle.tar.gz”, wówczas własność zostanie ustawiona na mojego bieżącego użytkownika, czy to oczekiwane zachowanie?
raspacorp
2
@raspacorp: Jako użytkownik inny niż root, nie masz uprawnień do tworzenia plików z własnością inną niż własna. Z konieczności pliki są tworzone z Tobą jako właścicielem.
Nate Eldredge
1

Osoba, która utworzyła plik tar, miała efektywny identyfikator użytkownika i identyfikator grupy (UID: GID) wynoszący 1001: 1001. Ponieważ tardomyślnie zachowuje prawa własności i uprawnienia, po rozwinięciu dziedziczymy te wartości. Jeśli masz w systemie użytkownika o identyfikatorze UID: GID 1001: 1001, pliki te byłyby własnością tego użytkownika.

MelBurslan
źródło