Владение и разрешения - это две разные вещи. -p
Флаг сохраняет разрешения . В системах * nix обычные пользователи не могут менять владельца файла на пользователя, который не является самим собой.
Как объяснено здесь :
Только процессы с эффективным идентификатором пользователя, равным идентификатору пользователя файла или с соответствующими привилегиями, могут изменять владельца файла. Если _POSIX_CHOWN_RESTRICTED действует для пути:
Изменение идентификатора пользователя ограничено процессами с соответствующими привилегиями.
Изменение идентификатора группы разрешено для процесса с эффективным идентификатором пользователя, равным идентификатору пользователя файла, но без соответствующих привилегий, если и только если владелец равен идентификатору пользователя файла или (uid_t) -1, а группа равна либо к эффективному идентификатору группы вызывающего процесса, либо к одному из его дополнительных идентификаторов группы.
Объяснение этого было хорошо объяснено @Gilles в этом ответе Unix & Linux:
Причина этого ограничения заключается в том, что передача файла другому пользователю может привести к возникновению плохих вещей в необычных, но все же важных ситуациях. Например:
- Если в системе активированы дисковые квоты, Алиса может создать файл, доступный для записи в мире, в каталоге, доступном только ей (чтобы никто другой не мог получить доступ к этому каталогу, доступному для записи в мире), а затем запустить команду chown, чтобы сделать этот файл владельцем другого пользователя. , После этого файл будет считаться дисковой квотой Билла, даже если файл может использовать только Алиса.
- Если Алиса передает файл Биллу, нет никаких признаков того, что Билл не создал этот файл. Это может быть проблемой, если файл содержит недопустимые или иным образом компрометирующие данные.
- Некоторые программы требуют, чтобы их входной файл принадлежал конкретному пользователю для аутентификации запроса (например, файл содержит некоторые инструкции, которые программа будет выполнять от имени этого пользователя). Обычно это небезопасный дизайн, потому что даже если Билл создал файл, содержащий синтаксически правильные инструкции, он, возможно, не намеревался выполнять их в это конкретное время. Тем не менее, разрешение Алисе создавать файл с произвольным содержимым и принимать его в качестве входных данных от Билла может только усугубить ситуацию.
Таким образом, даже если вы используете --same-owner
флаг tar , вам все равно нужно будет извлечь файлы, root
чтобы сохранить право собственности. Этот флаг включен по умолчанию для root
, так что вы хотите:
sudo tar xpf foo.tgz
tar
что не сможет сделать это также. Пожалуйста, скажите мне, если это сработало.