tar 아카이브 내의 파일에 대한 파일 소유권 수정 fakeroot정확히 그렇게하는 것으로 나타났습니다 .

사용자로 일하고 있으며 압축을 푼 경우 (루트별로) 루트 소유권으로 파일을 추출합니다 (그렇지 않으면 루트는 파일을 추출한 후 각 파일의 소유권을 수동으로 변경해야 함). 목적지에).

나는 fakeroot정확히 그렇게하는 것으로 나타났습니다 . 그러나 아카이브를 만드는 데 사용해야하는 구문을 찾을 수 없습니다.

루트로 압축을 풀 때 파일이 루트 소유권을 갖도록 tar.xz 아카이브를 작성하려면 어떻게해야합니까?

do something with fakeroot ...
tar cfpJ foo.tar.xz foo/


답변

루트로 압축을 풀 때 파일이 루트 소유권을 갖도록 tar.xz 아카이브를 작성하려면 어떻게해야합니까?

그것은 압축을 푼 루트에 달려 있습니다.

tar --no-same-owner -xf ...

모든 루트를 시작으로 사용하려면 다음을 사용할 수 있습니다.

tar --owner=root --group=root -cf ...

답변

가짜 뿌리

fakeroot 사용의 유틸리티 또는 새로운 유틸리티 fakeroot 사용-NG (같은 목적으로, 다른 구현 기술) 프로그램과 루트로 실행되고있는 프로그램 척을 실행하고 그 시스템은 호출 chown성공했다. 프로그램만이 이러한 호출이 성공했다고 생각하지만 실제로 파일 시스템에는 아무것도 반영되지 fakeroot않습니다 (추가 권한이 없기 때문에 불가능합니다 ). 그러나 프로그램이 파일의 소유권을 변경 한 후 해당 파일의 소유권에 따라 조치를 취하면 프로그램의 동작이 변경 될 수 있습니다.

다음과 같은 상황에서 fakeroot 환경을 실행하여 fakeroot에서 유용한 작업을 수행하는 일반적인 방법 :

  1. 일부 파일을 만들고 이동하고 소유권과 모드를 변경하는 등
  2. 이 파일의 아카이브를 작성하십시오.

예:

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