Разрешения для файлов не сохраняются, а после unarchive tar.gz

Я пытаюсь удалить архив tar.gz с помощью библиотеки Apache Compress (Java).

Как сохранить права доступа к файлам с помощью библиотеки Apache Compress при распаковке tar.gz?

0
задан 18 May 2018 в 09:24

3 ответа

Вы предоставляете слишком мало подробностей, поэтому я делаю предположения относительно своего ответа.

Может быть несколько причин, по которым это не работает должным образом.

Пользователь -id и идентификатор группы, указанные в tar-архиве, не существуют на целевой машине. Целевая (вспомогательная) файловая система, в которой архив не архивируется, не позволяет этим «разрешениям» придерживаться исходных. Это касается файловых систем, отличных от Unix, таких как vfat и ntfs, которые используются для целевых каталогов и файлов. Обычные пользователи вообще этого не могут сделать. Пользователь без полномочий root не может передавать права собственности на файлы и каталоги другим пользователям. Некоторые из целевых каталогов не являются реальными каталогами (например, /proc и /sys), поэтому восстановление файлов в нем не будет работать.

Я не уверен, как работает «Библиотека Apache Compress», но когда мне нужно выполнить аналогичную задачу, я распакую архив с правами root, используя тот же путь, что и пункт назначения для разблокирования. Однако библиотека Apache Compress работает, если она может обрабатывать файлы tar.gz, она должна иметь возможность принимать несколько параметров, аналогичных тем, которые применяются в инструменте tar. Который я бы определенно использовал.

Что-то вроде:

sudo tar xf mytar.tar.gz -C /

гарантирует, что любой файл, который был заархивирован с абсолютным путем, будет возвращен на место с исходными разрешениями и правами собственности как sudo повысит привилегии до нужного уровня, в то время как -C / распакует файлы в нужном месте при условии, что архив tar был создан с абсолютными путями tar , что целевое восстановление необходимо

Теперь, когда вы используете библиотеку, весь процесс должен быть запущен как root, чтобы иметь возможность передать право собственности. Это, в свою очередь, может быть плохой идеей в зависимости от конкретных ограничений и вариантов использования.

Если бы вы могли вместо этого запустить процесс, выполняющий только задачу, не имеющую аналогов, вы бы позволили себе в одиночку эскалировать разрешения с помощью sudo. В этом случае я снова использую tar вместо совершенно новой программы.

Если ваши потребности ограничены правами доступа к файлу без какой-либо информации о владельце, вы можете проверить этот другой ответ мой. Имейте в виду, что разрешения простого доступа не могут работать должным образом, если не соблюдаются правильная информация о владельце.

2
ответ дан 8 June 2018 в 14:09
  • 1
    См. ссылке для более подробной информации – MBaev 18 May 2018 в 11:43
  • 2
    @MBaev имейте в виду, что понятие "pemissions файл" вполне членораздельно: это не просто биты. – Uqbar 18 May 2018 в 19:22

Вы предоставляете слишком мало подробностей, поэтому я делаю предположения относительно своего ответа.

Может быть несколько причин, по которым это не работает должным образом.

Пользователь -id и идентификатор группы, указанные в tar-архиве, не существуют на целевой машине. Целевая (вспомогательная) файловая система, в которой архив не архивируется, не позволяет этим «разрешениям» придерживаться исходных. Это касается файловых систем, отличных от Unix, таких как vfat и ntfs, которые используются для целевых каталогов и файлов. Обычные пользователи вообще этого не могут сделать. Пользователь без полномочий root не может передавать права собственности на файлы и каталоги другим пользователям. Некоторые из целевых каталогов не являются реальными каталогами (например, /proc и /sys), поэтому восстановление файлов в нем не будет работать.

Я не уверен, как работает «Библиотека Apache Compress», но когда мне нужно выполнить аналогичную задачу, я распакую архив с правами root, используя тот же путь, что и пункт назначения для разблокирования. Однако библиотека Apache Compress работает, если она может обрабатывать файлы tar.gz, она должна иметь возможность принимать несколько параметров, аналогичных тем, которые применяются в инструменте tar. Который я бы определенно использовал.

Что-то вроде:

sudo tar xf mytar.tar.gz -C /

гарантирует, что любой файл, который был заархивирован с абсолютным путем, будет возвращен на место с исходными разрешениями и правами собственности как sudo повысит привилегии до нужного уровня, в то время как -C / распакует файлы в нужном месте при условии, что архив tar был создан с абсолютными путями tar , что целевое восстановление необходимо

Теперь, когда вы используете библиотеку, весь процесс должен быть запущен как root, чтобы иметь возможность передать право собственности. Это, в свою очередь, может быть плохой идеей в зависимости от конкретных ограничений и вариантов использования.

Если бы вы могли вместо этого запустить процесс, выполняющий только задачу, не имеющую аналогов, вы бы позволили себе в одиночку эскалировать разрешения с помощью sudo. В этом случае я снова использую tar вместо совершенно новой программы.

Если ваши потребности ограничены правами доступа к файлу без какой-либо информации о владельце, вы можете проверить этот другой ответ мой. Имейте в виду, что разрешения простого доступа не могут работать должным образом, если не соблюдаются правильная информация о владельце.

2
ответ дан 17 July 2018 в 14:01

Вы предоставляете слишком мало подробностей, поэтому я делаю предположения относительно своего ответа.

Может быть несколько причин, по которым это не работает должным образом.

Пользователь -id и идентификатор группы, указанные в tar-архиве, не существуют на целевой машине. Целевая (вспомогательная) файловая система, в которой архив не архивируется, не позволяет этим «разрешениям» придерживаться исходных. Это касается файловых систем, отличных от Unix, таких как vfat и ntfs, которые используются для целевых каталогов и файлов. Обычные пользователи вообще этого не могут сделать. Пользователь без полномочий root не может передавать права собственности на файлы и каталоги другим пользователям. Некоторые из целевых каталогов не являются реальными каталогами (например, /proc и /sys), поэтому восстановление файлов в нем не будет работать.

Я не уверен, как работает «Библиотека Apache Compress», но когда мне нужно выполнить аналогичную задачу, я распакую архив с правами root, используя тот же путь, что и пункт назначения для разблокирования. Однако библиотека Apache Compress работает, если она может обрабатывать файлы tar.gz, она должна иметь возможность принимать несколько параметров, аналогичных тем, которые применяются в инструменте tar. Который я бы определенно использовал.

Что-то вроде:

sudo tar xf mytar.tar.gz -C /

гарантирует, что любой файл, который был заархивирован с абсолютным путем, будет возвращен на место с исходными разрешениями и правами собственности как sudo повысит привилегии до нужного уровня, в то время как -C / распакует файлы в нужном месте при условии, что архив tar был создан с абсолютными путями tar , что целевое восстановление необходимо

Теперь, когда вы используете библиотеку, весь процесс должен быть запущен как root, чтобы иметь возможность передать право собственности. Это, в свою очередь, может быть плохой идеей в зависимости от конкретных ограничений и вариантов использования.

Если бы вы могли вместо этого запустить процесс, выполняющий только задачу, не имеющую аналогов, вы бы позволили себе в одиночку эскалировать разрешения с помощью sudo. В этом случае я снова использую tar вместо совершенно новой программы.

Если ваши потребности ограничены правами доступа к файлу без какой-либо информации о владельце, вы можете проверить этот другой ответ мой. Имейте в виду, что разрешения простого доступа не могут работать должным образом, если не соблюдаются правильная информация о владельце.

2
ответ дан 20 July 2018 в 14:05

Другие вопросы по тегам:

Похожие вопросы: