chroot(2) - wariua/manpages-ko GitHub Wiki
chroot - ๋ฃจํธ ๋๋ ํฐ๋ฆฌ ๋ฐ๊พธ๊ธฐ
#include <unistd.h>
int chroot(const char *path);
glibc ๊ธฐ๋ฅ ํ์ธ ๋งคํฌ๋ก ์๊ฑด (feature_test_macros(7) ์ฐธ๊ณ ):
-
chroot()
: -
- glibc 2.2.2๋ถํฐ:
-
_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
|| /* glibc 2.20๋ถํฐ: */ _DEFAULT_SOURCE
|| /* glibc ๋ฒ์ <= 2.19: */ _BSD_SOURCE
- glibc 2.2.2 ์ :
- ์์
EACCES
- ๊ฒฝ๋ก ์ ๋๋ถ์ ์ด๋ ์์์ ๋ํด ํ์ ๊ถํ์ด ๊ฑฐ๋ถ๋์๋ค. (path_resolution(7) ์ฐธ๊ณ .)
EFAULT
-
path
๊ฐ ์ ๊ทผ ๊ฐ๋ฅํ ์ฃผ์ ๊ณต๊ฐ ๋ฐ์ ๊ฐ๋ฆฌํค๊ณ ์๋ค. EIO
- I/O ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
ELOOP
-
path
๋ฅผ ํด์ํ๋ ๋์ ๋๋ฌด ๋ง์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ง๋ฌ๋ค. ENAMETOOLONG
-
path
๊ฐ ๋๋ฌด ๊ธธ๋ค. ENOENT
- ํ์ผ์ด ์กด์ฌํ์ง ์๋๋ค.
ENOMEM
- ์ฌ์ฉ ๊ฐ๋ฅํ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ์ง ์๋ค.
ENOTDIR
-
path
์ ํ ์์๊ฐ ๋๋ ํฐ๋ฆฌ๊ฐ ์๋๋ค. EPERM
- ํธ์ถ์์๊ฒ ์ถฉ๋ถํ ํน๊ถ์ด ์๋ค.
chroot()
๋ ํธ์ถ ํ๋ก์ธ์ค์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ฅผ path
์ ์ง์ ํ ๋๋ ํฐ๋ฆฌ๋ก ๋ฐ๊พผ๋ค. /
์ผ๋ก ์์ํ๋ ๊ฒฝ๋ก๋ช
์ ๊ทธ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐ๊ฒ ๋๋ค. ํธ์ถ ํ๋ก์ธ์ค์ ๋ชจ๋ ์์๋ค์ด ๊ทธ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฌผ๋ ค๋ฐ๋๋ค.
ํน๊ถ์ ๊ฐ์ง (๋ฆฌ๋
์ค: ์๊ธฐ ์ฌ์ฉ์ ๋ค์์คํ์ด์ค์์ CAP_SYS_CHROOT
์ญ๋ฅ์ ๊ฐ์ง) ํ๋ก์ธ์ค๋ง chroot()
๋ฅผ ํธ์ถํ ์ ์๋ค.
์ด ํธ์ถ์ ๊ฒฝ๋ก๋ช
ํด์ ๊ณผ์ ์ ์ฌ๋ฃ ํ๋๋ฅผ ๋ฐ๊ฟ ๋ฟ ๋ค๋ฅธ ์๋ฌด๊ฒ๋ ํ์ง ์๋๋ค. ํนํ ์์ ํ ํ๋ก์ธ์ค ์๋๋ฐ์ค๋ ํ์ผ ์์คํ
ํธ์ถ ์ ์ฝ์ฒ๋ผ ์ด๋ค ์ข
๋ฅ๋ ๋ณด์ ๋ชฉ์ ์ผ๋ก ์ฐ๊ธฐ ์ํ ๊ฒ์ด ์๋๋ค. ๊ณผ๊ฑฐ์๋ ๋ฐ๋ชฌ๋ค์์ chroot()
๋ฅผ ์ฌ์ฉํด ์ค์ค๋ก๋ฅผ ์ ์ฝํ ํ์ ์ ๋ขฐํ ์ ์๋ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๊ฒฝ๋ก๋ฅผ open(2) ๊ฐ์ ์์คํ
ํธ์ถ์ ์ ๋ฌํ๋ค. ํ์ง๋ง ํด๋๊ฐ chroot ๋๋ ํฐ๋ฆฌ ๋ฐ์ผ๋ก ์ฎ๊ฒจ์ง๋ค๋ฉด ๊ณต๊ฒฉ์๊ฐ ๊ทธ๊ฑธ ์
์ฉํด chroot ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฒ์ด๋ ์ ์๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ฎ๊ฒจ์ง ๋๋ ํฐ๋ฆฌ๋ก chdir(2) ํ๊ณ ์ ์ด๋๋๊ธธ ๊ธฐ๋ค๋ฆฐ ๋ค์ ../../../etc/passwd
๊ฐ์ ๊ฒฝ๋ก๋ฅผ ์ฌ๋ ๊ฒ์ด๋ค.
chdir(2)์ด ํ์ฉ๋์ง ์๋๋ค๋ฉด ์ด์ง ๋ ๋ณต์กํ ๋ณํ ๊ธฐ๋ฒ์ด ์ผ๋ถ ๊ฒฝ์ฐ์ ํตํ๋ค. ์ด๋ค ๋ฐ๋ชฌ์ "chroot ๋๋ ํฐ๋ฆฌ"๋ฅผ ์ง์ ํ ์ ์๋ค๋ฉด ๊ทธ๊ฑด ์ผ๋ฐ์ ์ผ๋ก ์๊ฒฉ ์ฌ์ฉ์๊ฐ chroot ๋๋ ํฐ๋ฆฌ ๋ฐ์ ํ์ผ์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ํ๋ ค๋ฉด ์ ๋๋ก ํด๋๋ค์ด ๋ฐ์ผ๋ก ์ฎ๊ฒจ์ง์ง ์๊ฒ ํด์ผ ํ๋ค๋ ๋ป์ด๋ค.
์ด ํธ์ถ์ ํ์ฌ ์์
๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฐ๊พธ์ง ์์ผ๋ฉฐ, ๋ฐ๋ผ์ ํธ์ถ ํ์ '.
'๊ฐ '/
'์ ์์นํ ํธ๋ฆฌ ๋ฐ์ ์์ ์ ์๋ค. ํนํ ์ํผ์ ์ ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ํด์ "chroot ๊ฐ์ฅ"์ ํ์ถํ ์ ์๋ค.
mkdir foo; chroot foo; cd ..
์ด ํธ์ถ์ ์ด๋ฆฐ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ๋ซ์ง ์์ผ๋ฉฐ, ๊ทธ๋์ ๊ทธ๋ฐ ํ์ผ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํตํด chroot ํธ๋ฆฌ ๋ฐ์ ํ์ผ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ์๋ ์๋ค.
์ฑ๊ณต ์ 0์ ๋ฐํํ๋ค. ์ค๋ฅ ์ -1์ ๋ฐํํ๋ฉฐ errno
๋ฅผ ์ ์ ํ ์ค์ ํ๋ค.
ํ์ผ ์์คํ ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ค๋ฅ๋ค์ ๋ฐํํ ์ ์๋ค. ์๋์ ๋์ดํ ๊ฒ์ ์ผ๋ฐ์ ์ธ ์ค๋ฅ๋ค์ด๋ค.
SVr4, 4.4BSD, SUSv2 (LEGACY๋ก ํ์). ์ด ํจ์๋ POSIX.1-2001์ ํฌํจ๋์ด ์์ง ์๋ค.
fork(2)๋ฅผ ํตํด ์๊ธด ์์ ํ๋ก์ธ์ค๋ ๋ถ๋ชจ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฌผ๋ ค๋ฐ๋๋ค. execve(2)์์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ฐ๊พธ์ง ์๋๋ค.
ํน์ ์ฌ๋ณผ๋ฆญ ๋งํฌ /proc/[pid]/root
๋ฅผ ์ฌ์ฉํด ํ๋ก์ธ์ค์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์๋ผ ์ ์๋ค. ์์ธํ ๋ด์ฉ์ proc(5) ์ฐธ๊ณ .
FreeBSD์๋ ๋ ๊ฐ๋ ฅํ jail()
์์คํ
ํธ์ถ์ด ์๋ค.
chroot(1)
, chdir(2), pivot_root(2), path_resolution(7), switch_root(8)
2019-03-06