chroot(2) - wariua/manpages-ko GitHub Wiki

NAME

chroot - ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ”๊พธ๊ธฐ

SYNOPSIS

#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 ์ „:
์—†์Œ

DESCRIPTION

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 ํŠธ๋ฆฌ ๋ฐ–์˜ ํŒŒ์ผ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ errno๋ฅผ ์ ์ ˆํžˆ ์„ค์ •ํ•œ๋‹ค.

ERRORS

ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๋“ค์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์— ๋‚˜์—ดํ•œ ๊ฒƒ์€ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜๋“ค์ด๋‹ค.

EACCES
๊ฒฝ๋กœ ์„ ๋‘๋ถ€์˜ ์–ด๋А ์š”์†Œ์— ๋Œ€ํ•ด ํƒ์ƒ‰ ๊ถŒํ•œ์ด ๊ฑฐ๋ถ€๋˜์—ˆ๋‹ค. (path_resolution(7) ์ฐธ๊ณ .)
EFAULT
path๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„ ๋ฐ–์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค.
EIO
I/O ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
ELOOP
path๋ฅผ ํ•ด์„ํ•˜๋Š” ๋™์•ˆ ๋„ˆ๋ฌด ๋งŽ์€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋‚ฌ๋‹ค.
ENAMETOOLONG
path๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๋‹ค.
ENOENT
ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
ENOMEM
์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค.
ENOTDIR
path์˜ ํ•œ ์š”์†Œ๊ฐ€ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋‹ค.
EPERM
ํ˜ธ์ถœ์ž์—๊ฒŒ ์ถฉ๋ถ„ํ•œ ํŠน๊ถŒ์ด ์—†๋‹ค.

CONFORMING TO

SVr4, 4.4BSD, SUSv2 (LEGACY๋กœ ํ‘œ์‹œ). ์ด ํ•จ์ˆ˜๋Š” POSIX.1-2001์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค.

NOTES

fork(2)๋ฅผ ํ†ตํ•ด ์ƒ๊ธด ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” ๋ถ€๋ชจ์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ฌผ๋ ค๋ฐ›๋Š”๋‹ค. execve(2)์—์„œ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.

ํŠน์ˆ˜ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ /proc/[pid]/root๋ฅผ ์‚ฌ์šฉํ•ด ํ”„๋กœ์„ธ์Šค์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ proc(5) ์ฐธ๊ณ .

FreeBSD์—๋Š” ๋” ๊ฐ•๋ ฅํ•œ jail() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์žˆ๋‹ค.

SEE ALSO

chroot(1), chdir(2), pivot_root(2), path_resolution(7), switch_root(8)


2019-03-06

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