| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
Tags
- cups
- 정규표현식
- 시스템관리
- 명령어
- 자바스크립트
- 터미널
- tcsh
- terminal
- PackageManagement
- UnixCommand
- 쉘스크립트
- js
- UNIX
- environment
- shell
- JavaScript
- 리눅스명령어
- Unix명령어
- coreutils
- sysadmin
- 유닉스
- bash
- linux
- 리눅스
- Solaris
- 파일시스템
- php
- 사용자관리
- 유닉스명령어
- linuxcommand
Archives
- Today
- Total
ioerror
unshare 사용법 및 옵션 - 네임스페이스 분리로 독립된 프로세스 실행 본문
반응형

unshare - Unshare Execution Context
부모 프로세스로부터 격리된 프로세스 실행 환경(Namespace)을 생성하여 명령어를 실행하는 리눅스 전용 명령어이다. 컨테이너 기술(Docker, Podman 등)의 기본 원리가 되는 리눅스 네임스페이스(PID, Mount, Network, User, IPC, UTS 등)를 개별적으로 격리할 수 있으며, 루트 권한 없이도 독립된 실행 환경을 구성할 때 활용된다.
1. 명령어 용도
- 사용가능 OS: [Linux]
- 별도의 루트 권한 없이 사용자 네임스페이스를 생성하여 루트처럼 권한을 행사하는 가상 환경 구성 시 사용한다.
- 네트워크 디바이스 격리, 별도의 호스트명 설정, 프로세스 ID 공간 독립 등 가상화 테스트 환경 구축 시 주로 사용한다.
2. 명령어 서식
unshare [옵션] [명령어 [인자...]]
3. 명령어 옵션
- 주요 옵션 소개 테이블
| 옵션 | 설명 | 사용가능 OS 및 쉘 |
| -m, --mount | 마운트 네임스페이스 분리 (파일시스템 마운트 지점 격리) | [Linux] |
| -u, --uts | UTS 네임스페이스 분리 (호스트명 및 도메인명 격리) | [Linux] |
| -i, --ipc | IPC 네임스페이스 분리 (System V IPC, POSIX 메시지 큐 격리) | [Linux] |
| -p, --pid | PID 네임스페이스 분리 (프로세스 ID 공간 격리) | [Linux] |
| -n, --net | 네트워크 네임스페이스 분리 (네트워크 장치, 루프백 격리) | [Linux] |
| -U, --user | 사용자 네임스페이스 분리 (UID/GID 매핑 격리) | [Linux] |
| -C, --cgroup | Cgroup 네임스페이스 분리 (Cgroup 구조 격리) | [Linux] |
| -T, --time | 타임 네임스페이스 분리 (시스템 시계 격리) | [Linux] |
| -f, --fork | 지정한 명령어를 자식 프로세스로 fork하여 실행 | [Linux] |
| --mount-proc[=dir] | 지정한 디렉토리에 proc 파일시스템을 자동 마운트 | [Linux] |
| -r, --map-root-user | 현재 사용자를 새로 생성된 사용자 네임스페이스의 root(UID 0)로 매핑 | [Linux] |
| --keep-caps | 사용자 네임스페이스 내에서 획득한 캡처능력(Capabilities) 유지 | [Linux] |
- 명령어 옵션 사용시 결과 예시
Bash
# 루트 권한 없이 사용자 및 마운트, PID 네임스페이스를 분리하여 독립된 쉘 실행
unshare -r -p -f --mount-proc bash
# 독립된 호스트명(UTS) 네임스페이스 설정
unshare -u bash
hostname my-isolated-node
hostname
# my-isolated-node
# 원래 쉘로 복귀 후 호스트명 확인
exit
hostname
# original-hostname
- unshare -r -p -f --mount-proc bash: -r 옵션으로 현재 계정을 root로 매핑하고, -p -f 옵션으로 새로운 PID 1번 프로세스를 갖는 자식 프로세스를 생성하며, --mount-proc을 통해 /proc 파일시스템을 해당 네임스페이스 전용으로 다시 마운트한다.
- hostname my-isolated-node: UTS 네임스페이스가 분리된 상태에서 호스트명을 변경하면 전체 시스템이 아닌 해당 쉘 내부에서만 변경된 호스트명이 유지된다.
4. 명령어 특이사항(유의사항)
- PID 네임스페이스(-p)만 단독으로 분리할 경우, 새로운 PID 공간의 첫 번째 프로세스가 생성되지 않아 오류가 발생하거나 기존 /proc 정보를 그대로 참조하게 된다. 반드시 -f(--fork) 옵션과 --mount-proc 옵션을 함께 사용해야 정상적인 PID 격리가 구현된다.
- 일반 사용자 계정으로 unshare를 사용할 때는 반드시 -U(--user) 또는 -r(--map-root-user) 옵션을 포함해야 권한 에러(Operation not permitted) 없이 네임스페이스 생성이 진행된다.
- 리눅스 커널 커스텀 설정이나 보안 정책(sysctl kernel.unprivileged_userns_clone)에 따라 비권한 사용자의 사용자 네임스페이스 생성이 차단되어 있을 수 있다.
관련 명령어들
- nsenter: 이미 실행 중인 다른 프로세스의 네임스페이스에 진입하여 명령어를 실행하는 명령어이다.
- chroot: 루트 디렉토리 위치를 변경하여 파일시스템 접근을 제한하는 명령어이다.
- ip netns: 네트워크 네임스페이스만을 전문적으로 관리하고 제어하는 iproute2 도구 명령어이다.
- podman: daemonless 방식으로 unshare 및 리눅스 네임스페이스 기술을 활용해 컨테이너를 실행하는 도구이다.
https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference
반응형
'OS' 카테고리의 다른 글
| unzip 사용법 및 옵션 - ZIP 압축 파일의 해제 및 내용 확인 (0) | 2026.07.31 |
|---|---|
| unshareall 사용법 및 옵션 - 공유 중인 모든 NFS 자원 자원 해제 (0) | 2026.07.31 |
| unsetenv 사용법 및 옵션 - C 쉘 환경 변수 해제 (0) | 2026.07.31 |
| unset 사용법 및 옵션 - 쉘 변수 및 함수 제거 명령어 (0) | 2026.07.31 |
| uniq 사용법 및 옵션 - 중복 행 제거 및 집계 (0) | 2026.07.31 |
Comments