사용자로 일하고 있으며 압축을 푼 경우 (루트별로) 루트 소유권으로 파일을 추출합니다 (그렇지 않으면 루트는 파일을 추출한 후 각 파일의 소유권을 수동으로 변경해야 함). 목적지에).
나는 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에서 유용한 작업을 수행하는 일반적인 방법 :
- 일부 파일을 만들고 이동하고 소유권과 모드를 변경하는 등
- 이 파일의 아카이브를 작성하십시오.
예:
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