Dies ist meine Topologie:
My laptop ==> Ubuntu Desktop
| | |
User: root & saeed
My server ==> Ubuntu 20.04
| | |
Users: root & ubuntu (I deleted it as I explain below)
Die Schritte:
- Ich führe es
tar zvcf back.tar.gz .
auf meinem Laptop mit dem Benutzer aussaeed
und die Datei wird erstellt. - Ich lade diese Datei per SFTP auf meinen Server hoch, indem ich
root
den Benutzer im Pfadbeispiel verwende/home/test
, das nicht das Home-Verzeichnis eines Benutzers ist. - Ich extrahiere
back.tar.gz
,/home/test
sehe aber, dass alle Dateien und Verzeichnisse besitzenubuntu:ubuntu
. - Ich habe
ubuntu
den Benutzer gelöscht und den dritten Schritt versucht, aber das Ergebnis war dasselbe. - Ich habe es
back.tar.gz
auf meinem Laptop in einem anderen Pfad extrahiert, aber alle Dateibesitzer sindsaeed:saeed
.
Warum passiert das?
Antwort1
Beim Extrahieren als Root tar
wird standardmäßig die ursprüngliche Besitzer-ID beibehalten. Der Benutzer saeed
hat zufällig dieselbe ID wie ubuntu
auf dem anderen Computer (und es ist wahrscheinlich 1000
). Sie können die IDs überprüfen id saeed
, indem Sie ausführen oder einfach id
den aktuellen Benutzer überprüfen.
Wenn Sie die Benutzer-ID nicht beibehalten möchten, extrahieren Sie entweder nicht als Root oder verwenden Sie die --no-same-owner
Option. Relevantes Fragment aus demHandbuch:
--no-same-owner
Extract files as yourself (default for ordinary users).
Das Gegenteil kann für normale Benutzer mit erreicht werden --same-owner
.
Verwandte Optionen --owner
und --owner-map
können beim Erstellen eines Archivs verwendet werden:
--owner=NAME[:UID]
Force NAME as owner for added files. If UID is not
supplied, NAME can be either a user name or numeric UID.
In this case the missing part (UID or name) will be
inferred from the current host's user database.
When used with --owner-map=FILE, affects only those files
whose owner is not listed in FILE.
--owner-map=FILE
Read owner translation map from FILE. Empty lines are
ignored. Comments are introduced with # sign and extend
to the end of line. Each non-empty line in FILE defines
translation for a single UID. It must consist of two
fields, delimited by any amount of whitespace:
OLDUSR NEWUSR[:NEWUID]
OLDUSR is either a valid user name or a UID prefixed with
+. Unless NEWUID is supplied, NEWUSR must also be either
a valid user name or a +UID. Otherwise, both NEWUSR and
NEWUID need not be listed in the system user database.
As a result, each input file owned by OLDUSR will be
stored in archive with owner name NEWUSR and UID NEWUID.