사용자를 보존하지 않고 tar

사용자를 보존하지 않고 tar

http 배포를 위해 일부 파일을 압축하고 싶지만 .tar.gz사용자 이름과 사용자 ID가 보존되어 있는데 이를 수행하지 않을 방법이 없는 것 같습니까? (tar에는 --numeric-owner사용자 이름을 무시하는 것처럼 보이지만 여전히 사용자 ID를 유지하는 옵션이 있습니다.)

.tar.gz내 시스템이 내 사용자 ID와 사용자 이름을 가진 유일한 시스템일 수 있으므로 파일 배포에 좋지 않은 선택이라는 의미입니까 ? 파일 배포에 더 좋은 형식이 있습니까 .7z? 아니면 다른 제안 사항이 있습니까?

답변1

일반적으로 .tar.gz는 사용 가능한 파일 배포 형식입니다. GNU tar를 사용하면 소유권과 권한을 보존할 수 없습니다.

$ tar -c -f archive.tar --owner=0 --group=0 --no-same-owner --no-same-permissions .

https://www.gnu.org/software/tar/manual/html_section/tar_33.html#SEC69

tar 버전이 GNU 옵션을 지원하지 않는 경우 배포용 tar.gz 파일을 만들기 전에 소스 파일을 다른 디렉터리 트리에 복사하고 그룹과 소유권을 업데이트할 수 있습니다.

--owner=0그리고 --group=0압축 해제 단계가 아닌 파일 압축 단계에서만 작동합니다.
--no-same-owner --no-same-permissions압축 단계가 아닌 압축 해제 단계에서만 작동합니다.
함께 사용하면 tar가 파일을 압축하거나 압축을 푸는 것을 기억하지 못하는 사용자처럼 동작하는 기본 기능을 형성합니다.
파일이 압축 중에 사용자 및 그룹 0에 저장되면 GUI를 통해 압축을 푸는 동안 파일을 압축 해제하는 사용자의 권한을 가정하므로 압축 단계에서 사용자를 잊어버리는 것이 유효한 솔루션입니다.

답변2

tar --owner=0 --group=0setup root/everything you own 과 같은 것을 찾고 있습니다 root.

답변3

GNU에서는 --numeric-ownertar를 사용하여 사용자 이름이 저장되는 것을 방지할 수 있습니다. 또는 를 사용하여 다른 사용자 ID를 설정할 수 있습니다 --owner=ID. 추출 시 추출기가 루트가 아닌 경우 이러한 사용자 ID는 삭제됩니다.

파일을 묶는 일반적인 방법은 cpio일반적으로 --no-preserve-owner옵션을 사용하는 것입니다. rpm파일은 이렇게 구성됩니다 .

그러나 사용자 ID가 포함된 tar는 거의 문제가 되지 않습니다. 조금 더 편집증을 갖고 싶다면 궁극적인 번들링을 위한 전용 계정을 사용할 수 있습니다.

답변4

tar이러한 파일을 마치 다른 소유자가 있는 것처럼 기만적으로 처리할 수 있습니다.가근성.

Fakeroot는 getuid(), stat() 등의 대체 버전이 있는 라이브러리에 LD_PRELOAD를 설정하여 파일 작업에 대한 루트 권한이 있는 것으로 보이는 환경에서 명령을 실행합니다. 이는 사용자가 파일에 루트 권한/소유권이 있는 아카이브(tar, ar, .deb .rpm 등)를 생성할 수 있도록 하는 데 유용합니다.

처음에는 모든 파일이 루트 소유로 표시되지만 chown셸 내부에서 해당 파일을 가져올 수 fakeroot있으며 후속 명령에 새 소유자가 표시됩니다.

관련 정보