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

NAME

path_resolution - ๊ฒฝ๋กœ๋ช…์œผ๋กœ ํŒŒ์ผ์„ ์ •ํ•˜๋Š” ๋ฐฉ์‹

DESCRIPTION

์–ด๋–ค ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ํ˜ธ์ถœ์—๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŒŒ์ผ๋ช…์ด ํ•œ ๊ฐœ๋‚˜ ๊ทธ ์ด์ƒ ์žˆ๋‹ค. ํŒŒ์ผ๋ช…(์ฆ‰ ๊ฒฝ๋กœ๋ช…)์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์„ํ•œ๋‹ค.

1๋‹จ๊ณ„: ํ•ด์„ ๊ณผ์ •์˜ ์‹œ์ž‘

๊ฒฝ๋กœ๋ช…์ด '/' ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด ํ˜ธ์ถœ ํ”„๋กœ์„ธ์Šค์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํƒ์ƒ‰ ๊ฐœ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋‹ค. (ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€๋ชจ์—๊ฒŒ์„œ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค. ๋ณดํ†ต์€ ํŒŒ์ผ ๊ณ„์ธต ๊ตฌ์กฐ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์ผ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ์„ธ์Šค์—์„œ chroot(2) ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•ด ๋‹ค๋ฅธ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ๋‹ค. ๋˜ (ํ”„๋กœ์„ธ์Šค ์ž์‹ ์ด๋‚˜ ์–ด๋А ์„ ์กฐ๊ฐ€) CLONE_NEWNS ํ”Œ๋ž˜๊ทธ ์„ค์ •ํ•œ clone(2) ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์‹œ์ž‘๋œ ๊ฒฝ์šฐ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๋งˆ์šดํŠธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ๋‹ค.) ์ด๋ ‡๊ฒŒ ๊ฒฝ๋กœ๋ช…์˜ '/' ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๊ฒฝ๋กœ๋ช…์ด '/' ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํ•ด์„ ๊ณผ์ •์˜ ํƒ์ƒ‰ ๊ฐœ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋‹ค. (์ด ์—ญ์‹œ ๋ถ€๋ชจ์—๊ฒŒ์„œ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค. chdir(2) ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.)

'/' ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ๋กœ๋ช…์„ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ช…์ด๋ผ๊ณ  ํ•œ๋‹ค. '/'๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ๋ช…์„ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ช…์ด๋ผ๊ณ  ํ•œ๋‹ค.

2๋‹จ๊ณ„: ๊ฒฝ๋กœ ๋”ฐ๋ผ๊ฐ€๊ธฐ

ํƒ์ƒ‰ ๊ฐœ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ˜„์žฌ ํƒ์ƒ‰ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์‚ผ๋Š”๋‹ค. ๊ทธ๋Ÿฌ๊ณ ์„œ ๊ฒฝ๋กœ๋ช…์˜ ๊ตฌ์„ฑ ํ•ญ๋ชฉ('/' ๋ฌธ์ž๋กœ ๊ตฌ๋ถ„๋œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด)๋“ค ์ค‘์—์„œ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์„ ์ œ์™ธํ•œ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ํ˜„์žฌ ํƒ์ƒ‰ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๊ทธ ํ•ญ๋ชฉ์„ ์ฐพ์•„ ๋ณธ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜„์žฌ ํƒ์ƒ‰ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ํƒ์ƒ‰ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฉด EACCES("๊ถŒํ•œ ๊ฑฐ๋ถ€") ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ทธ ํ•ญ๋ชฉ์„ ์ฐพ์ง€ ๋ชปํ–ˆ์œผ๋ฉด ENOENT("๊ทธ๋Ÿฐ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์—†์Œ") ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ทธ ํ•ญ๋ชฉ์„ ์ฐพ์•˜์ง€๋งŒ ๋””๋ ‰ํ„ฐ๋ฆฌ๋„ ์•„๋‹ˆ๊ณ  ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋„ ์•„๋‹ˆ๋ฉด ENOTDIR("๋””๋ ‰ํ„ฐ๋ฆฌ ์•„๋‹˜") ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ทธ ํ•ญ๋ชฉ์„ ์ฐพ์•˜๊ณ  ๋””๋ ‰ํ„ฐ๋ฆฌ์ด๋ฉด ๊ทธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ˜„์žฌ ํƒ์ƒ‰ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์‚ผ๊ณ ์„œ ๋‹ค์Œ ๊ตฌ์„ฑ ํ•ญ๋ชฉ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

๊ทธ ํ•ญ๋ชฉ์„ ์ฐพ์•˜๊ณ  ์‹ฌ๋ณผ๋ฆญ ๋งํฌ์ด๋ฉด ๋จผ์ € (ํ˜„์žฌ ํƒ์ƒ‰ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํƒ์ƒ‰ ๊ฐœ์‹œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ํ•ด์„œ) ๊ทธ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ํ•ด์„ํ•œ๋‹ค. ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๊ทธ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ฒฐ๊ณผ๊ฐ€ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ฉด ENOTDIR ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํ•ด์„์ด ์„ฑ๊ณตํ•ด์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๊ทธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํ˜„์žฌ ํƒ์ƒ‰ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์‚ผ๊ณ  ๋‹ค์Œ ๊ตฌ์„ฑ ํ•ญ๋ชฉ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ์ฐธ๊ณ ๋กœ ๊ทธ ํ•ด์„ ๊ณผ์ • ์ค‘์— ๊ฒฝ๋กœ๋ช… ์„ ๋‘๋ถ€('dirname') ๊ตฌ์„ฑ ํ•ญ๋ชฉ์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ์ธ ํŒŒ์ผ๋ช…์ด ์žˆ์–ด์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ํ•ด์„๋˜๋ฉด (๊ทธ๋ฆฌ๊ณ  ๋˜ ๋‹ค์‹œ ๊ทธ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์„ ๋‘๋ถ€ ๊ตฌ์„ฑ ํ•ญ๋ชฉ์— ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ์žˆ๊ณ  ํ•˜๋ฉด) ์žฌ๊ท€๊ฐ€ ์ˆ˜๋ฐ˜๋  ์ˆ˜ ์žˆ๋‹ค. ์ปค๋„์—์„œ์˜ ์Šคํƒ ๋„˜์นจ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ๋˜ ์„œ๋น„์Šค ๊ฑฐ๋ถ€๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์žฌ๊ท€ ๊นŠ์ด์™€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋Š” ํšŸ์ˆ˜์— ์ƒํ•œ์ด ์žˆ๋‹ค. ๊ทธ ์ตœ๋Œ€์น˜๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ELOOP("์‹ฌ๋ณผ๋ฆญ ๋งํฌ ๋‹จ๊ณ„ ๊ณผ๋‹ค") ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

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

3๋‹จ๊ณ„: ๋งˆ์ง€๋ง‰ ๊ตฌ์„ฑ ํ•ญ๋ชฉ ์ฐพ๊ธฐ

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

. ๋ฐ ..

๊ด€๋ก€์ƒ ๊ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ์—๋Š” "." ๋ฐ ".." ํ•ญ๋ชฉ์ด ์žˆ์œผ๋ฉฐ ์ด๋Š” ๊ฐ๊ฐ ๊ทธ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ž์ฒด์™€ ๋ถ€๋ชจ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

๊ฒฝ๋กœ ํ•ด์„ ๊ณผ์ •์—์„œ๋Š” ๋ฌผ๋ฆฌ์  ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๊ทธ ํ•ญ๋ชฉ๋“ค์ด ์‹ค์ œ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ๊ทธ ํ•ญ๋ชฉ๋“ค์ด ๊ด€๋ก€์  ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„๋‹ค๊ณ  ์ƒ์ •ํ•œ๋‹ค.

๋ฃจํŠธ ๋„ˆ๋จธ๋กœ๋Š” ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์—†๋‹ค. ์ฆ‰ "/.."๋Š” "/"์™€ ๊ฐ™๋‹ค.

๋งˆ์šดํŠธ ์ง€์ 

"mount dev path" ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ณ  ๋‚˜๋ฉด ๊ฒฝ๋กœ๋ช… "path"๊ฐ€ ์žฅ์น˜ "dev"์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ณ„์ธต ๊ตฌ์กฐ์˜ ๋ฃจํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๋ฉฐ ์ด์ „์— ๊ฐ€๋ฆฌํ‚ค๋˜ ๊ฑด ๋” ์ด์ƒ ๊ฐ€๋ฆฌํ‚ค์ง€ ์•Š๋Š”๋‹ค.

๋งˆ์šดํŠธ ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฐ–์œผ๋กœ ๋น ์ ธ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. "path/.."๋Š” "path"์˜ ๋ถ€๋ชจ ๋””๋ ‰ํ„ฐ๋ฆฌ, ์ฆ‰ "dev"์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ณ„์ธต ๊ตฌ์กฐ ๋ฐ–์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

๋’ค์— ๋ถ™์€ ์Šฌ๋ž˜์‹œ

๊ฒฝ๋กœ๋ช…์ด '/'๋กœ ๋๋‚˜๋ฉด ๋ฐ”๋กœ ์•ž ๊ตฌ์„ฑ ํ•ญ๋ชฉ์„ 2๋ฒˆ ๋‹จ๊ณ„์—์„œ์ฒ˜๋Ÿผ ํ•ด์„ํ•œ๋‹ค. ์ฆ‰ ์กด์žฌํ•ด์•ผ ํ•˜๊ณ  ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ •ํ•ด์ ธ์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋’ค์— ๋ถ™์€ '/'๋ฅผ ๋ฌด์‹œํ•œ๋‹ค. (๋‹ค์‹œ ๋งํ•ด ๋’ค์— '/'๊ฐ€ ๋ถ™์€ ๊ฒฝ๋กœ๋ช…์€ ๊ฑฐ๊ธฐ '.'๋ฅผ ๋ง๋ถ™์—ฌ์„œ ์–ป์€ ๊ฒฝ๋กœ๋ช…๊ณผ ๋™๋“ฑํ•˜๋‹ค.)

๋งˆ์ง€๋ง‰์˜ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ

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

๊ธธ์ด ์ œํ•œ

๊ฒฝ๋กœ๋ช… ๊ธธ์ด์— ์ตœ๋Œ“๊ฐ’์ด ์žˆ๋‹ค. ๊ฒฝ๋กœ๋ช…์ด (๋˜๋Š” ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํ•ด์„ ์ค‘ ์–ป์€ ์ค‘๊ฐ„ ๊ฒฝ๋กœ๋ช…์ด) ๋„ˆ๋ฌด ๊ธธ๋ฉด ENAMETOOLONG("ํŒŒ์ผ๋ช… ๋„ˆ๋ฌด ๊ธบ") ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋นˆ ๊ฒฝ๋กœ๋ช…

์›๋ž˜ ์œ ๋‹‰์Šค์—์„œ ๋นˆ ๊ฒฝ๋กœ๋ช…์€ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌ์ผฐ๋‹ค. ์š”์ฆ˜์˜ POSIX์—์„œ๋Š” ๋นˆ ๊ฒฝ๋กœ๋ช…์ด ์„ฑ๊ณต์ ์œผ๋กœ ํ•ด์„๋ผ์„  ์•ˆ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ์ด ๊ฒฝ์šฐ ENOENT๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ถŒํ•œ

ํŒŒ์ผ์˜ ๊ถŒํ•œ ๋น„ํŠธ๋Š” 3๋น„ํŠธ ๋ฌถ์Œ ์„ธ ๊ฐœ๋กœ ์ด๋ค„์ ธ ์žˆ๋‹ค. chmod(1) ๋ฐ stat(2)์„ ์ฐธ๊ณ ํ•˜๋ผ. ํ˜ธ์ถœ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํšจ ์‚ฌ์šฉ์ž ID๊ฐ€ ํŒŒ์ผ์˜ ์†Œ์œ ์ž ID์™€ ๊ฐ™์„ ๋•Œ ์ฒซ ๋ฒˆ์งธ ๋ฌถ์Œ์„ ์“ด๋‹ค. ํŒŒ์ผ์˜ ๊ทธ๋ฃน ID๊ฐ€ ํ˜ธ์ถœ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํšจ ๊ทธ๋ฃน ID์™€ ๊ฐ™๊ฑฐ๋‚˜ ํ˜ธ์ถœ ํ”„๋กœ์„ธ์Šค์˜ (setgroups(2)๋กœ ์„ค์ •ํ•œ) ์ถ”๊ฐ€ ๊ทธ๋ฃน ID๋“ค ์ค‘ ํ•˜๋‚˜์™€ ๊ฐ™์„ ๋•Œ ๋‘ ๋ฒˆ์งธ ๋ฌถ์Œ์„ ์“ด๋‹ค. ์–ด๋А ์ชฝ์—๋„ ํ•ด๋‹นํ•˜์ง€ ์•Š์„ ๋•Œ ์„ธ ๋ฒˆ์งธ ๊ทธ๋ฃน์„ ์“ด๋‹ค.

์‚ฌ์šฉํ•˜๋Š” ์„ธ ๋น„ํŠธ ์ค‘์— ์ฒซ ๋ฒˆ์งธ ๋น„ํŠธ๊ฐ€ ์ฝ๊ธฐ ๊ถŒํ•œ์„, ๋‘ ๋ฒˆ์งธ๊ฐ€ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๊ฒฐ์ •ํ•˜๋ฉฐ, ๋งˆ์ง€๋ง‰์€ ์ผ๋ฐ˜ ํŒŒ์ผ์ด๋ฉด ์‹คํ–‰ ๊ถŒํ•œ์„, ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฉด ํƒ์ƒ‰ ๊ถŒํ•œ์„ ๊ฒฐ์ •ํ•œ๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ๊ถŒํ•œ ๊ฒ€์‚ฌ ์‹œ ์‹คํšจ ์‚ฌ์šฉ์ž ID๊ฐ€ ์•„๋‹ˆ๋ผ fsuid๋ฅผ ์“ด๋‹ค. ๋ณดํ†ต์€ fsuid๊ฐ€ ์‹คํšจ ์‚ฌ์šฉ์ž ID์™€ ๊ฐ™์ง€๋งŒ setfsuid(2) ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋กœ fsuid๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

(์—ฌ๊ธฐ์„œ "fsuid"๋Š” "ํŒŒ์ผ ์‹œ์Šคํ…œ ์‚ฌ์šฉ์ž ID" ์ •๋„์˜ ๋œป์ด๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ™์€ ์‹คํšจ ์‚ฌ์šฉ์ž ID๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์‹œ๊ทธ๋„์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์—ˆ๋˜ ์‹œ์ ˆ์— ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ NFS ์„œ๋ฒ„ ๊ตฌํ˜„์„ ์œ„ํ•ด ์ด ๊ฐœ๋…์ด ํ•„์š”ํ–ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ตฌ์‹์ด ๋˜์—ˆ๋‹ค. ์•„๋ฌด๋„ setfsuid(2)๋ฅผ ์“ฐ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.)

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ์‹คํšจ ๊ทธ๋ฃน ID๊ฐ€ ์•„๋‹ˆ๋ผ fsgid("ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ทธ๋ฃน ID")๋ฅผ ์“ด๋‹ค. setfsgid(2) ์ฐธ๊ณ .

๊ถŒํ•œ ๊ฒ€์‚ฌ ์šฐํšŒ: ์ˆ˜ํผ์œ ์ €์™€ ์—ญ๋Šฅ

์ „ํ†ต์ ์ธ ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ์—์„œ ์ˆ˜ํผ์œ ์ €(root, ์‚ฌ์šฉ์ž ID 0)๋Š” ์ „๋Šฅํ•˜๋ฉฐ ํŒŒ์ผ ์ ‘๊ทผ ์‹œ ๋ชจ๋“  ๊ถŒํ•œ ์ œ์•ฝ์„ ์šฐํšŒํ•œ๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ์ˆ˜ํผ์œ ์ € ํŠน๊ถŒ์ด ์—ฌ๋Ÿฌ ์—ญ๋Šฅ(capabilities(7) ์ฐธ๊ณ )๋“ค๋กœ ๋‚˜๋ˆ ์ ธ ์žˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ์—ญ๋Šฅ์ด ํŒŒ์ผ ๊ถŒํ•œ ๊ฒ€์‚ฌ์™€ ๊ด€๋ จ์žˆ๋Š”๋ฐ, CAP_DAC_OVERRIDE์™€ CAP_DAC_READ_SEARCH์ด๋‹ค. (ํ”„๋กœ์„ธ์Šค์˜ fsuid๊ฐ€ 0์ด๋ฉด ์ด ์—ญ๋Šฅ๋“ค์„ ๊ฐ€์ง„๋‹ค.)

CAP_DAC_OVERRIDE ์—ญ๋Šฅ์€ ๋ชจ๋“  ๊ถŒํ•œ ๊ฒ€์‚ฌ๋ฅผ ๋ฌด์‹œํ•˜๋˜ ํŒŒ์ผ์˜ ์„ธ ์‹คํ–‰ ๊ถŒํ•œ ๋น„ํŠธ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์„ค์ •๋ผ ์žˆ์„ ๋•Œ๋งŒ ์‹คํ–‰ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.

CAP_DAC_READ_SEARCH ์—ญ๋Šฅ์€ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ฐ ํƒ์ƒ‰ ๊ถŒํ•œ, ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.

SEE ALSO

readlink(2), capabilities(7), credentials(7), symlink(7)


2017-11-26

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