Что делает -p
отметьте на самом деле сохраняют при создании и извлечении tarball? Действительно ли это rwx
полномочия это сохраняет?
Когда я создал a htdocs/
tarball, принадлежавший корню, извлекая его к моей локальной машине, изменил владение от корня до моего пользователя.
Владение и полномочия являются двумя разными вещами. -p
консервы флага полномочия . На *отклоняют системы, обычные пользователи не могут изменить принадлежность файла пользователю, который не является самостоятельно.
, Как объяснено здесь :
Только процессы с эффективным идентификатором пользователя, равным идентификатору пользователя файла или с соответствующими полномочиями, могут изменить владение файла. Если _POSIX_CHOWN_RESTRICTED в действительности для пути:
Изменение идентификатора пользователя ограничивается процессами с соответствующими полномочиями.
Изменение идентификатора группы разрешено к процессу с эффективным идентификатором пользователя, равным идентификатору пользователя файла, но без соответствующих полномочий, если и только если владелец равен идентификатору пользователя или (uid_t) файла-1 и группе, равно или эффективному идентификатору группы обработки вызовов или одному из его дополнительных идентификаторов группы.
объяснение позади этого было приятно объяснено @Gilles в этот Unix & ответ Linux:
причина этого ограничения состоит в том, что отдача файла другому пользователю может позволить плохим вещам произойти в редких, но все еще важных ситуациях. Например:
- , Если системе включили выделенные дисковые пространства, Alice могла бы создать мировой перезаписываемый файл в соответствии с каталогом, доступным только ею (таким образом, никто больше не мог получить доступ к тому мировому перезаписываемому каталогу), и затем работайте показанный сделать тот файл принадлежавшим другому пользователю Bill. Файл тогда рассчитал бы под выделенным дисковым пространством Bill даже при том, что только Alice может использовать файл.
- , Если Alice отдает файл Bill, нет никакой трассировки, что Bill не создал тот файл. Это может быть проблемой, если файл содержит недопустимые или иначе идущие на компромисс данные.
- Некоторые программы требуют, чтобы их входной файл принадлежал конкретному пользователю для аутентификации запроса (например, файл содержит некоторые инструкции, что программа будет работать от имени того пользователя). Это обычно - не безопасный дизайн, потому что, даже если Bill создал файл, содержащий синтаксически корректные инструкции, он, возможно, не намеревался выполнить их в определенное время. Тем не менее, разрешению Alice создать файл с произвольным содержанием и взяли, это как вход от Bill может только сделать вещи хуже.
Так, даже при использовании tar --same-owner
флаг необходимо будет все еще извлечь файлы как root
для сохранения владения. Тот флаг идет по умолчанию для root
, поэтому что Вы хотите:
sudo tar xpf foo.tgz
Чтобы сохранить владельца, выполненного как корень или использовать - флаг того-же-владельца вместе с-p, отмечают при извлечении.
Существует еще 2 опции для tar, которые интересны:
--same-owner
try extracting files with the same ownership as exists in the ar‐
chive (default for superuser)
--no-same-owner
extract files as yourself (**default for ordinary users**)
2-й является значением по умолчанию, таким образом, можно добавить --same-owner
для сохранения пользователя. Вероятно, необходимо будет сделать это с sudo
.
, Помимо который: это будет - только работать над системами тот POSIX поддержки. И операционные системы кроме Ubuntu не могли бы иметь этих 2 опций (они не являются стандартными).