컨테이너: unshare

Seongho Jang·2023년 7월 11일
0

1. Synopsis

#include <sched.h>

int unshare(int flags);
$ unshare --option {path}

2. Desription

  • 실행시킬 process를 현 process와 네임스페이스를 분리 할 수 있음.

  • option: 분리할 네임스페이스

  • path: 실행시킬 파일 path

  • 이 시스템 콜은 리눅스 전용

3. Option

  • -i, --ipc: IPC 네임스페이스

  • -m, --mount: 마운트 네임스페이스

  • -p, --pid: PID 네임스페이스

  • -u, --uts: UTS 네임스페이스

  • -U, --user: 사용자 네임스페이스

  • -C, --cgroup: Cgroup 네임스페이스

  • -T, --time: 시간 네임스페이스

  • -f, --fork
    : unshare process의 자식 process로 구동되도록 fork함,
    : 해당 option이 없으면 unshare에서 직접 구동

  • -fp: 생성되는 process의 pid는 해당 process 네임스페이스에서 PID = 1

  • --keep-caps--user: 옵션이 주어지면 user게게 권한이 있는지 확인

  • --kill-child: 공유 해제가 종료되면 fork된 child process로 SIGNAL을 보내도록 함

  • --mount-proc: 프로그램을 시작하기 직전 proc 파일 시스템을 mountpoint에 마운트

  • --mpa-user=uid: uid가 매핑된 후에만 프로그램 실행

  • --map-group=gid: gid가 매핑된 후에만 프로그램 실행

4. Example

#shell을 실행시키고, mount namespace를 분리
$ unshare --mount /bin/sh

#uts를 분리 후 hostname변경
$ unshare --uts /bin/sh
$ hostname
ubuntu
$ hostname jang
$ hostname 
jang

0개의 댓글