tar 아카이브 내의 파일에 대한 파일 소유권 수정


10

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

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

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

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

답변:


12

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

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

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

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

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

그것은 나를 위해하지 작업 않습니다 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.
user1968963

당신은 필요 -당신의 짧은 옵션 문자열 전에 : tar --owner=root --group=root -cfpJ ...-cfpJ,하지 cfpJ.
goldilocks

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.
user1968963

3
괜찮아. 나는 항상 f끝 부분에 (더 직관적이고 직관적으로 이해하기 때문에) 낮고 보라, -cfpJ그러나 나는 BUT -cpJf작품 과 동일한 실패를 얻는다 .
goldilocks

@ user1968963 : f는 "다음 매개 변수는 파일 이름"을 의미하므로 항상 파일 이름 바로 앞에 있어야합니다. 파일 이름 바로 앞에 파일을 넣지 않으면 tar는 파일 이름이 ""인 것으로 생각하고 ""파일을 열려고 시도합니다.
Olivier Dulac

8

가짜 뿌리

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

좋은 트릭 archivemount이지만 여전히 권한 상승이 필요하며 사용자가 마운트 및 마운트 해제 할 수있는 신뢰할 수있는 그룹에 있더라도 프로세스가 실패 chown하므로 fakeroot네임 스페이스 와 같은 타사 도구 또는 네임 스페이스를 사용해야합니다. .
Anton Samsonov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.