RPM 또는 DEB 패키지에서 파일 소유권이 중요한 이유는 무엇입니까?

RPM 또는 DEB 패키지에서 파일 소유권이 중요한 이유는 무엇입니까?

문맥:

.deb패키지를 변환하여 .rpm사용 하려고 합니다 .외계인, 저는 다음 명령을 사용합니다:

$ alien -r foo.deb

그런데 이렇게 불평합니다.

> Warning: alien is not running as root!
> Warning: Ownerships of files in the generated packages will probably be wrong.

alien필요한 것은 출력용으로 소유한 파일 을 root생성할 수 있는 권한이 있는지 확인하는 것 뿐이라고 생각 하지만 확실하지 않습니다.foo.debrootfoo.rpm

질문:

  1. 패키지에는 항상 일부 root파일이 필요합니까?
  2. root왜 소유 문서가 필요합니까 ?
  3. 내가 틀렸다면 왜 alien필요한가요 root?

답변1

뿌리 줄기를 사용하십시오. Alien은 특정 비트를 작동하기 위해 루트가 필요하지 않습니다. fakeroot 매뉴얼 페이지의 한 줄은 이를 잘 요약합니다:

파일 작업을 위한 가짜 루트 권한이 있는 환경에서 명령 실행

따라서 fakeroot는 문제의 명령이 루트로 실행되고 있고 파일 권한이 있어야 할 곳에서 루트로 설정되어 있다고 믿게 만드는 프로그램입니다. 자세한 내용은 을 참조하십시오 man fakeroot.

안타깝게도 귀하가 받은 오류 메시지는 오해의 소지가 있습니다.

요컨대,

fakeroot alien ...

이것은 Alien 작가 Joey Hess가 fakeroot 사용의 필요성에 대해 논의한 버그 보고서입니다. 아마도 최고의 링크는 아닐 것입니다. 더 나은 것을 찾으면 게시하겠습니다.

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=16289

답변2

파일의 소유권을 변경하려면 "루트" 권한이 필요하기 때문입니다. 파일을 "루트"가 소유해야 하기 때문이 아닙니다. 물론 많은 파일이 그렇습니다.

홈 디렉터리에 파일을 만들고 소유자를 변경해 보세요.

touch test.txt
ls -l test.txt
-rw-rw-r--. 1 gareth gareth 0 Jun 28 21:24 test.txt
chown nobody. test.txt
chown: changing ownership of ‘test.txt’: Operation not permitted

파일을 소유하고 rw권한이 있지만 소유자를 변경할 수는 없습니다.

sudo chown nobody. test.txt
ls -l test.txt
-rw-rw-r--. 1 nobody gareth 0 Jun 28 21:24 test.txt

그러나 루트로 실행하면 sudo작동합니다.

경고에 따르면 소유권이 잘못되었습니다. 이를 통해 alien일부 파일의 소유권이 변경되었다고 가정할 수 있습니다.

시스템 파일은 일반적으로 제한된 권한을 가진 "루트"의 소유이므로 귀하와 나와 같은 사용자는 해당 파일을 변경하거나 삭제할 수 없습니다.

시스템에는 다른 사용자와 그룹이 있지만 "루트"와 달리 배포판 전체에서 동일하지 않습니다. 예를 들어 Fedora(및 RedHat 및 CentOS)에서는 Apache웹 서버가 실행 apache되고 데이터 파일은 이 사용자가 소유합니다. 반면에 Debian/Ubuntu 시스템에서 Apache실행되고 있다고 생각하므로 www-data데이터 파일은 해당 사용자가 소유합니다. 즉, alien변환 시 파일 소유자를 변경해야 하며, 이를 위해서는 위의 예와 같이 "루트"로 실행해야 합니다.

답변3

Rpm 및 deb 패키지에는 설치할 파일 아카이브가 포함되어 있습니다(CPIOrpm으로 아카이브,아스팔트deb의 경우). 이러한 아카이브에는 이름, 수정된 날짜, 해당 파일이 속한 사용자 및 그룹, 권한을 포함하여 각 파일에 대한 메타데이터가 포함되어 있습니다. 패키지가 설치된 후 각 파일은 궁극적으로 아카이브에 설명된 소유권을 갖게 됩니다(설치 후 스크립트에 의해 수정되지 않는 한).

패키지에 의해 설치된 대부분의 파일은 해당 파일을 수정할 권한이 있는 사용자가 없기 때문에 루트가 소유합니다.

Alien은 아카이브의 압축을 풀고 다시 패키지하여 패키지를 변환합니다(사전/사후 설치 스크립트 변환과 같은 다른 작업 중에서). 예를 들어, rpm을 deb로 변환하려면 외계인 호출이 cpio아카이브를 임시 위치에 추출한 다음 tar새 아카이브를 구축합니다. 루트 권한으로 압축을 풀지 않으면 모든 임시 파일은 압축을 푼 사용자의 소유가 되므로 파일이 새 아카이브에 압축되면 결국 해당 사용자의 소유가 됩니다.

Alien은 시스템에서 아무것도 수정할 필요가 없기 때문에 실제로 루트로 실행할 필요가 없습니다.가근성명령이 파일 시스템 작업에 대한 잘못된 정보를 수신하여 일반적으로 루트가 필요한 작업(예: 파일 소유권 변경)이 성공한 것처럼 가장하는 환경에서 Alien(또는 다른 명령)을 실행합니다. 이런 방식으로 압축 풀기는 루트로 수행되고 올바른 파일 소유권이 설정되므로( alien하위 프로세스에 관한 한) 재압축하면 예상되는 아카이브가 생성됩니다.

관련 정보