Владелец файла после извлечения меняется на несоответствующего пользователя в Ubuntu

Владелец файла после извлечения меняется на несоответствующего пользователя в Ubuntu

Вот моя топология:

My laptop ==> Ubuntu Desktop
| | |
User: root & saeed

My server ==> Ubuntu 20.04
| | |
Users: root & ubuntu (I deleted it as I explain below)

Шаги:

  1. Я запускаю tar zvcf back.tar.gz .на своем ноутбуке под учетной записью пользователя, saeedи файл создается.
  2. Я загружаю этот файл через SFTP на свой сервер, используя rootuser в path example /home/test, который не является домашним каталогом ни одного пользователя.
  3. Я извлекаю back.tar.gz, /home/testно вижу, что владельцем всех файлов и каталогов является ubuntu:ubuntu.
  4. Я удалил ubuntuпользователя и попробовал третий шаг, но результат тот же.
  5. Я извлек его back.tar.gzна свой ноутбук по другому пути, но все владельцы файлов — saeed:saeed.

Почему это происходит?

решение1

При извлечении как root, tarпо умолчанию сохраняется оригинальный идентификатор владельца. У пользователя saeedслучайно оказался тот же идентификатор, что и ubuntuна другом компьютере (и, вероятно, это 1000). Вы можете проверить идентификаторы, запустив id saeed, или просто idпроверить текущего пользователя.

Если вы не хотите сохранять идентификатор пользователя, либо не извлекайте как root, либо используйте опцию --no-same-owner. Соответствующий фрагмент изруководство:

       --no-same-owner
              Extract files as yourself (default for ordinary users).

Для обычных пользователей можно добиться обратного с помощью --same-owner.

Связанные параметры --owner, которые --owner-mapможно использовать при создании архива:

       --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.

Связанный контент