E-deb 파일 뜯어보기

개요

평소 OS에 설치하는 각종 패키지는 구체적으로 어떻게 세팅되는 걸까?
Istio 1기 - Istio Hands-on 스터디를 진행하면서 궁금했던 부분을 잠시 분석했다.
E-이스티오의 데이터 플레인 트래픽 세팅 원리에서 파생하여 진행했다.

deb 파일 분석

istio-sidecar 파일을 사용했는데, 이전에 결과적으로 확인해보기는 했으나 이 파일은 구체적으로 무슨 동작을 할까?
간단하게 내부 파일을 추적해보자.

deb은 ar 형식의 파일로, 먼저 파일의 압축을 해제한다.

ar x istio-sidecar.deb

image.png
내부에는 세부 압축 파일이 들어있다.
이 파일들은 deb 패키지 설치 시에 어떻게 동작하는가?
image.png
control 파일은 실제 행동하는 동작에 대한 스크립트와 메타데이터 값이 들어있다.
그리고 data 파일에는 패키지를 설치할 때 파일시스템에 들어가게 될 각종 파일들을 담고 있다.

각 tar파일을 뜯어보면 구체적으로 이들이 무엇을 하는지 알 수 있다.

tar -xf control.tar.gz

image.png
결과물은 이렇게 생겼다.
위에서 봤듯이 postinst가 data파일의 내용물이 파일시스템으로 옮겨진 후 실제 동작을 수행할 것을 추측할 수 있다.

tar -xf data.tar.gz

image.png
data 파일 안에는 var, lib, usr 세 가지 디렉토리가 들어있다.
image.png
data 파일에 실제로 사용되는 각종 파일들이 들어있고, 이들은 패키지 설치 시 각 위치에 덮어씌워질 것이다.

그럼 postinst에서는 구체적으로 무슨 동작을 하는가?
image.png
해당 파일은 쉘 스크립트로 짜여져 있기 때문에 쉽게 내용물을 확인해볼 수 있다.
보다시피 istio-proxy라는 유저와 그룹을 만들고, data 파일들에 istio-proxy로 소유권을 이관하는 작업을 수행한다.
(참고로 mkdir -p는 해당 디렉토리가 없을 경우 생성한다.)
image.png
여기에 마지막으로 추가적인 작업이 들어가는데, envoy와 pilot-agent 파일이 실행될 때의 소속을 수정하는 작업이다.
위에서 두 파일은 이미 istio-proxy로 유저와 그룹이 세팅됐다.
그러나 iptables 조작을 위해 해당 파일들은 루트 권한으로 실행돼야 한다.
그래서 어떤 유저로 실행되더라도 그룹 id는 istio-proxy로 걸어두기 위해 chmod의 맨 앞자리를 2로 설정하는 것이다!

참고로 chmod에서 맨 앞자리 특수 권한 비트는 다음의 의미를 가진다.

아무튼 deb 패키지를 설치했을 때 설정되는 것들을 요약하자면..

이 정도가 있겠다.
처음에 세팅되는 것을 보고 혹시 istio-proxy라는 유저와 그룹이 무조건 998로 고정되는 건가 궁금해서 뜯어봤는데, 사실은 그냥 이전에 만들어진 유저가 다른 게 없어서 가장 먼저 998을 받은 거였다.

관련 문서

지식 문서, EXPLAIN

이름14is-folder생성 일자
E-리눅스 dbeaver 설치false2024-11-26 15:36
restricted user namespace- 2024-04-27
Ubuntu 24.04 Noble Numbat- 2024-04-26
E-이스티오 가상머신 통합false2025-06-01 13:32
E-이스티오 DNS 프록시 동작false2025-06-01 12:33
E-이스티오에서 엔보이 기능 확장하기false2025-06-01 14:06
E-이스티오 메시 스케일링false2025-06-08 23:41
메시 배포 모델false2025-05-21 13:36
Istio WorkloadGroupfalse2025-05-26 09:27
Istio WorkloadEntryfalse2025-05-26 09:32
Istio WasmPluginfalse2025-04-21 20:41
Istio Extenisibilitytrue2025-05-26 09:26
Istio EnvoyFilterfalse2025-04-21 20:36
E-이스티오의 데이터 플레인 트래픽 세팅 원리false2025-05-27 21:55

기타 문서

Z0-연관 knowledge, Z1-트러블슈팅 Z2-디자인,설계, Z3-임시, Z5-프로젝트,아카이브, Z8,9-미분류,미완
이름7코드타입생성 일자
S-오라클 600 에러 트러블 슈팅(한글 인코딩)Z1topic/shooting2024-11-27 12:15
8W - 엔보이와 iptables 뜯어먹기Z8published2025-06-01 12:14
엔보이에 와즘 플러그인 적용해보기Z8topic2025-06-09 02:29
4W - 이스티오 메트릭 커스텀, 프로메테우스와 그라파나Z8published2025-05-03 22:16
7W - 이스티오 메시 스케일링Z8published2025-06-09 02:04
7W - 엔보이 필터를 통한 기능 확장Z8published2025-06-09 02:30
8W - 가상머신 통합하기Z8published2025-06-01 12:11

참고