sudo tar меняет владельца извлеченных файлов на неизвестного пользователя

10

Я запускаю эту команду:

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

Извлеченные файлы принадлежат неизвестному (1001) пользователю:

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

Разве это не должен быть root-владелец при нормальной конфигурации?

Я работаю над установкой Linux, реплицированной с AWS AMI.

raspacorp
источник

Ответы:

15

При извлечении файлов с правами суперпользователя tar будет использовать первоначальную собственность. Вы можете переопределить это, используя --no-same-ownerопцию (альтернативно, -o).

Ваш tar-файл ссылается на пользователя / группу, которых нет в системе, где вы его распаковали.

Если вы извлекаете файлы как себя (непривилегированный пользователь), вы можете создавать только файлы, принадлежащие вам.

В руководстве по GNU tar говорится:

--same-owner
При извлечении архива tar попытается сохранить владельца, указанного в архиве tar, с этой опцией. Это поведение по умолчанию для суперпользователя; эта опция действует только для обычных пользователей. Смотрите раздел Обработка атрибутов файла .

Томас Дики
источник
1
Итак, это происходит только когда пользователь root, потому что, если я запускаю команду без sudo: 'tar xzvf nexus-latest-bundle.tar.gz', то владельцем моего текущего пользователя будет владение, это ожидаемое поведение?
raspacorp
2
@raspacorp: Как пользователь без полномочий root, у вас нет прав на создание файлов с правами собственности, кроме ваших собственных. Таким образом, по необходимости, файлы создаются с вами в качестве владельца.
Нейт Элдредж
1

Человек, создавший файл tar, имел эффективный идентификатор пользователя и идентификатор группы (UID: GID) 1001: 1001. Поскольку tarпо умолчанию сохраняются права владения и разрешения, при расширении вы наследуете эти значения. Если в вашей системе есть пользователь с UID: GID 1001: 1001, эти файлы принадлежат этому пользователю.

MelBurslan
источник