#include <sched.h>
int unshare(int flags);
$ unshare --option {path}
실행시킬 process를 현 process와 네임스페이스를 분리 할 수 있음.
option: 분리할 네임스페이스
path: 실행시킬 파일 path
이 시스템 콜은 리눅스 전용
-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가 매핑된 후에만 프로그램 실행
#shell을 실행시키고, mount namespace를 분리
$ unshare --mount /bin/sh
#uts를 분리 후 hostname변경
$ unshare --uts /bin/sh
$ hostname
ubuntu
$ hostname jang
$ hostname
jang