namespaces(7) - wariua/manpages-ko GitHub Wiki
namespaces - ๋ฆฌ๋ ์ค ๋ค์์คํ์ด์ค ๊ฐ์
๋ค์์คํ์ด์ค๋ ์ ์ญ ์์คํ ์์์ ์ด๋ค ์ถ์ํ๋ก ๊ฐ์ธ์ ๋ค์์คํ์ด์ค ์์ ํ๋ก์ธ์ค๋ค์๊ฒ๋ ๋ ๋ฆฝ์ ์ธ ์ ์ญ ์์ ์ธ์คํด์ค๊ฐ ๋ฐ๋ก ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋๋ก ๋ง๋ ๋ค. ๊ทธ ์ ์ญ ์์์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ค์์คํ์ด์ค ์ผ์์ธ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์๊ฒ๋ ๋ณด์ด์ง๋ง ๊ทธ ์ธ์ ํ๋ก์ธ์ค๋ค์๊ฒ๋ ๋ณด์ด์ง ์๋๋ค. ๋ค์์คํ์ด์ค์ ์ฉ๋ ์ค ํ๋๊ฐ ์ปจํ ์ด๋ ๊ตฌํ์ด๋ค.
๋ฆฌ๋ ์ค์์ ์ ๊ณตํ๋ ๋ค์์คํ์ด์ค๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋ค์์คํ์ด์ค | ์์ | ๊ฒฉ๋ฆฌ ๋์ |
---|---|---|
cgroup | CLONE_NEWCGROUP |
cgroup ๋ฃจํธ ๋๋ ํฐ๋ฆฌ |
IPC | CLONE_NEWIPC |
์์คํ V IPC, POSIX ๋ฉ์์ง ํ |
๋คํธ์ํฌ | CLONE_NEWNET |
๋คํธ์ํฌ ์ฅ์น, ์คํ, ํฌํธ ๋ฑ |
๋ง์ดํธ | CLONE_NEWNS |
๋ง์ดํธ ํฌ์ธํธ |
PID | CLONE_NEWPID |
ํ๋ก์ธ์ค ID |
์ฌ์ฉ์ | CLONE_NEWUSER |
์ฌ์ฉ์ ID์ ๊ทธ๋ฃน ID |
UTS | CLONE_NEWUTS |
ํธ์คํธ๋ช ๊ณผ NIS ๋๋ฉ์ธ ์ด๋ฆ |
์ด ํ์ด์ง์์๋ ๋ค์ํ ๋ค์์คํ์ด์ค์ ๊ด๋ จ /proc
ํ์ผ๋ค์ ์ค๋ช
ํ๊ณ ๋ค์์คํ์ด์ค๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ API๋ค์ ์์ฝํ๋ค.
์๋ ๊ธฐ์ ํ๋ ์ฌ๋ฌ /proc
ํ์ผ๋ค์ ๋ํด์ ๋ค์ ์์คํ
ํธ์ถ๋ค์ด ๋ค์์คํ์ด์ค API์ ํฌํจ๋๋ค.
- clone(2)
-
clone(2) ์์คํ
ํธ์ถ์ ์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ ๋ค. ํธ์ถ์
flags
์ธ์์ ์๋ ๋์ด๋CLONE_NEW*
ํ๋๊ทธ๋ฅผ ํ๋ ์ด์ ์ง์ ํ๋ฉด ๊ฐ ํ๋๊ทธ์ ๋ํ ์ ๋ค์์คํ์ด์ค๊ฐ ์์ฑ๋๊ณ ์์ ํ๋ก์ธ์ค๊ฐ ๊ทธ ๋ค์์คํ์ด์ค๋ค์ ์ํ๊ฒ ๋๋ค. (์ด ์์คํ ํธ์ถ์ ๋ค์์คํ์ด์ค์ ๋ฌด๊ดํ ๊ธฐ๋ฅ๋ค๋ ์ฌ๋ฟ ๊ตฌํํ๊ณ ์๋ค.) - setns(2)
-
setns(2) ์์คํ
ํธ์ถ์ ํตํด ํธ์ถ ํ๋ก์ธ์ค๊ฐ ๊ธฐ์กด ๋ค์์คํ์ด์ค์ ์ฐธ์ฌํ ์ ์๋ค. ์๋ ์ค๋ช
ํ๋
/proc/[pid]/ns
ํ์ผ๋ค ์ค ํ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํตํด ์ฐธ์ฌํ ๋ค์์คํ์ด์ค๋ฅผ ์ง์ ํ๋ค. - unshare(2)
-
unshare(2) ์์คํ
ํธ์ถ์ ํธ์ถ ํ๋ก์ธ์ค๋ฅผ ์ ๋ค์์คํ์ด์ค๋ก ์ฎ๊ธด๋ค. ํธ์ถ์
flags
์ธ์๊ฐ ์๋ ๋์ด๋CLONE_NEW*
ํ๋๊ทธ๋ฅผ ํ๋ ์ด์ ์ง์ ํ๋ฉด ๊ฐ ํ๋๊ทธ์ ๋ํ ์ ๋ค์์คํ์ด์ค๊ฐ ์์ฑ๋๊ณ ํธ์ถ ํ๋ก์ธ์ค๊ฐ ๊ทธ ๋ค์์คํ์ด์ค๋ค์ ์ํ๊ฒ ๋๋ค. (์ด ์์คํ ํธ์ถ์ ๋ค์์คํ์ด์ค์ ๋ฌด๊ดํ ๊ธฐ๋ฅ๋ค๋ ์ฌ๋ฟ ๊ตฌํํ๊ณ ์๋ค.) ioctl(2)
-
๋ค์ํ
ioctl(2)
๋์์ ์ด์ฉํด ๋ค์์คํ์ด์ค์ ๋ํ ์ ๋ณด๋ฅผ ์์๋ผ ์ ์๋ค. ๊ทธ ๋์๋ค์ ioctl_ns(2)์์ ์ค๋ช ํ๋ค.
clone(2)๊ณผ unshare(2)๋ก ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋๋ถ๋ถ์ ๊ฒฝ์ฐ CAP_SYS_ADMIN
์ญ๋ฅ์ด ํ์ํ๋ค. ์ ๋ค์์คํ์ด์ค ์์์ ์์ฑ ํ๋ก์ธ์ค๊ฐ ์ดํ ๊ทธ ๋ค์์คํ์ด์ค์์ ์์ฑ๋๊ฑฐ๋ ๊ทธ ๋ค์์คํ์ด์ค์ ์ฐธ์ฌํ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์๊ฒ ๋ณด์ด๋ ์ ์ญ ์์๋ค์ ๋ณ๊ฒฝํ ๋ฅ๋ ฅ์ ๊ฐ์ง๊ฒ ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ์ฉ์ ๋ค์์คํ์ด์ค๊ฐ ์์ธ์ธ๋ฐ, ๋ฆฌ๋
์ค 3.8๋ถํฐ๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋๋ ๋ฐ ํน๊ถ์ด ํ์ ์๋ค.
๊ฐ ํ๋ก์ธ์ค๋ง๋ค ์๋ธ๋๋ ํฐ๋ฆฌ /proc/[pid]/ns/
๊ฐ ์๊ณ ๊ทธ ์์๋ setns(2)๋ฅผ ํตํ ์กฐ์์ ์ง์ํ๋ ๋ค์์คํ์ด์ค๋ง๋ค ํญ๋ชฉ์ด ํ๋์ฉ ์๋ค.
$ ls -l /proc/$$/ns
total 0
lrwxrwxrwx. 1 mtk mtk 0 Apr 28 12:46 cgroup -> cgroup:[4026531835]
lrwxrwxrwx. 1 mtk mtk 0 Apr 28 12:46 ipc -> ipc:[4026531839]
lrwxrwxrwx. 1 mtk mtk 0 Apr 28 12:46 mnt -> mnt:[4026531840]
lrwxrwxrwx. 1 mtk mtk 0 Apr 28 12:46 net -> net:[4026531969]
lrwxrwxrwx. 1 mtk mtk 0 Apr 28 12:46 pid -> pid:[4026531836]
lrwxrwxrwx. 1 mtk mtk 0 Apr 28 12:46 pid_for_children -> pid:[4026531834]
lrwxrwxrwx. 1 mtk mtk 0 Apr 28 12:46 user -> user:[4026531837]
lrwxrwxrwx. 1 mtk mtk 0 Apr 28 12:46 uts -> uts:[4026531838]
์ด ๋๋ ํฐ๋ฆฌ์ ํ์ผ๋ค ์ค ํ๋๋ฅผ ํ์ผ ์์คํ
์ ๋ค๋ฅธ ์ด๋๊ฐ๋ก ๊ฒฐ์ ๋ง์ดํธ(mount(2) ์ฐธ๊ณ ) ํ๋ฉด pid
๋ก ์ง์ ํ ํ๋ก์ธ์ค์ ํด๋น ๋ค์์คํ์ด์ค๊ฐ ๊ทธ ๋ค์์คํ์ด์ค์ ํ์ฌ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์ข
๋ฃํ๋๋ผ๋ ์ ์ง๋๋ค.
์ด ๋๋ ํฐ๋ฆฌ์ ํ์ผ๋ค ์ค ํ๋๋ฅผ (๋๋ ๊ทธ ํ์ผ๋ค ์ค ํ๋๋ฅผ ๊ฒฐ์ ๋ง์ดํธ ํ ํ์ผ์) ์ด๋ฉด pid
๋ก ์ง์ ํ ํ๋ก์ธ์ค์ ํด๋น ๋ค์์คํ์ด์ค์ ํ์ผ ํธ๋ค์ด ๋ฐํ๋๋ค. ๊ทธ ํ์ผ ๋์คํฌ๋ฆฝํฐ๊ฐ ์ด๋ ค ์๋ ๋์์๋ ๊ทธ ๋ค์์คํ์ด์ค์ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์ข
๋ฃํ๋๋ผ๋ ๋ค์์คํ์ด์ค๊ฐ ๊ณ์ ์ด์ ์๊ฒ ๋๋ค. ๊ทธ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ setns(2)์ ์ค ์ ์๋ค.
๋ฆฌ๋
์ค 3.7 ๋ฐ ์ด์ ์์๋ ์ด ํ์ผ๋ค์ด ํ๋ ๋งํฌ์ฒ๋ผ ๋ณด์๋ค. ๋ฆฌ๋
์ค 3.8๋ถํฐ๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ก ๋ณด์ธ๋ค. ๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ๋ค์์คํ์ด์ค์ ์์ผ๋ฉด ๊ทธ /proc/[pid]/ns/xxx
์ฌ๋ณผ๋ฆญ ๋งํฌ์ ์ฅ์น ID์ ์์ด๋
ธ๋ ๋ฒํธ๊ฐ ๋์ผํ๊ฒ ๋๋ค. ์์ฉ์์๋ stat(2)์ด ๋ฐํํ๋ stat.st_dev
๋ฐ stat.st_ino
ํ๋๋ฅผ ์ด์ฉํด ํ์ธํ ์ ์๋ค. ์ด ์ฌ๋ณผ๋ฆญ ๋งํฌ์ ๋ด์ฉ๋ฌผ์ ๋ค์์ฒ๋ผ ๋ค์์คํ์ด์ค ์ ํ๊ณผ ์์ด๋
ธ๋ ๋ฒํธ๋ฅผ ๋ด์ ๋ฌธ์์ด์ด๋ค.
$ readlink /proc/$$/ns/uts
uts:[4026531838]
์ด ์๋ธ๋๋ ํฐ๋ฆฌ ๋ด์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
-
/proc/[pid]/ns/cgroup
(๋ฆฌ๋ ์ค 4.6๋ถํฐ) - ์ด ํ์ผ์ ํ๋ก์ธ์ค์ cgroup ๋ค์์คํ์ด์ค์ ๋ํ ํธ๋ค์ด๋ค.
-
/proc/[pid]/ns/ipc
(๋ฆฌ๋ ์ค 3.0๋ถํฐ) - ์ด ํ์ผ์ ํ๋ก์ธ์ค์ IPC ๋ค์์คํ์ด์ค์ ๋ํ ํธ๋ค์ด๋ค.
-
/proc/[pid]/ns/mnt
(๋ฆฌ๋ ์ค 3.8๋ถํฐ) - ์ด ํ์ผ์ ํ๋ก์ธ์ค์ ๋ง์ดํธ ๋ค์์คํ์ด์ค์ ๋ํ ํธ๋ค์ด๋ค.
-
/proc/[pid]/ns/net
(๋ฆฌ๋ ์ค 3.0๋ถํฐ) - ์ด ํ์ผ์ ํ๋ก์ธ์ค์ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ๋ํ ํธ๋ค์ด๋ค.
-
/proc/[pid]/ns/pid
(๋ฆฌ๋ ์ค 3.8๋ถํฐ) - ์ด ํ์ผ์ ํ๋ก์ธ์ค์ PID ๋ค์์คํ์ด์ค์ ๋ํ ํธ๋ค์ด๋ค. ์ด ํธ๋ค์ ํ๋ก์ธ์ค์ ์๋ช ๋์ ๋ถ๋ณ์ด๋ค. (์ฆ ํ๋ก์ธ์ค์ PID ๋ค์์คํ์ด์ค ์์์ ์ ๋ ๋ฐ๋์ง ์๋๋ค.)
-
/proc/[pid]/ns/pid_for_children
(๋ฆฌ๋ ์ค 4.12๋ถํฐ) - ์ด ํ์ผ์ ์ด ํ๋ก์ธ์ค๊ฐ ์์ฑํ ์์ ํ๋ก์ธ์ค๋ค์ PID ๋ค์์คํ์ด์ค์ ๋ํ ํธ๋ค์ด๋ค. ์ด ๋ค์์คํ์ด์ค๋ unshare(2)์ setns(2) ํธ์ถ์ ๊ฒฐ๊ณผ๋ก ๋ฐ๋ ์ ์์ผ๋ฉฐ (pid_namespaces(7) ์ฐธ๊ณ ), ๋ฐ๋ผ์ ํ์ผ์ด
/proc/[pid]/ns/pid
์ ๋ค๋ฅผ ์ ์๋ค. ๊ทธ ๋ค์์คํ์ด์ค์ ์ฒซ ๋ฒ์งธ ์์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ํ์์ผ ์ฌ๋ณผ๋ฆญ ๋งํฌ์ ๊ฐ์ด ๋ค์ด๊ฐ๋ค. (๊ทธ ์ ์๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ readlink(2) ํ๋ฉด ๋น ๋ฒํผ๋ฅผ ๋ฐํํ๋ค.) -
/proc/[pid]/ns/user
(๋ฆฌ๋ ์ค 3.8๋ถํฐ) - ์ด ํ์ผ์ ํ๋ก์ธ์ค์ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์ ๋ํ ํธ๋ค์ด๋ค.
-
/proc/[pid]/ns/uts
(๋ฆฌ๋ ์ค 3.0๋ถํฐ) - ์ด ํ์ผ์ ํ๋ก์ธ์ค์ UTS ๋ค์์คํ์ด์ค์ ๋ํ ํธ๋ค์ด๋ค.
์ด ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ค์ ์ญ์ฐธ์กฐํ๊ฑฐ๋ ์ฝ์ ์ ์๋ ๊ถํ์ ptrace ์ ๊ทผ ๋ชจ๋ PTRACE_MODE_READ_FSCREDS
๊ฒ์ฌ์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค. ptrace(2) ์ฐธ๊ณ .
/proc/sys/user
๋๋ ํฐ๋ฆฌ(๋ฆฌ๋
์ค 4.9๋ถํฐ ์กด์ฌ)์ ํ์ผ๋ค์ ์ฌ๋ฌ ์ ํ์ ๋ค์์คํ์ด์ค๋ค์ ๋ช ๊ฐ๊น์ง ๋ง๋ค ์ ์๋์ง ๋ณด์ฌ ์ค๋ค.
max_cgroup_namespaces
- ์ด ํ์ผ์ ๊ฐ์ ๊ทธ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๋ด์ ๋ง๋ค ์ ์๋ cgroup ๋ค์์คํ์ด์ค ์์ ์ฌ์ฉ์๋ณ ์ ํ์ ๊ท์ ํ๋ค.
max_ipc_namespaces
- ์ด ํ์ผ์ ๊ฐ์ ๊ทธ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๋ด์ ๋ง๋ค ์ ์๋ IPC ๋ค์์คํ์ด์ค ์์ ์ฌ์ฉ์๋ณ ์ ํ์ ๊ท์ ํ๋ค.
max_mnt_namespaces
- ์ด ํ์ผ์ ๊ฐ์ ๊ทธ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๋ด์ ๋ง๋ค ์ ์๋ ๋ง์ดํธ ๋ค์์คํ์ด์ค ์์ ์ฌ์ฉ์๋ณ ์ ํ์ ๊ท์ ํ๋ค.
max_net_namespaces
- ์ด ํ์ผ์ ๊ฐ์ ๊ทธ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๋ด์ ๋ง๋ค ์ ์๋ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค ์์ ์ฌ์ฉ์๋ณ ์ ํ์ ๊ท์ ํ๋ค.
max_pid_namespaces
- ์ด ํ์ผ์ ๊ฐ์ ๊ทธ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๋ด์ ๋ง๋ค ์ ์๋ PID ๋ค์์คํ์ด์ค ์์ ์ฌ์ฉ์๋ณ ์ ํ์ ๊ท์ ํ๋ค.
max_user_namespaces
- ์ด ํ์ผ์ ๊ฐ์ ๊ทธ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๋ด์ ๋ง๋ค ์ ์๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ์์ ์ฌ์ฉ์๋ณ ์ ํ์ ๊ท์ ํ๋ค.
max_uts_namespaces
- ์ด ํ์ผ์ ๊ฐ์ ๊ทธ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๋ด์ ๋ง๋ค ์ ์๋ UTC ๋ค์์คํ์ด์ค ์์ ์ฌ์ฉ์๋ณ ์ ํ์ ๊ท์ ํ๋ค.
์ด ํ์ผ๋ค์ ๋ํด ๋ค์ ์ฌํญ์ ์ ์ํ๋ผ.
-
ํน๊ถ ํ๋ก์ธ์ค๊ฐ ์ด ํ์ผ๋ค์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
-
์ด ํ์ผ๋ค์ด ๋ด๋ณด์ด๋ ๊ฐ์ ์ฌ๋ ํ๋ก์ธ์ค๊ฐ ์๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์์์ ์ ํ์ด๋ค.
-
์ ํ์ด ์ฌ์ฉ์๋ณ์ด๋ค. ๊ฐ์ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค ๋ด์ ๊ฐ ์ฌ์ฉ์๊ฐ ๊ฐ๊ฐ ๊ท์ ๋ ์ ํ๋งํผ ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋ค ์ ์๋ค.
-
UID 0์ ํฌํจํ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ ํ์ด ์ ์ฉ๋๋ค.
-
์ด ์ ํ๋ค์ ๋ํด์ (PID ๋ฐ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์์์ฒ๋ผ) ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ณ ์ ํ์ด ์ ์ฉ๋ ์๋ ์๋ค.
-
์ด ์ ํ์ ๊ฑธ๋ฆฌ๋ฉด clone(2)์ unshare(2)๊ฐ
ENOSPC
์ค๋ฅ๋ก ์คํจํ๋ค. -
์ต์ด ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์์ ์ด ํ์ผ๋ค์ ๊ธฐ๋ณธ๊ฐ์ ์์ฑ ๊ฐ๋ฅ ์ค๋ ๋ ์ ์ ํ(
/proc/sys/kernel/threads-max
)์ ์ ๋ฐ์ด๋ค. ๋ชจ๋ ์์ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์์๋ ๊ฐ ํ์ผ์ ๊ธฐ๋ณธ๊ฐ์ดMAXINT
์ด๋ค. -
๋ค์์คํ์ด์ค๊ฐ ์๊ธธ ๋ ์กฐ์ ๋ค์์คํ์ด์ค๋ค์๋ ๊ทธ ๊ฐ์ฒด๊ฐ ์๊ณ๋๋ค. ์ ํํ ๋งํ์๋ฉด,
-
๊ฐ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์๋ ์์ฑ์ UID๊ฐ ์๋ค.
-
๋ค์์คํ์ด์ค๊ฐ ์๊ธธ ๋ ์กฐ์ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค๋ค ๊ฐ๊ฐ์ ์์ฑ์ UID๋ก ์๊ณ๋๋ฉฐ, ์ปค๋์์๋ ๊ทธ ์กฐ์ ๋ค์์คํ์ด์ค์ ์์ฑ์ UID์ ๋ํด ๋์ํ๋ ๋ค์์คํ์ด์ค ์ ํ์ด ์ด๊ณผํ์ง ์๋๋ก ํ๋ค.
-
๋ฐฉ๊ธ ์ธ๊ธํ ์ ๋๋ฌธ์ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค๋ฅผ ์๋ก ๋ง๋๋ ๊ฒ์ด ํ์ฌ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์ ์ ์ฉ ์ค์ธ ์ ํ์ ๋น ์ ธ๋๊ฐ๋ ๋ฐฉ๋ฒ์ด ๋ ์ ์๋ค.
-
cgroup_namespaces(7)๋ฅผ ๋ณด๋ผ.
IPC ๋ค์์คํ์ด์ค๋ ํน์ IPC ์์๋ค, ์ฆ ์์คํ V IPC ๊ฐ์ฒด(sysvipc(7) ์ฐธ๊ณ )์ (๋ฆฌ๋ ์ค 2.6.30๋ถํฐ) POSIX ๋ฉ์์ง ํ(mq_overview(7) ์ฐธ๊ณ )๋ฅผ ๊ฒฉ๋ฆฌํ๋ค. ์ด IPC ๋ฉ์ปค๋์ฆ๋ค์ ๊ณตํต ํน์ง์ ํ์ผ ์์คํ ๊ฒฝ๋ก๋ช ์ธ์ ๋ฉ์ปค๋์ฆ์ผ๋ก IPC ๊ฐ์ฒด๋ฅผ ์๋ณํ ์ ์๋ค๋ ์ ์ด๋ค.
๊ฐ IPC ๋ค์์คํ์ด์ค๋ง๋ค ์์ฒด ์์คํ V IPC ์๋ณ์ ์งํฉ๊ณผ ์์ฒด POSIX ๋ฉ์์ง ํ ํ์ผ ์์คํ ์ด ์๋ค. IPC ๋ค์์คํ์ด์ค ๋ด์์ ์์ฑ๋ ๊ฐ์ฒด๋ ๊ทธ ๋ค์์คํ์ด์ค์ ์ํ ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ธ์ค์๊ฒ ๋ณด์ด์ง๋ง ๋ค๋ฅธ IPC ๋ค์์คํ์ด์ค์ ํ๋ก์ธ์ค๋ค์๊ฒ๋ ๋ณด์ด์ง ์๋๋ค.
IPC ๋ค์์คํ์ด์ค๋ง๋ค ๋ค์ /proc
์ธํฐํ์ด์ค๋ค์ด ๋ณ๊ฐ๋ก ์๋ค.
-
/proc/sys/fs/mqueue
์์ POSIX ๋ฉ์์ง ํ ์ธํฐํ์ด์ค๋ค. -
/proc/sys/kernel
์์ ์์คํ V IPC ์ธํฐํ์ด์ค๋ค. ์ฆmsgmax
,msgmnb
,msgmni
,sem
,shmall
,shmmax
,shmmni
,shm_rmid_forced
. -
/proc/sysvipc
์์ ์์คํ V IPC ์ธํฐํ์ด์ค๋ค.
IPC ๋ค์์คํ์ด์ค๊ฐ ํ๊ธฐ๋ ๋ (์ฆ ๊ทธ ๋ค์์คํ์ด์ค์ ์ํ ๋ง์ง๋ง ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃํ ๋) ๋ค์์คํ์ด์ค ๋ด์ ๋ชจ๋ IPC ๊ฐ์ฒด๋ค์ด ์๋์ผ๋ก ํ๊ธฐ๋๋ค.
IPC ๋ค์์คํ์ด์ค ์ฌ์ฉ์ ์ํด์ ์ปค๋์ด CONFIG_IPC_NS
์ต์
์ผ๋ก ๊ตฌ์ฑ๋ผ ์์ด์ผ ํ๋ค.
network_namespaces(7)๋ฅผ ๋ณด๋ผ.
mount_namespaces(7)๋ฅผ ๋ณด๋ผ.
pid_namespaces(7)๋ฅผ ๋ณด๋ผ.
user_namespaces(7)๋ฅผ ๋ณด๋ผ.
UTS ๋ค์์คํ์ด์ค๋ ๋ ๊ฐ์ง ์์คํ ์๋ณ์, ์ฆ ํธ์คํธ๋ช ๊ณผ NIS ๋๋ฉ์ธ ์ด๋ฆ์ ๊ฒฉ๋ฆฌํ ์ ์๊ฒ ํด ์ค๋ค. sethostname(2)๊ณผ setdomainname(2)์ผ๋ก ๊ทธ ์๋ณ์๋ค์ ์ค์ ํ๋ฉฐ uname(2), gethostname(2), getdomainname(2)์ผ๋ก ์ป์ด ์ฌ ์ ์๋ค.
ํ๋ก์ธ์ค์์ CLONE_NEWUTS
ํ๋๊ทธ๋ฅผ ์ด clone(2)์ด๋ unshare(2)๋ก ์ UTS ๋ค์์คํ์ด์ค๋ฅผ ๋ง๋ค ๋ ์ UTS ๋ค์์คํ์ด์ค์ ํธ์คํธ๋ช
๊ณผ ๋๋ฉ์ธ ์ด๋ฆ์ ํธ์ถ์์ UTS ๋ค์์คํ์ด์ค์ ํด๋น ๊ฐ์ ๋ณต์ฌํ๋ค.
UTS ๋ค์์คํ์ด์ค ์ฌ์ฉ์ ์ํด์ ์ปค๋์ด CONFIG_UTS_NS
์ต์
์ผ๋ก ๊ตฌ์ฑ๋ผ ์์ด์ผ ํ๋ค.
๋ค๋ฅธ ์์ธ์ด ์์ ๋ ๋ค์์คํ์ด์ค๋ ๊ทธ ์์ ๋ง์ง๋ง ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃํ๊ฑฐ๋ ๋ค์์คํ์ด์ค๋ฅผ ๋ ๋ ๋ ์๋์ผ๋ก ํด์ฒด๋๋ค. ํ์ง๋ง ์ฐธ์ฌ ํ๋ก์ธ์ค๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๋ค์์คํ์ด์ค๊ฐ ์กด์ฌํ๋๋ก ๊ณ ์ ํ ์ ์๋ ๋ค๋ฅธ ์์ธ๋ค์ด ๋ช ๊ฐ์ง ์๋ค. ๋ค์์ด ๊ฑฐ๊ธฐ์ ํฌํจ๋๋ค.
-
๋์ํ๋
/proc/[pid]/ns/*
ํ์ผ์ ๋ํ ์ด๋ฆฐ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ ๋ฐ์ธ๋ ๋ง์ดํธ๊ฐ ์กด์ฌํ๋ค. -
๊ณ์ธต์ ์ธ ๋ค์์คํ์ด์ค(์ฆ PID ๋๋ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค)์ธ๋ฐ ์์ ๋ค์์คํ์ด์ค๊ฐ ์๋ค.
-
์ฌ์ฉ์ ๋ค์์คํ์ด์ค์ธ๋ฐ ์ฌ์ฉ์ ์๋ ๋ค์์คํ์ด์ค๋ฅผ ํ๋ ์ด์ ์์ ํ๊ณ ์๋ค.
-
PID ๋ค์์คํ์ด์ค์ธ๋ฐ ์ฌ๋ณผ๋ฆญ ๋งํฌ
/proc/[pid]/ns/pid_for_children
์ ํตํด ๊ทธ ๋ค์์คํ์ด์ค๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ ํ๋ก์ธ์ค๊ฐ ์๋ค. -
IPC ๋ค์์คํ์ด์ค์ธ๋ฐ ๋์ํ๋
mqueue
ํ์ผ ์์คํ ๋ง์ดํธ(mq_overview(7) ์ฐธ๊ณ )๊ฐ ๊ทธ ๋ค์์คํ์ด์ค๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค. -
PID ๋ค์์คํ์ด์ค์ธ๋ฐ ๋์ํ๋ proc(5) ํ์ผ ์์คํ ๋ง์ดํธ๊ฐ ๊ทธ ๋ค์์คํ์ด์ค๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค.
clone(2) ๋ฐ user_namespaces(7) ์ฐธ๊ณ .
nsenter(1)
, readlink(1)
, unshare(1)
, clone(2), ioctl_ns(2), setns(2), unshare(2), proc(5), capabilities(7), cgroup_namespaces(7), cgroups(7), credentials(7), network_namespaces(7), pid_namespaces(7), user_namespaces(7), lsns(8)
, pam_namespace(8)
, switch_root(8)
2019-08-02