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

가짜 루트를 사용하세요. 외계인은 일부 비트를 조작하기 위해 루트가 필요하지 않습니다. 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하위 프로세스에 관한 한)을 설정하므로 재압축을 통해 의도한 아카이브가 생성됩니다.

관련 정보