namespaces(7) - wariua/manpages-ko GitHub Wiki

NAME

namespaces - ๋ฆฌ๋ˆ…์Šค ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ฐœ์š”

DESCRIPTION

๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ „์—ญ ์‹œ์Šคํ…œ ์ž์›์„ ์–ด๋–ค ์ถ”์ƒํ™”๋กœ ๊ฐ์‹ธ์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•ˆ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ๋Š” ๋…๋ฆฝ์ ์ธ ์ „์—ญ ์ž์› ์ธ์Šคํ„ด์Šค๊ฐ€ ๋”ฐ๋กœ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋„๋ก ๋งŒ๋“ ๋‹ค. ๊ทธ ์ „์—ญ ์ž์›์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ผ์›์ธ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ๋Š” ๋ณด์ด์ง€๋งŒ ๊ทธ ์™ธ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ๋Š” ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์šฉ๋„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๊ตฌํ˜„์ด๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ƒ์ˆ˜ ๊ฒฉ๋ฆฌ ๋Œ€์ƒ
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๋“ค์„ ์š”์•ฝํ•œ๋‹ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šค 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/ ๋””๋ ‰ํ„ฐ๋ฆฌ

๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ์„œ๋ธŒ๋””๋ ‰ํ„ฐ๋ฆฌ /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 ๋””๋ ‰ํ„ฐ๋ฆฌ

/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 ๋„ค์ž„์ŠคํŽ˜์ด์Šค (CLONE_NEWCGROUP)

cgroup_namespaces(7)๋ฅผ ๋ณด๋ผ.

IPC ๋„ค์ž„์ŠคํŽ˜์ด์Šค (CLONE_NEWIPC)

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 ์˜ต์…˜์œผ๋กœ ๊ตฌ์„ฑ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋„คํŠธ์›Œํฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค (CLONE_NEWNET)

network_namespaces(7)๋ฅผ ๋ณด๋ผ.

๋งˆ์šดํŠธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค (CLONE_NEWNS)

mount_namespaces(7)๋ฅผ ๋ณด๋ผ.

PID ๋„ค์ž„์ŠคํŽ˜์ด์Šค (CLONE_NEWPID)

pid_namespaces(7)๋ฅผ ๋ณด๋ผ.

์‚ฌ์šฉ์ž ๋„ค์ž„์ŠคํŽ˜์ด์Šค (CLONE_NEWUSER)

user_namespaces(7)๋ฅผ ๋ณด๋ผ.

UTS ๋„ค์ž„์ŠคํŽ˜์ด์Šค (CLONE_NEWUTS)

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) ํŒŒ์ผ ์‹œ์Šคํ…œ ๋งˆ์šดํŠธ๊ฐ€ ๊ทธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.

EXAMPLE

clone(2) ๋ฐ user_namespaces(7) ์ฐธ๊ณ .

SEE ALSO

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

โš ๏ธ **GitHub.com Fallback** โš ๏ธ