path_resolution(7) - wariua/manpages-ko GitHub Wiki
path_resolution - ๊ฒฝ๋ก๋ช ์ผ๋ก ํ์ผ์ ์ ํ๋ ๋ฐฉ์
์ด๋ค ์ ๋์ค/๋ฆฌ๋ ์ค ์์คํ ํธ์ถ์๋ ๋งค๊ฐ๋ณ์๋ก ํ์ผ๋ช ์ด ํ ๊ฐ๋ ๊ทธ ์ด์ ์๋ค. ํ์ผ๋ช (์ฆ ๊ฒฝ๋ก๋ช )์ ๋ค์๊ณผ ๊ฐ์ด ํด์ํ๋ค.
๊ฒฝ๋ก๋ช
์ด '/' ๋ฌธ์๋ก ์์ํ๋ฉด ํธ์ถ ํ๋ก์ธ์ค์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๊ฐ ํ์ ๊ฐ์ ๋๋ ํฐ๋ฆฌ๋ค. (ํ๋ก์ธ์ค๋ ๋ถ๋ชจ์๊ฒ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฌผ๋ ค๋ฐ๋๋ค. ๋ณดํต์ ํ์ผ ๊ณ์ธต ๊ตฌ์กฐ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์ผ ๊ฒ์ด๋ค. ํ์ง๋ง ํ๋ก์ธ์ค์์ chroot(2) ์์คํ
ํธ์ถ์ ์ฌ์ฉํด ๋ค๋ฅธ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฐ์ง ์๋ ์๋ค. ๋ (ํ๋ก์ธ์ค ์์ ์ด๋ ์ด๋ ์ ์กฐ๊ฐ) CLONE_NEWNS
ํ๋๊ทธ ์ค์ ํ clone(2) ์์คํ
ํธ์ถ์ ํตํด ์์๋ ๊ฒฝ์ฐ ์์ ํ ๋
๋ฆฝ์ ์ธ ๋ง์ดํธ ๋ค์์คํ์ด์ค๋ฅผ ๊ฐ์ง ์๋ ์๋ค.) ์ด๋ ๊ฒ ๊ฒฝ๋ก๋ช
์ '/' ๋ถ๋ถ์ ์ฒ๋ฆฌํ๋ค.
๊ฒฝ๋ก๋ช ์ด '/' ๋ฌธ์๋ก ์์ํ์ง ์์ผ๋ฉด ํ๋ก์ธ์ค์ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ๊ฐ ํด์ ๊ณผ์ ์ ํ์ ๊ฐ์ ๋๋ ํฐ๋ฆฌ๋ค. (์ด ์ญ์ ๋ถ๋ชจ์๊ฒ์ ๋ฌผ๋ ค๋ฐ๋๋ค. chdir(2) ์์คํ ํธ์ถ๋ก ๋ฐ๊ฟ ์ ์๋ค.)
'/' ๋ฌธ์๋ก ์์ํ๋ ๊ฒฝ๋ก๋ช ์ ์ ๋ ๊ฒฝ๋ก๋ช ์ด๋ผ๊ณ ํ๋ค. '/'๋ก ์์ํ์ง ์๋ ๊ฒฝ๋ก๋ช ์ ์๋ ๊ฒฝ๋ก๋ช ์ด๋ผ๊ณ ํ๋ค.
ํ์ ๊ฐ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ์ฌ ํ์ ๋๋ ํฐ๋ฆฌ๋ก ์ผ๋๋ค. ๊ทธ๋ฌ๊ณ ์ ๊ฒฝ๋ก๋ช ์ ๊ตฌ์ฑ ํญ๋ชฉ('/' ๋ฌธ์๋ก ๊ตฌ๋ถ๋ ๋ถ๋ถ ๋ฌธ์์ด)๋ค ์ค์์ ๋ง์ง๋ง ํญ๋ชฉ์ ์ ์ธํ ๊ฐ๊ฐ์ ๋ํด ํ์ฌ ํ์ ๋๋ ํฐ๋ฆฌ์์ ๊ทธ ํญ๋ชฉ์ ์ฐพ์ ๋ณธ๋ค.
ํ๋ก์ธ์ค๊ฐ ํ์ฌ ํ์ ๋๋ ํฐ๋ฆฌ์ ๋ํ ํ์ ๊ถํ์ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฉด EACCES
("๊ถํ ๊ฑฐ๋ถ") ์ค๋ฅ๋ฅผ ๋ฐํํ๋ค.
๊ทธ ํญ๋ชฉ์ ์ฐพ์ง ๋ชปํ์ผ๋ฉด ENOENT
("๊ทธ๋ฐ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ ์์") ์ค๋ฅ๋ฅผ ๋ฐํํ๋ค.
๊ทธ ํญ๋ชฉ์ ์ฐพ์์ง๋ง ๋๋ ํฐ๋ฆฌ๋ ์๋๊ณ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ ์๋๋ฉด ENOTDIR
("๋๋ ํฐ๋ฆฌ ์๋") ์ค๋ฅ๋ฅผ ๋ฐํํ๋ค.
๊ทธ ํญ๋ชฉ์ ์ฐพ์๊ณ ๋๋ ํฐ๋ฆฌ์ด๋ฉด ๊ทธ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ์ฌ ํ์ ๋๋ ํฐ๋ฆฌ๋ก ์ผ๊ณ ์ ๋ค์ ๊ตฌ์ฑ ํญ๋ชฉ์ผ๋ก ๋์ด๊ฐ๋ค.
๊ทธ ํญ๋ชฉ์ ์ฐพ์๊ณ ์ฌ๋ณผ๋ฆญ ๋งํฌ์ด๋ฉด ๋จผ์ (ํ์ฌ ํ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ์ ๊ฐ์ ๋๋ ํฐ๋ฆฌ๋ก ํด์) ๊ทธ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ํด์ํ๋ค. ์ค๋ฅ ๋ฐ์ ์ ๊ทธ ์ค๋ฅ๋ฅผ ๋ฐํํ๋ค. ๊ฒฐ๊ณผ๊ฐ ๋๋ ํฐ๋ฆฌ๊ฐ ์๋๋ฉด ENOTDIR
์ค๋ฅ๋ฅผ ๋ฐํํ๋ค. ์ฌ๋ณผ๋ฆญ ๋งํฌ ํด์์ด ์ฑ๊ณตํด์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฐํํ๋ฉด ๊ทธ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ์ฌ ํ์ ๋๋ ํฐ๋ฆฌ๋ก ์ผ๊ณ ๋ค์ ๊ตฌ์ฑ ํญ๋ชฉ์ผ๋ก ๋์ด๊ฐ๋ค. ์ฐธ๊ณ ๋ก ๊ทธ ํด์ ๊ณผ์ ์ค์ ๊ฒฝ๋ก๋ช
์ ๋๋ถ('dirname') ๊ตฌ์ฑ ํญ๋ชฉ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ์ธ ํ์ผ๋ช
์ด ์์ด์ ๋๋ ํฐ๋ฆฌ๋ก ํด์๋๋ฉด (๊ทธ๋ฆฌ๊ณ ๋ ๋ค์ ๊ทธ ๋๋ ํฐ๋ฆฌ์ ์ ๋๋ถ ๊ตฌ์ฑ ํญ๋ชฉ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ ์๊ณ ํ๋ฉด) ์ฌ๊ท๊ฐ ์๋ฐ๋ ์ ์๋ค. ์ปค๋์์์ ์คํ ๋์นจ์ ๋ฐฉ์งํ๊ธฐ ์ํด, ๋ ์๋น์ค ๊ฑฐ๋ถ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด์ ์ฌ๊ท ๊น์ด์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ ํ์์ ์ํ์ด ์๋ค. ๊ทธ ์ต๋์น๋ฅผ ์ด๊ณผํ๋ฉด ELOOP
("์ฌ๋ณผ๋ฆญ ๋งํฌ ๋จ๊ณ ๊ณผ๋ค") ์ค๋ฅ๋ฅผ ๋ฐํํ๋ค.
ํ์ฌ ๋ฆฌ๋ ์ค ๊ตฌํ์์ ๊ฒฝ๋ก๋ช ์ ํด์ํ๋ ๋์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ ํ์๋ ์ต๋ 40๋ฒ์ด๋ค. ์ฌ๊ท ๊น์ด์ ๋ํ ์ ํ์ด ์ปค๋ 2.6.18 ์ ์๋ 5์๋ค. ๋ฆฌ๋ ์ค 2.6.18๋ถํฐ ๊ทธ ์ ํ์ด 8๋ก ์ฌ๋ผ๊ฐ๋ค. ๋ฆฌ๋ ์ค 4.2์์ ๊ฒฝ๋ก๋ช ๊ฒฐ์ ์ฝ๋๋ฅผ ์๋ก ์์ ํด์ ์ฌ๊ท๋ฅผ ์ฐ์ง ์๊ฒ ๋ง๋ค์๊ณ , ๊ทธ๋์ ๊ฒฝ๋ก๋ช ์ ์ฒด์ ์ผ๋ก ์ต๋ 40๋ฒ ํด์ํ๋ ์ ํ๋ง ๋จ์ ์๋ค.
๊ฒฝ๋ก๋ช ์ ๋ง์ง๋ง ๊ตฌ์ฑ ํญ๋ชฉ์ ํ์ธํ๋ ๊ฑด ๋ค๋ฅธ ํญ๋ชฉ๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋จ๊ณ ์ค๋ช ์ฒ๋ผ ์ด๋ค์ง๋ ๋ ๊ฐ์ง ์ฐจ์ด๊ฐ ์๋ค. ์ฒซ์งธ๋ก, ๋ง์ง๋ง ๊ตฌ์ฑ ํญ๋ชฉ์ ๋๋ ํฐ๋ฆฌ์ผ ํ์๊ฐ ์๋ค. (์ ์ด๋ ๊ฒฝ๋ก ํด์ ๊ณผ์ ๊ณผ ๊ด๋ จํด์ ๊ทธ๋ ๋ค. ๊ฐ๋ณ ์์คํ ํธ์ถ์์์ ์๊ตฌ์ ๋ฐ๋ผ ๋๋ ํฐ๋ฆฌ์ฌ์ผ ํ ์๋ ์๊ณ ์๋์ด์ผ ํ ์๋ ์๋ค.) ๋์งธ๋ก, ๊ทธ ๊ตฌ์ฑ ํญ๋ชฉ์ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ๊ฐ ๊ผญ ์ค๋ฅ์ธ ๊ฑด ์๋๋ค. ๊ทธ ํญ๋ชฉ์ ๋ง๋ค๋ ค๋ ์ฐธ์ผ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ง์ง๋ง ๊ตฌ์ฑ ํญ๋ชฉ ์ฒ๋ฆฌ ๋ฐฉ์์ ๋ํ ์ธ๋ถ ๋ด์ฉ์ ๊ฐ๋ณ ์์คํ ํธ์ถ์ ๋งค๋ด์ผ ํ์ด์ง์์ ์ค๋ช ํ๋ค.
๊ด๋ก์ ๊ฐ ๋๋ ํฐ๋ฆฌ์๋ "." ๋ฐ ".." ํญ๋ชฉ์ด ์์ผ๋ฉฐ ์ด๋ ๊ฐ๊ฐ ๊ทธ ๋๋ ํฐ๋ฆฌ ์์ฒด์ ๋ถ๋ชจ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๊ฒฝ๋ก ํด์ ๊ณผ์ ์์๋ ๋ฌผ๋ฆฌ์ ํ์ผ ์์คํ ์ ๊ทธ ํญ๋ชฉ๋ค์ด ์ค์ ์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๊ทธ ํญ๋ชฉ๋ค์ด ๊ด๋ก์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค๊ณ ์์ ํ๋ค.
๋ฃจํธ ๋๋จธ๋ก๋ ๋ด๋ ค๊ฐ ์ ์๋ค. ์ฆ "/.."๋ "/"์ ๊ฐ๋ค.
"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
์ญ๋ฅ์ ๋๋ ํฐ๋ฆฌ์ ๋ํ ์ฝ๊ธฐ ๋ฐ ํ์ ๊ถํ, ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ ํ์ผ์ ๋ํ ์ฝ๊ธฐ ๊ถํ์ ๋ถ์ฌํ๋ค.
readlink(2), capabilities(7), credentials(7), symlink(7)
2017-11-26