Glibc 2.35 ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฆด๋ฆฌ์Šค

2.35๊ฐœ์›” ๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— ISO C11 ๋ฐ POSIX.1-2017 ํ‘œ์ค€์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์ค€์ˆ˜ํ•˜๋Š” GNU C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(glibc) 66 ์‹œ์Šคํ…œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฆด๋ฆฌ์Šค์—๋Š” XNUMX๋ช…์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ˆ˜์ •ํ•œ ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Glibc 2.35์— ๊ตฌํ˜„๋œ ์ผ๋ถ€ ๊ฐœ์„  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์กฐํ•ฉ ๊ทœ์น™์„ ํฌํ•จํ•˜๋Š” "C.UTF-8" ๋กœ์ผ€์ผ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์ง€๋งŒ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด fnmatch, regexec ๋ฐ regcomp ํ•จ์ˆ˜์—์„œ ASCII ๋ฒ”์œ„์˜ ์‚ฌ์šฉ์œผ๋กœ ์ œํ•œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ผ€์ผ์€ ์•ฝ 400KB์ด๋ฉฐ ๊ทธ ์ค‘ 346KB๋Š” ์œ ๋‹ˆ์ฝ”๋“œ์šฉ LC_CTYPE ๋ฐ์ดํ„ฐ์ด๋ฉฐ ๋ณ„๋„ ์„ค์น˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(Glibc์— ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š์Œ).
  • ์ธ์ฝ”๋”ฉ ๋ฐ์ดํ„ฐ, ๋ฌธ์ž ์œ ํ˜• ์ •๋ณด ๋ฐ ์Œ์—ญ ํ‘œ๊ฐ€ ์œ ๋‹ˆ์ฝ”๋“œ 14.0.0 ์‚ฌ์–‘์„ ์ง€์›ํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์•ˆ์— ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋” ์ข์€ ์œ ํ˜•(fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqrtfNx, fMfmafN, fMfmafNx, fMxfmafN ๋ฐ fMxfmafNx)์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผํ•˜๋Š” ํ•จ์ˆ˜ ๋ฐ ๋งคํฌ๋กœ๊ฐ€ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์€ TS 18661-1:2014, TS 18661-3:2015 ์‚ฌ์–‘์— ์„ค๋ช…๋˜์–ด ์žˆ์œผ๋ฉฐ ํ–ฅํ›„ ISO C2X C ํ‘œ์ค€ ์ดˆ์•ˆ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  • ์•ˆ์— ๊ทธ๋ฆฌ๊ณ  IEEE 754-2019 ์‚ฌ์–‘์— ์„ค๋ช…๋˜์–ด ์žˆ๊ณ  ํ–ฅํ›„ ISO C2X C ํ‘œ์ค€ ์ดˆ์•ˆ์— ์ถ”๊ฐ€๋œ float, long double, _FloatN ๋ฐ _FloatNx ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž์˜ ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜ ๋ฐ ๋งคํฌ๋กœ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค: fmaximum, fmaximum_num , fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num, fminimum_mag, fminimum_mag_num.
  • ์•ˆ์— ๋‹จ์ •๋ฐ€๋„ ๋ถ€๋™ ์†Œ์ˆ˜์  ์ˆซ์ž์— ๋Œ€ํ•œ ์ƒ์ˆ˜ ์ถ”๊ฐ€: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf, M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTPIf, M_SQRT2f ๋ฐ M_SQRT1_2f.
  • ํ—ค๋” ํŒŒ์ผ์˜ ํ•จ์ˆ˜ exp10์˜ ๊ฒฝ์šฐ ํŠน์ • ์œ ํ˜•์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ํ•ด๋‹น ๋งคํฌ๋กœ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์•ˆ์— ISO C2X ํ‘œ์ค€ ์ดˆ์•ˆ์—์„œ ์ œ์•ˆ๋œ _PRINTF_NAN_LEN_MAX ๋งคํฌ๋กœ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ง„ ํ‘œํ˜„์œผ๋กœ ์ •์ˆ˜๋ฅผ ์ธ์‡„ํ•˜๊ธฐ ์œ„ํ•ด printf ํ•จ์ˆ˜ ๊ณ„์—ด์— "%b" ๋ฐ "%B" ํ˜•์‹ ์ง€์ •์ž๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋™์  ์—ฐ๊ฒฐ ์‹œ์Šคํ…œ์€ ๊นŠ์ด ์šฐ์„  ๊ฒ€์ƒ‰(DFS)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฃจํ”„ ์ข…์†์„ฑ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ƒˆ๋กœ์šด DSO ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. DSO ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด glibc.rtld.dynamic_sort ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ œ์•ˆ๋˜๋ฉฐ, ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ "1"๋กœ ์„ค์ •ํ•˜์—ฌ ์ด์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ABI๋Š” ์ด ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋œ ๊ฐ’์ด ์ž‘์—… ์™„๋ฃŒ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ 'memcmp' ์‚ฌ์šฉ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ํ•จ์ˆ˜ '__memcmpeq'์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Linux ์ปค๋„ 4.18๋ถ€ํ„ฐ ์ œ๊ณต๋˜๋Š” rseq(๋‹ค์‹œ ์‹œ์ž‘ ๊ฐ€๋Šฅ ์‹œํ€€์Šค) ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šค๋ ˆ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. rseq ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋‹จ๋˜์ง€ ์•Š๋Š” ๋ช…๋ น์–ด ๊ทธ๋ฃน์˜ ์—ฐ์† ์‹คํ–‰์„ ๊ตฌ์„ฑํ•˜๊ณ  ๊ทธ๋ฃน์˜ ๋งˆ์ง€๋ง‰ ๋ช…๋ น์–ด๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์ค‘๋‹จ๋œ ๊ฒฝ์šฐ ์ •๋ฆฌ๋˜๊ณ  ๋‹ค์‹œ ์‹œ๋„๋˜๋Š” ์ž‘์—…์˜ ๋งค์šฐ ๋น ๋ฅธ ์›์ž ์‹คํ–‰ ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ฌ๋ณผ๋ฆญ ๋งํฌ /usr/bin/ld.so๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ž„๋ฒ ๋””๋“œ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ๋“  ์‹คํ–‰ ํŒŒ์ผ๊ณผ PIE(์œ„์น˜ ๋…๋ฆฝ์  ์‹คํ–‰ ํŒŒ์ผ) ๋ชจ๋“œ์˜ ํ…Œ์ŠคํŠธ ์„ธํŠธ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์–ด์…ˆ๋ธ”๋ฆฌ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ด ๋™์ž‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด "--disable-default-pie" ์˜ต์…˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • Linux์˜ ๊ฒฝ์šฐ, mmap ๋ฐ sbrk์— ๋Œ€ํ•œ MADV_HUGEPAGE ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ madvise ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ mmap์— MAP_HUGETLB ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋Œ€์šฉ๋Ÿ‰ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋„๋ก malloc ๊ตฌํ˜„์„ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก glibc.malloc.hugetlb ์„ค์ •์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ „ํ™”. ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” Transparent Huge Pages๋ฅผ madvise ๋ชจ๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ์‹œ์Šคํ…œ์— ์˜ˆ์•ฝ๋œ Huge Pages๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ํ˜ธ์ถœ ์Šคํƒ ํ•ด์ œ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” _dl_find_object ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์†Œํ”„ํŠธ ํ”Œ๋กœํŠธ ๋ชจ๋“œ์—์„œ OpenRISC ์•„ํ‚คํ…์ฒ˜(๋˜๋Š”1k-linux-gnu)์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฌํŠธ์—๋Š” binutils 2.35, GCC 11 ๋ฐ Linux ์ปค๋„ 5.4๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋™์  ๋งํฌ๋ฅผ ์œ„ํ•œ ์ดˆ๊ธฐ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ถ”๊ฐ€ ์ปดํŒŒ์ผ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋นŒ๋“œ ํ”Œ๋ž˜๊ทธ "--with-rtld-early-cflags"๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Linux ํ”Œ๋žซํผ์˜ ๊ฒฝ์šฐ epoll_pwait2 ํ•จ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋‚˜๋…ธ์ดˆ ์ •๋ฐ€๋„๋กœ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ์ง€์ •ํ•œ๋‹ค๋Š” ์ ์—์„œ epoll_wait์™€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • ์ƒˆ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ œ์–ด ํ„ฐ๋ฏธ๋„์„ ์„ค์ •ํ•  ๋•Œ ๊ฒฝ์Ÿ ์กฐ๊ฑด์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด posix_spawn_file_actions_addtcsetpgrp_np ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Glibc ๋ฐ GCC 12+๋กœ ์ปดํŒŒ์ผ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ string.h ํ—ค๋” ํŒŒ์ผ์— ์ •์˜๋œ ๋ฌธ์ž์—ด ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ๊ฐ€๋Šฅํ•œ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” "_FORTIFY_SOURCE=3" ๋ณดํ˜ธ ๋ชจ๋“œ๊ฐ€ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. "_FORTIFY_SOURCE=2" ๋ชจ๋“œ์™€์˜ ์ฐจ์ด์ ์€ ์ถ”๊ฐ€ ๊ฒ€์‚ฌ๋กœ ์ธํ•ด ์ž ์žฌ์ ์œผ๋กœ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๊ฒฝ๊ณ„์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” Intel MPX(Memory Protection Extensions)์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ด ๊ธฐ์ˆ ์€ ๋„๋ฆฌ ๋ณด๊ธ‰๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ด๋ฏธ GCC ๋ฐ LLVM์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค).
  • ์‚ฌ์ „ ๋งํฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๊ด€๋ จ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ LD_TRACE_PRELINKING ๋ฐ LD_USE_LOAD_BIAS๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ํ–ฅํ›„ ๋ฆด๋ฆฌ์Šค์—์„œ ์ œ๊ฑฐ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

    ์ˆ˜์ •๋œ ์ทจ์•ฝ์ :

    • CVE-2022-23218, CVE-2022-23219 โ€“ ๋ณต์‚ฌ๋œ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  filename ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋‚ด์šฉ์„ ์Šคํƒ์— ๋ณต์‚ฌํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” svcunix_create ๋ฐ clnt_create ํ•จ์ˆ˜์˜ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ์ž…๋‹ˆ๋‹ค. ์Šคํƒ ๋ณดํ˜ธ ์—†์ด "unix" ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ๋งค์šฐ ๊ธด ํŒŒ์ผ ์ด๋ฆ„์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ทจ์•ฝ์ ์œผ๋กœ ์ธํ•ด ๊ณต๊ฒฉ์ž ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • CVE-2021-3998์€ ํŠน์ • ์กฐ๊ฑด์—์„œ ์Šคํƒ์˜ ์ •๋ฆฌ๋˜์ง€ ์•Š์€ ์ž”์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ์ž˜๋ชป๋œ ๊ฐ’์˜ ๋ฐ˜ํ™˜์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” realpath() ํ•จ์ˆ˜์˜ ์ทจ์•ฝ์ ์ž…๋‹ˆ๋‹ค. SUID-root Fusermount ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฏผ๊ฐํ•œ ์ •๋ณด(์˜ˆ: ํฌ์ธํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด ํš๋“)๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • CVE-2021-3999 - getcwd() ํ•จ์ˆ˜์˜ ๋‹จ์ผ ๋ฐ”์ดํŠธ ๋ฒ„ํผ ์˜ค๋ฒ„ํ”Œ๋กœ. ์ด ๋ฌธ์ œ๋Š” 1995๋…„๋ถ€ํ„ฐ ์กด์žฌํ–ˆ๋˜ ๋ฒ„๊ทธ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ ค๋ฉด ๋ณ„๋„์˜ ๋งˆ์šดํŠธ ์ง€์  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์žˆ๋Š” "/" ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ chdir()์„ ํ˜ธ์ถœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    ์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€