답변:
루트로 압축을 풀 때 파일이 루트 소유권을 갖도록 tar.xz 아카이브를 작성하려면 어떻게해야합니까?
그것은 압축을 푼 루트에 달려 있습니다.
tar --no-same-owner -xf ...
모든 루트를 시작으로 사용하려면 다음을 사용할 수 있습니다.
tar --owner=root --group=root -cf ...
-
당신의 짧은 옵션 문자열 전에 : tar --owner=root --group=root -cfpJ ...
즉 -cfpJ
,하지 cfpJ
.
tar --owner=root --group=root -cfpJ files.tar.xz files/
나에게 또 다른 오류가 발생합니다 : tar: files.tar.xz: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errors
또한라는 파일을 만듭니다 pJ
.
f
끝 부분에 (더 직관적이고 직관적으로 이해하기 때문에) 낮고 보라, -cfpJ
그러나 나는 BUT -cpJf
작품 과 동일한 실패를 얻는다 .
fakeroot 사용의 유틸리티 또는 새로운 유틸리티 fakeroot 사용-NG (같은 목적으로, 다른 구현 기술) 프로그램과 루트로 실행되고있는 프로그램 척을 실행하고 그 시스템은 호출 chown
성공했다. 프로그램만이 이러한 호출이 성공했다고 생각하지만 실제로 파일 시스템에는 아무것도 반영되지 fakeroot
않습니다 (추가 권한이 없기 때문에 불가능합니다 ). 그러나 프로그램이 파일의 소유권을 변경 한 후 해당 파일의 소유권에 따라 조치를 취하면 프로그램의 동작이 변경 될 수 있습니다.
다음과 같은 상황에서 fakeroot 환경을 실행하여 fakeroot에서 유용한 작업을 수행하는 일반적인 방법 :
예:
fakeroot sh -c '
chown root:root usr/bin/foo
tar cf foo.tar usr
'
호출 fakeroot
간에 메모리가 없으므로 단일 호출을 사용해야합니다 .
완전성을 기하기 위해 리눅스 커널이 3.8 이상인 경우 네임 스페이스 는 루트 루트 환경을 만드는 또 다른 방법입니다. userland 지원은 아직 충분하지 않으므로 더 자세히 설명하지 않겠습니다.
문제점을 해결하는 다른 방법은 아카이브를 디렉토리로 마운트하는 것입니다. 압축 된 tar를 포함하여 libarchive 를 통해 여러 아카이브 형식을 수정할 수있는 archivemount 를 사용할 수 있습니다 .
mkdir mnt
archivemount foo.tar.xz mnt
chown root:root mnt/usr/bin/foo
fusermount -u mnt
archivemount
이지만 여전히 권한 상승이 필요하며 사용자가 마운트 및 마운트 해제 할 수있는 신뢰할 수있는 그룹에 있더라도 프로세스가 실패 chown
하므로 fakeroot
네임 스페이스 와 같은 타사 도구 또는 네임 스페이스를 사용해야합니다. .
tar --owner=root --group=root cfpJ files.tar.xz files/
나 오류 제공tar: You must specify one of the
-Acdtrux '또는--test-label' options Try
타르 --help'나tar --usage' for more information.