Chciałbym utworzyć plik tar z zawartością należącą do właściciela: pary grup, które nie istnieją w systemie, z którego tworzony jest plik.
Oto kierunek, który próbowałem:
tar ca --owner='otherowner' --group='othergroup' mydata.tgz mydata
Podczas uruchamiania tego polecenia pojawia się następujący błąd:
tar: otherowner: Invalid owner
tar: Error is not recoverable: exiting now
Czy istnieje sposób zmuszenia tar do zaakceptowania właściciela: grupy, nawet jeśli żadne z nich nie istnieje w systemie, z którego tworzony jest plik?
permissions
users
tar
David
źródło
źródło
Odpowiedzi:
Linux nie używa wewnętrznie nazw właścicieli i grup, ale numery - UID i GID. Nazwy użytkowników i grup są mapowane z zawartości plików / etc / passwd i / etc / group dla wygody użytkownika. Ponieważ nie masz wpisu „inny właściciel” w żadnym z tych plików, Linux tak naprawdę nie wie, który UID i GID należy przypisać do pliku. Spróbujmy zamiast tego podać liczbę:
Wydaje się, że działa.
źródło
-tvf
flag. Aby wyświetlić bieżące liczby plików w archiwum, użyj następującego polecenia:$ tar --numeric-owner -tvf archive.tar
--numeric-owner
flagi. Co ciekawsze, możesz ustawić oba za pomocą--owner=name:1234
lub--group=groupname:4711
. Źródło: funkcja parse_owner_group kodu źródłowego tarDodaj parametry za
--no-same-owner --no-same-permissions
pomocątar
. Weź przyjrzeć docs .źródło
Oto fragment kodu, który w locie zastępuje użytkownika / grupę identyfikatorami:
źródło