Dateieigentümer ändert sich nach dem Extrahieren in Ubuntu zu irrelevantem Benutzer

Dateieigentümer ändert sich nach dem Extrahieren in Ubuntu zu irrelevantem Benutzer

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:

  1. Ich führe es tar zvcf back.tar.gz .auf meinem Laptop mit dem Benutzer aus saeedund die Datei wird erstellt.
  2. Ich lade diese Datei per SFTP auf meinen Server hoch, indem ich rootden Benutzer im Pfadbeispiel verwende /home/test, das nicht das Home-Verzeichnis eines Benutzers ist.
  3. Ich extrahiere back.tar.gz, /home/testsehe aber, dass alle Dateien und Verzeichnisse besitzen ubuntu:ubuntu.
  4. Ich habe ubuntuden Benutzer gelöscht und den dritten Schritt versucht, aber das Ergebnis war dasselbe.
  5. Ich habe es back.tar.gzauf meinem Laptop in einem anderen Pfad extrahiert, aber alle Dateibesitzer sind saeed:saeed.

Warum passiert das?

Antwort1

Beim Extrahieren als Root tarwird standardmäßig die ursprüngliche Besitzer-ID beibehalten. Der Benutzer saeedhat zufällig dieselbe ID wie ubuntuauf dem anderen Computer (und es ist wahrscheinlich 1000). Sie können die IDs überprüfen id saeed, indem Sie ausführen oder einfach idden 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-ownerOption. 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 --ownerund --owner-mapkö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.

verwandte Informationen