¾Õ¿¡¼ ¾ð±ÞÇßµíÀÌ ÇÁ·Î±×·¥ÀÌ ±× ÀÛ¾÷À» Çϴµ¥ ÇÊ¿äÇÑ ÃÖ¼ÒÇÑÀÇ ±ÇÇÑÀ» °®´Â °ÍÀº Áß¿äÇÑ ÀϹÝÀûÀÎ ¿ø¸®ÀÌ´Ù (ÀÌ´Â "ÃÖ¼ÒÇÑÀÇ ±ÇÇÑ" À̶ó°í ÁöĪµÈ´Ù). ÀÌ·± ¹æ½Ä¿¡¼ ÇÁ·Î±×·¥ÀÌ ÆÄ±«µÈ´ÙÇÏ´õ¶ó°í ±× ¼Õ»óÀº Á¦ÇѵȴÙ. °¡Àå ±Ø´ÜÀûÀÎ ¿¹´Â ´Ü¼øÈ÷ º¸¾ÈÀûÀÎ ÇÁ·Î±×·¥À» ÀüÇô ÀÛ¼ºÇÏÁö ¾Ê´Â °ÍÀÌ´Ù -ÀÌ·² ¼ö ÀÖ´Ù¸é º¸Åë ÀÌ·¸°Ô ÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î °¡´ÉÇÏ´Ù¸é ÇÁ·Î±×·¥À» setuid ¶Ç´Â setgid ÇÁ·Î±×·¥À¸·Î ¸¸µéÁö ¸¶¶ó; ±×Àú ÀϹÝÀûÀÎ ÇÁ·Î±×·¥À» ¸¸µé¾î À̸¦ ½ÇÇà½Ã۱â Àü¿¡ °ü¸®ÀÚ°¡ ±× ÀÚ°ÝÀ¸·Î ·Î±×ÀÎÇϵµ·Ï ÇØ¶ó.
¸®´ª½º¿Í À¯´Ð½º¿¡¼ ÇÁ·Î¼¼½ºÀÇ ±ÇÇÑÀ» ±âº»ÀûÀ¸·Î °áÁ¤ÇÏ´Â °ÍÀº ÇÁ·Î¼¼½º¿Í °ü·ÃµÈ id ¼ÂÀÌ´Ù; °¢ ÇÁ·Î¼¼½º´Â »ç¿ëÀÚ¿Í ±×·ì¿¡ ´ëÇØ ½ÇÁ¦ (real), À¯È¿ (effective) ¹× À¯º¸ (saved) id ¸¦ °®°í ÀÖ´Ù. ¸®´ª½º´Â ¶ÇÇÑ ÆÄÀϽýºÅÛ uid ¿Í gid ¸¦ °®´Â´Ù. ÀÌ·¯ÇÑ °ªÀ» Á¶ÀÛÇÏ´Â °ÍÀº ±ÇÇÑÀ» ÃÖ¼ÒÇÑÀ¸·Î À¯ÁöÇϴµ¥ ÀÖ¾î¼ °áÁ¤ÀûÀε¥ À̸¦ ÃÖ¼ÒÈÇÏ´Â ¸î°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù (¹ØºÎºÐ¿¡ ³íÀǵȴÙ). ¶ÇÇÑ chroot(2) ¸¦ ÀÌ¿ëÇØ¼ ÇÁ·Î±×·¥ÀÌ º¼ ¼ö ÀÖ´Â ÆÄÀÏÀ» ÃÖ¼ÒÈÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º¿Í À¯´Ð½º¿¡¼´Â ±ÇÇÑÀ» °áÁ¤ÇÏ´Â ¾à°£ÀÇ ´Ù¸¥ °ªµéÀÌ Àִµ¥ ¿¹¸¦ µé¾î POSIX ´É·Â (¸®´ª½º 2.2 ÀÌ»ó ¹× ¸î¸î ´Ù¸¥ À¯´Ð½º °è¿ ½Ã½ºÅÛÀÌ À̸¦ Áö¿øÇÑ´Ù) ÀÌ ÀÖ´Ù.
¾Æ¸¶ °¡Àå È¿°úÀûÀÎ ±â¹ýÀº Çã°¡µÈ °¡Àå ³ôÀº ±ÇȯÀ» ´Ü¼øÈ÷ ÃÖ¼ÒÈÇÏ´Â °ÍÀÌ´Ù. ƯÈ÷ ÇÁ·Î±×·¥¿¡°Ô °¡´ÉÇÑ ·çÆ® ±ÇÇÑÀ» ÁÖÁö ¾Êµµ·Ï ÇØ¶ó. ÇÁ·Î±×·¥ÀÌ ´ÜÁö ÀÛÀº ÆÄÀϼ¿¡ Á¢±ÙÇÒ Çʿ丸 ÀÖ´Ù¸é ÇÁ·Î±×·¥À» setuid root ·Î ¸¸µéÁö ¸¶¶ó; ¿©·¯ ±â´É¿¡ ´ëÇØ º°°³ÀÇ »ç¿ëÀÚ ¶Ç´Â ±×·ì »ý¼ºÀ» °í·ÁÇØ¶ó.
°øÅëÀûÀÎ ±â¹ýÀº Ưº° ±×·ìÀ» »ý¼ºÇؼ ÆÄÀÏÀÇ ±×·ì ¼ÒÀ¯±ÇÀ» ÀÌ ±×·ìÀ¸·Î º¯°æÇÑ ÈÄ ÇÁ·Î±×·¥À» ÀÌ ±×·ì¿¡ setgid ·Î ¸¸µå´Â °ÍÀÌ´Ù. ±×·ì ¸â¹ö½ÊÀÌ ´õ¿í ÀûÀº ±ÇÇÑÀ» Çã°¡Çϱ⠶§¹®¿¡ (ƯÈ÷ ÆÄÀÏ Çã°¡±ÇÀ» º¯°æÇÒ ±ÇÇÑÀ» ÁÖÁö´Â ¾Ê´Â´Ù) ÇÁ·Î±×·¥À» setuid ´ë½Å setgid ·Î ¸¸µå´Â °ÍÀÌ ´õ¿í ÁÁ´Ù.
ÀÌ´Â °ÔÀÓ¿¡¼ °íµæÁ¡ÀÇ °æ¿ì¿¡ º¸Åë ÇàÇØÁø´Ù. °ÔÀÓÀº ´ë°³ setgid games À¸·Î µæÁ¡ ÆÄÀÏÀº ±×·ì games °¡ ¼ÒÀ¯Çϰí ÇÁ·Î±×·¥ ±× ÀÚü¿Í À̵éÀÇ ¼³Á¤ ÆÄÀÏÀº ´Ù¸¥ ´©±º°¡ (·çÆ®) °¡ ¼ÒÀ¯ÇÑ´Ù. µû¶ó¼ °ÔÀÓ¿¡ ħÀÔÇÑ °ø°ÝÀÚ°¡ °íµæÁ¡À» º¯°æÇÒ ¼ö´Â ÀÖÁö¸¸ °ÔÀÓÀÇ ½ÇÇà ¶Ç´Â ±× ¼³Á¤ ÆÄÀÏÀ» º¯°æÇÒ ±ÇÇÑÀ» ¾òÁö´Â ¸øÇÑ´Ù. ÈÄÀÚ´Â Áß¿äÇÏ´Ù; °ø°ÝÀÚ°¡ °ÔÀÓÀÇ ½ÇÇà ¶Ç´Â ±× ¼³Á¤ ÆÄÀÏ (½ÇÇà ÆÄÀÏÀÌ ¹«¾ùÀ» ÀÛµ¿½Ãų °ÇÁö¸¦ Á¦¾îÇÒ ¼ö ÀÖ´Â) À» º¯°æÇÒ ¼ö ÀÖ´Ù¸é °ÔÀÓÀ» Áñ±â´Â »ç¿ëÀÚµéÀ» Á¦¾îÇÒ ¼öµµ ÀÖ´Ù.
»õ·Î¿î ±×·ì »ý¼ºÀÌ ÃæºÐÇÏÁö ¾Ê´Ù¸é ÀÏ·ÃÀÇ ÀÚ¿øµéÀ» °ü¸®ÇÏ´Â »õ·Î¿î ÁØ»ç¿ëÀÚ (½ÇÁ¦·Î Ưº°ÇÑ ¿ªÇÒÀ» ÇÏ´Â) »ý¼ºÀ» °í·ÁÇØ¶ó. À¥¼¹ö°¡ ÀüÇüÀûÀ¸·Î ÀÌ·± ¹æ½ÄÀε¥ ¶§¶§·Î À¥¼¹ö´Â ´Ù¸¥ »ç¿ëÀÚ¿Í ºÐ¸®µÉ ¼ö ÀÖµµ·Ï Ưº°ÇÑ »ç¿ëÀÚ (``nobody") ·Î ¼³Á¤µÈ´Ù. Á¤¸»·Î À¥¼¹ö´Â ÀÌÁ¡¿¡¼ ±³À°ÀûÀÌ´Ù: À¥¼¹ö´Â ±¸µ¿Çϱâ À§ÇØ ÀüÇüÀûÀ¸·Î ·çÆ® ±ÇÇÑÀ» ÇÊ¿ä·Î ÇÏÁö¸¸ (Æ÷Æ® 80 ¿¡ ºÎÂøµÉ ¼ö ÀÖµµ·Ï) ÀÏ´Ü ½ÃÀÛµÇ¸é ´ë°³ ¸ðµç ±ÇÇÑÀ» ¹ö¸®°í ``nobody" »ç¿ëÀڷμ ÀÛµ¿ÇÑ´Ù. ´ë°³ ÁØ»ç¿ëÀÚ´Â ÀڱⰡ ½ÇÇà½ÃŲ ±âº» ÇÁ·Î±×·¥À» ¼ÒÀ¯ÇÏÁö ¾ÊÀ¸¸ç µû¶ó¼ ±× °èÁ¤¿¡ ħÀÔÇÑ´Ù°í ÇØ¼ ÇÁ·Î±×·¥ ÀÚü¸¦ º¯°æÇÒ ¼ö´Â ¾ø´Ù. ±× °á°ú·Î ÀÛµ¿ÁßÀÎ À¥¼¹ö¿¡ ħÀÔÇÏ´Â °ÍÀÌ ÀϹÝÀûÀ¸·Î Àüü ½Ã½ºÅÛÀÇ º¸¾ÈÀ» ÀÚµ¿ÀûÀ¸·Î ÆÄ±«ÇÏÁö´Â ¸øÇÑ´Ù.
ÇÁ·Î±×·¥¿¡ ·çÆ® ±ÇÇÑÀ» ÁÖ¾î¾ß ÇÑ´Ù¸é ÇÁ·Î±×·¥ÀÌ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» ÃÖ¼ÒÈÇÏÀÚ¸¶ÀÚ POSIX ´É·Â »ç¿ëÀ» °í·ÁÇØ¶ó. POSIX ´Â ¸®´ª½º 2.2 ÀÌ»ó ¹× ´Ù¸¥ À¯´Ð½º °è¿ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¥ ½ÃÀÛÈÄ¿¡ Áï°¢ÀûÀ¸·Î cap_set_proc(3) ¶Ç´Â ¸®´ª½º °íÀ¯ÀÇ capsetp(3) À» È£ÃâÇÔÀ¸·Î½á ÇÁ·Î±×·¥ÀÇ ´É·ÂÀ» ¿µ±¸È÷ ´ÜÁö ½ÇÁ¦ ÇÊ¿ä·Î ÇÏ´Â ´É·ÂÀ¸·Î °¨¼Ò½Ãų ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î ³×Æ®¿öÅ© ½Ã°£ µ¥¸ó ( ntpd) ´Â ÇöÀç ½Ã°£À» ¼öÁ¤ÇÒ Çʿ䰡 Àֱ⶧¹®¿¡ ÀüÅëÀûÀ¸·Î ·çÆ® ±ÇÇÑÀ¸·Î ½ÇÇàµÈ´Ù. ±×·¯³ª ntpd °¡ ´ÜÁö ÇϳªÀÇ ´É·Â CAP_SYS_TIME ¸¸ÀÌ ÇÊ¿äÇϵµ·Ï ÆÐÄ¡°¡ °³¹ßµÇ¾úÀ¸¸ç µû¶ó¼ °ø°ÝÀÚ°¡ ntpd ¿¡ ´ëÇÑ Á¦¾î¸¦ ¾ò´Â´Ù ÇÏ´õ¶óµµ ÇÁ·Î±×·¥À» ¾Ç¿ëÇÏ´Â °ÍÀº ´õ¿í ¾î·Á¿ï °ÍÀÌ´Ù.
´Ù¸¥ Á¶Ä¡°¡ ÃëÇØÁöÁö ¾Ê´Â´Ù¸é POSIX ´É·ÂÀ» »ç¿ëÇØ ±ÇÇÑÀ» À¯ÁöÇÏ´Â °ÍÀº ÇÁ·Î¼¼½º°¡ ·çÆ® »ç¿ëÀÚ id ¸¦ °è¼ÓÇØ¼ °¡Á®¾ß ÇÔÀ» ¿ä±¸Çϱ⠶§¹®¿¡ ÀúÀÚ´Â ``¾î´À Á¤µµ Á¦ÇÑÀû" À̶ó°í ¸»ÇÏ°í ½Í´Ù. ¼³Á¤ ÆÄÀÏ, ¹ÙÀ̳ʸ® µîÀÇ ¸¹Àº Áß¿äÇÑ ÆÄÀÏÀº ·çÆ®°¡ ¼ÒÀ¯ÇØ¾ß Çϱ⠶§¹®¿¡ ÀÌ·¯ÇÑ Á¦ÇÑµÈ ´É·ÂÀ» °®´Â ÇÁ·Î±×·¥À» Á¦¾îÇÏ´Â °ø°ÝÀÚ´Â ¿©ÀüÈ÷ ÁÖ¿ä ½Ã½ºÅÛ ÆÄÀÏ ¼öÁ¤ ¹× ¿ÏÀüÇÑ ·çÆ® ¼öÁØÀÇ ±ÇÇÑÀ» ¾òÀ» ¼ö ÀÖ´Ù. ¸®´ª½º Ä¿³Î È®Àå (¹öÀü 2.4.X ¹× 2.2.19 À̻󿡼 ¾µ ¼ö ÀÖ´Ù) Àº »ç¿ë°¡´ÉÇÑ ±ÇÇÑÀ» Á¦ÇÑÇÏ´Â ´õ¿í ÁÁÀº ¹æ¹ýÀ» Á¦°øÇÑ´Ù; ÇÁ·Î±×·¥ÀÌ ¸ðµç POSIX ´É·ÂÀ» °®´Â ·çÆ®·Î ½ÇÇàµÇ¾î ºÒÇÊ¿äÇÑ ´É·ÂÀº Á¦°ÅÇϰí prctl(PR_SET_KEEPCAPS,1) À» È£ÃâÇÑ ÈÄ ·çÆ®°¡ ¾Æ´Ñ ÇÁ·Î¼¼½º·Î º¯°æÇϱâ À§ÇØ setuid() ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. PR_SET_KEEPCAPS ¼³Á¤Àº ÇÁ·Î¼¼½º°¡ 0 ÀÌ ¾Æ´Ñ °ªÀ¸·Î setuid ¸¦ ÇÒ ¶§ POSIX ´É·ÂÀÌ Á¦°ÅµÇÁö ¾Êµµ·Ï ÇÁ·Î¼¼½º¿¡ Ç¥½Ã¸¦ Çϸç ÀÌ ÇÁ·Î¼¼½º ¼³Á¤Àº exec() ¿¡¼ Á¦°ÅµÈ´Ù. ±×·¯³ª PR_SET_KEEPCAPS ´Â ´õ¿í »õ·Î¿î ¸®´ª½º Ä¿³Î ¹öÀü¿¡ ´ëÇÑ ¸®´ª½º °íÀ¯ÀÇ È®ÀåÀ̶ó´Â °Í¿¡ ÁÖÀÇÇØ¶ó.
Çã°¡µÇ´Â ±ÇÇÑÀÇ ÃÖ¼Òȸ¦ ´Ü¼øÇÏ°Ô Çϱâ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸®´ª½º °íÀ¯ÀÇ ÇѰ¡Áö µµ±¸´Â SuSe ¿¡ ÀÇÇØ °³¹ßµÈ ``compartment" µµ±¸ÀÌ´Ù. ÀÌ´Â ÆÄÀϽýºÅÛ ·çÆ®, uid gid ¹×/¶Ç´Â capability set À» ¼³Á¤ÇÑÈÄ ÇÁ·Î±×·¥À» ½ÇÇà½ÃŲ´Ù. À̴ ƯÈ÷ ¾î¶² ´Ù¸¥ ÇÁ·Î±×·¥À» ¼öÁ¤ÇÏÁö ¾Ê°í ½ÇÇà½Ã۴µ¥ Æí¸®ÇÏ°Ô ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº 0.5 ¹öÀüÀÇ ±¸¹®ÀÌ´Ù:
Syntax: compartment [options] /full/path/to/program Options: --chroot path path ·Î chroot ÇÑ´Ù --user user uid ¸¦ user ÀÇ uid ·Î º¯°æÇÑ´Ù --group group gid ¸¦ group ÀÇ gid ·Î º¯°æÇÑ´Ù --init program ÃÖ¿ì¼±ÀûÀ¸·Î ÀÌ programe À» ½ÇÇà½ÃŲ´Ù --cap capset capset À̸§À» ¼³Á¤ÇÑ´Ù. ¿©·¯¹ø ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù --verbose ÀÚ¼¼ÇÑ Á¤º¸¸¦ º¸¿©ÁØ´Ù --quiet syslog ¿¡ ±â·ÏÇÏÁö ¾Ê´Â´Ù |
µû¶ó¼ anonymous ftp ¼¹ö¸¦ ´õ¿í ¾ÈÀüÇÏ°Ô ±¸µ¿½Ãų ¼ö ÀÖ´Ù:
compartment --chroot /home/ftp --cap CAP_NET_BIND_SERVICE anon-ftpd |
ÀÌ ¹®¼ ÀÛ¼º ½ÃÁ¡¿¡¼ µµ±¸´Â ¹Ì¿Ï¼ºÀ̰í ÀüÇüÀûÀÎ ¸®´ª½º ¹èÆ÷ÆÇ¿¡¼ ¾òÀ» ¼ö´Â ¾øÁö¸¸ »óȲÀº ºü¸£°Ô º¯ÇÒ °ÍÀÌ´Ù. http://www.suse.de/~marc ¿¡¼ ÇÁ·Î±×·¥À» ´Ù¿î·Îµå¹ÞÀ» ¼ö ÀÖ´Ù.
¸ðµç À¯´Ð½º °è¿ ½Ã½ºÅÛÀÌ POSIX ´É·ÂÀ» ±¸ÇöÇÏÁö´Â ¾ÊÀ¸¸ç PR_SET_KEEPCAPS Àº ÇöÀç ¸®´ª½º¿¡¼¸¸ Áö¿øÇÔÀ» ÁÖ¸ñÇØ¶ó. µû¶ó¼ ÀÌ Á¢±Ù ¹æ¹ýÀº À̽ļºÀ» ÇÑ´Ù; ±×·¯³ª µµ¿òÀÌ µÇ´Â °æ¿ì¿¡¸¸ À̸¦ ´ÜÁö ¼±ÅÃÀûÀÎ º¸È£¼ö´ÜÀ¸·Î »ç¿ëÇÑ´Ù¸é ½ÇÁ¦ÀûÀ¸·Î À̽ļºÀ» Á¦ÇÑÇÏÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ¶ÇÇÑ ¸®´ª½º Ä¿³Î 2.2 ¹öÀü ÀÌ»óÀº ÇÏÀ§ ¼öÁØ È£ÃâÀ» Æ÷ÇÔÇÏÁö¸¸ À̵éÀ» »ç¿ëÇϱ⠿ëÀÌÇÏ°Ô ÇÏ´Â C ¼öÁØ ¶óÀ̺귯¸®´Â ¸î¸î ¸®´ª½º ¹èÆ÷ÆÇ¿¡´Â ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê¾Æ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ À̵éÀÇ »ç¿ëÀ» ¾à°£ º¹ÀâÇÏ°Ô Çϰí ÀÖ´Ù. ¸®´ª½º¿¡¼ POSIX ´É·Â ±¸Çö¿¡ ´ëÇØ ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â http://linux.kernel.org/pub/linux/libs/security/linux-privs ¸¦ º¸¶ó.
FreeBSD ´Â ±ÇÇÑ Á¦ÇÑÀ» À§ÇØ jail() ÇÔ¼ö¸¦ °®°í ÀÖ´Ù: ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â jail ¹®¼ ¸¦ º¸¶ó. ¶ÇÇÑ ±ÇÇÑ Á¦ÇÑÀ» À§ÇØ ¸¹Àº Àü¹®ÈµÈ µµ±¸ ¹× È®ÀåµéÀÌ ÀÖ´Ù; 3.10Àý À» º¸¶ó.
°¡´ÉÇÑ »¡¸® ¿µ±¸ÀûÀ¸·Î ±ÇÇÑÀ» Æ÷±âÇØ¶ó. ¸®´ª½º¸¦ Æ÷ÇÔÇÑ ¸î¸î À¯´Ð½º °è¿ ½Ã½ºÅÛÀº ``ÀÌÀü" ID °ªÀ» ÀúÀåÇϰí ÀÖ´Â ``À¯º¸µÈ (saved)" ID ¸¦ ±¸ÇöÇÑ´Ù. °¡Àå °£´ÜÇÑ Á¢±Ù ¹æ¹ýÀº ÀûÀýÇÑ °æ¿ì (¿¹, setgroups(2) »ç¿ë) ¸ðµç Ãß°¡µÈ ±×·ìÀ» Àç¼³Á¤ÇÑ ÈÄ ½Å·ÚµÇÁö ¾ÊÀº id ¿¡ ´Ù¸¥ id ¸¦ µÎ¹ø ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù. setuid/setgid ÇÁ·Î±×·¥¿¡¼´Â ƯÈ÷ fork(2) ½ÇÇà Á÷ÈÄ¿¡ ½ÇÁ¦ uid ¿Í gid ¿¡ ´ë°³ À¯È¿ uid ¿Í gid ¸¦ ¼³Á¤ÇØ¾ß ÇÏ¸ç Æ¯º°ÇÑ ÀÌÀ¯°¡ ¾ø´Ù¸é À̸¦ ´ç¿¬È÷ ÇØ¾ß ÇÑ´Ù. ·çÆ®¿¡¼ ´Ù¸¥ ±ÇÇÑÀ¸·Î Ãà¼Ò½Ãų ¶§ gid ¸¦ ¿ì¼±ÀûÀ¸·Î º¯°æ½ÃÄÑ¾ß Çϸç ÀÌ·¸Áö ¾ÊÀº °æ¿ì ÀÛ¿ëÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ÁÖ¸ñÇØ¶ó - ·çÆ® ±ÇÇÑÀ» ¹ö¸°´Ù¸é ´õ ÀÌ»ó º¯°æ ½Ãų ¼ö ¾øÀ» °ÍÀÌ´Ù.
ÀÌ·¯ÇÑ ÃÖ¼Òȸ¦ ¹æÇØÇϱâ À§ÇØ POSIX ´É·ÂÀ» »ç¿ëÇÏ´Â Àß ¾Ë·ÁÁø °ü·Ã ¹ö±×°¡ ÀÖÀ½À» ¾ð±ÞÇÏ´Â °ÍÀº °¡Ä¡°¡ ÀÖ´Ù. ÀÌ ¹ö±×´Â ¸®´ª½º Ä¿³Î 2.2.0 ¿¡¼ 2.2.15 ¹× ¾Æ¸¶µµ POSIX ´É·ÂÀ» °®´Â ¸¹Àº ´Ù¸¥ À¯´Ð½º °è¿ ½Ã½ºÅÛ¿¡ ¿µÇâÀ» ¹ÌÄ£´Ù. ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â http://www.securityfocus.com ÀÇ ¹ö±×Æ®·¢ id 1322 ¸¦ º¸¶ó. ´ÙÀ½Àº ¿ä¾àÀÌ´Ù:
POSIX ´É·ÂÀº ÃÖ±Ù ¸®´ª½º Ä¿³Î¿¡ ±¸ÇöµÇ¾ú´Ù. ÀÌ ´É·ÂÀº ±ÇÇÑÀ» °®´Â ÇÁ·Î¼¼½º°¡ ÇÒ ¼ö ÀÖ´Â °ÍÀ» ´õ¿í ¸í¹éÈ÷ Á¦¾îÇÒ ¼ö ÀÖ´Â ±ÇÇÑ Á¦¾îÀÇ Ãß°¡ÀûÀÎ ÇüÅ·Π¼¼°¡Áö ºñÆ® Çʵå·Î ±¸ÇöµÇ¾î Àִµ¥ °¢ ºñÆ®´Â ±ÇÇÑÀ» °®´Â ÇÁ·Î¼¼½º°¡ ¼öÇàÇÒ ¼ö Àִ ƯÁ¤ µ¿ÀÛÀ» ³ªÅ¸³½´Ù. ƯÁ¤ ºñÆ®¸¦ ¼³Á¤ÇÔÀ¸·Î½á ±ÇÇÑÀ» °®´Â ÇÁ·Î¼¼½ºÀÇ µ¿ÀÛÀÌ Á¦¾îµÉ ¼ö ÀÖ´Ù -- ´Ù¾çÇÑ ÇÔ¼öµé¿¡ ´ëÇØ ±×µéÀ» ÇÊ¿ä·Î ÇÏ´Â ÇÁ·Î±×·¥ÀÇ Æ¯Á¤ ºÎºÐ¿¡ ´ëÇØ¼´Â Á¢±Ù Çã°¡¸¦ ¹ÞÀ» ¼ö ÀÖ´Ù. ÀÌ´Â º¸¾È Á¶Ä¡ÀÌ´Ù. ¹®Á¦´Â ´É·ÂÀÌ fork() execs ¿Í ÇÔ²² º¹»çµÈ´Ù´Â °ÍÀε¥ ÀÌ´Â ´É·ÂÀÌ ºÎ¸ð ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ¼öÁ¤µÈ´Ù¸é ÀÛ¾÷ÀÌ ³¡³ªÁö ¾ÊÀº ä ´É·ÂÀÌ ³Ñ°ÜÁüÀ» ÀǹÌÇÑ´Ù. ÀÌ´Â ¼¼°¡Áö ºñÆ® ÇÊµå °¢°¢¿¡ ´É·ÂÀ» 0 À¸·Î ¼³Á¤ ( ¸ðµç ºñÆ®°¡ off ÀÓÀ» ÀǹÌ) ÇÑ ÈÄ ·çÆ® ±ÇÇÑÀ¸·Î ½ÇÇàµÈ °æ¿ì (¼¾µå¸ÞÀÏÀÌ ÇÏ´Â °Í°ú °°ÀÌ) À§ÇèÇÒ ¼ö ÀÖ´Â Äڵ带 ½ÇÇà½Ã۱â Àü¿¡ ±ÇÇÑÀ» Ãà¼Ò½ÃŰ·Á°í ÇÏ´Â setuid ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ´À¸·Î½á ¾Ç¿ëµÉ ¼ö ÀÖ´Ù. sendmail Àº setuid(getuid()) ¸¦ »ç¿ëÇØ¼ ±ÇÇÑÀ» Ãà¼Ò½ÃŰ·Á°í ÇÒ ¶§ ±× ºñÆ® Çʵ忡 ±ÇÇÑ Ãà¼Ò¿¡ ÇÊ¿äÇÑ ´É·ÂÀ» °®Áö ¸øÇÏ°í ¹Ýȯ°ª °Ë»ç¾øÀÌ ½ÇÆÐÇÑ´Ù. sendmail Àº ½´ÆÛÀ¯Àú ±ÇÇÑÀ¸·Î °è¼Ó ½ÇÇàµÇ¸ç ·çÆ®·Î¼ »ç¿ëÀÚÀÇ .forward ÆÄÀÏÀ» ½ÇÇà½ÃÄÑ ¿ÏÀüÇÑ ¼Õ»óÀ» ¾ß±âÇÑ´Ù.
sendmail ÀÌ »ç¿ëÇÏ´Â ÇѰ¡Áö Á¢±Ù ¹æ¹ýÀº setuid(getuid()) ÈÄ¿¡ setuid(0) ¸¦ ÇÏ·Á°í ÇÏ´Â °ÍÀÌ´Ù; ÀϹÝÀûÀ¸·Î ÀÌ´Â ½ÇÆÐÇØ¾ß ÇÑ´Ù. ¼º°øÇÑ´Ù¸é ÇÁ·Î±×·¥Àº ÁßÁöÇØ¾ß ÇÑ´Ù. ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â http://sendmail.net/?feed=000607linuxbug ¸¦ º¸¶ó. Àå±âÀûÀ¸·Î º¸¾ÒÀ» ¶§ ±âº»ÀûÀÎ ½Ã½ºÅÛÀ» °»½ÅÇÏ´Â °ÍÀÌ ´õ¿í ÁÁÀº Á¢±Ù ¹æ¹ýÀÓ¿¡µµ ºÒ±¸ÇÏ°í ´Ü±âÀûÀ¸·Î ÀÌ´Â ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼ ÁÁÀº °³³äÀÏ ¼ö ÀÖ´Ù.
ÇÁ·Î±×·¥ÀÌ ÇÊ¿äÇÒ ¶§¸¸ À¯È¿ÇÑ ±ÇÇÑÀ» °®À½À» º¸ÀåÇϱâ À§Çؼ setuid(2), seteuid(2) ¿Í °ü·Ã ÇÔ¼ö¸¦ »ç¿ëÇØ¶ó. À§¿¡ ¾ð±ÞÇßµíÀÌ »ç¿ëÀÚ ÀÔ·ÂÀ» ÇØ¼®ÇÏ´Â µ¿¾ÈÀº ±ÇÇÑÀÌ ±ÝÁöµÇµµ·Ï ´õ¿í ÀϹÝÀûÀ¸·Î´Â ±ÇÇÑÀÌ ½ÇÁ¦ ÇÊ¿äÇÒ ¶§¸¸ ±ÇÇÑÀÌ À¯È¿ÇÔÀ» º¸ÀåÇÏ°í ½ÍÀ» °ÍÀÌ´Ù. ¾î¶² ¹öÆÛ ¿À¹öÇÃ·Î¿ì °ø°ÝÀº ¼º°øÇÑ´Ù¸é ÇÁ·Î±×·¥À¸·Î ÇÏ¿©±Ý ÀÓÀÇÀÇ Äڵ带 ½ÇÇà½ÃŰ°Ô ÇÒ ¼ö ÀÖÀ¸¸ç ÄÚµå´Â ÀϽÃÀûÀ¸·Î Ãà¼ÒµÇ¾ú´ø ±ÇÇÑÀ» ´Ù½Ã ÀÌ¿ëÇÒ ¼ö ÀÖÀ½À» ÁÖ¸ñÇØ¶ó. µû¶ó¼ °¡´ÉÇÑ ±ÇÇÑÀ» ¿ÏÀüÈ÷ Ãà¼Ò½ÃŰ´Â °ÍÀÌ ´Ã ´õ¿í ÁÁ´Ù. ´õ¿íÀÌ Çã°¡±ÇÀ» ÀϽÃÀûÀ¸·Î ±ÝÁöÇÏ´Â °ÍÀº ÇÁ·Î±×·¥ÀÌ ÆÄÀϳ»¿¡ ÀÛ¼ºÇÏÁö ¾ÊÀ¸·Á°í Çß´ø °ÍÀ» ÀÛ¼ºÇϵµ·Ï ³³µæ½ÃŰ´Â ±â¹ý°°Àº ¸ðµç Á¾·ùÀÇ °ø°ÝÀ» ¿¹¹æÇÑ´Ù. ÀÌ ±â¹ýÀº ¸¹Àº °ø°ÝÀ» ¿¡¹æÇϱ⠶§¹®¿¡ ÇÁ·Î±×·¥ÀÇ ¾î¶² ºÎºÐ¿¡¼ ±ÇÇÑÀÇ ¿ÏÀü Ãà¼Ò¸¦ ÇÒ ¼ö ¾ø´Â °æ¿ì »ç¿ëÇÒ °¡Ä¡°¡ ÀÖ´Ù.
´ÜÁö ¾à°£ÀÇ ¸ðµâµé¿¡¸¸ ±ÇÇÑÀÌ Çã°¡µÈ´Ù¸é ±×µéÀÌ º¸¾ÈÀûÀÎÁö¸¦ °áÁ¤ÇÏ´Â °ÍÀº ´õ¿í ½±´Ù. À̸¦ ÇàÇÏ´Â ÇѰ¡Áö ¹æ¹ýÀº ÇϳªÀÇ ¸ðµâ·Î ÇÏ¿©±Ý ±ÇÇÑÀ» »ç¿ëÇÏ°Ô ÇÏ°í ±× ÈÄ À̸¦ Ãà¼ÒÇÏ´Â °ÍÀ¸·Î µû¶ó¼ ÃßÈÄ È£ÃâµÇ´Â ´Ù¸¥ ¸ðµâÀÌ ±ÇÇÑÀ» ¿À¿ëÇÒ ¼ö ¾ø´Ù. ´Ù¸¥ Á¢±Ù ¹æ¹ýÀº º°°³ ½ÇÇà ÆÄÀÏ¿¡ º°°³ÀÇ ¸í·ÉÀ» °®´Â °ÍÀÌ´Ù; ÇÑ ¸í·ÉÀÌ ±ÇÇÑÀ» °®´Â »ç¿ëÀÚ (¿¹, ·çÆ®) ¸¦ À§ÇØ ¹æ´ëÇÑ ¾çÀÇ Å½ºÅ©¸¦ ¼öÇàÇÒ ¼ö ÀÖ´Â º¹ÀâÇÑ µµ±¸À̸ç ÇÑÆí ´Ù¸¥ µµ±¸´Â setuid ·Î ÀûÀº ¼öÀÇ ¸í·É ºÎºÐÁýÇÕ¸¸À» Çã¿ëÇÏ´Â ÀÛ°í ´Ü¼øÇÑ µµ±¸ÀÌ´Ù. ÀÛ°í ´Ü¼øÇÑ µµ±¸´Â ÀÔ·ÂÀÌ ¼ö¿ë °¡´ÉÇÑ ´Ù¾çÇÑ Á¶°ÇÀ» ÃæÁ·½ÃŰ´ÂÁö¸¦ °Ë»çÇÏ¸ç µû¶ó¼ ÀÔ·ÂÀÌ ¼ö¿ë°¡´ÉÇÏ´Ù°í °áÁ¤ÇÏ¸é µ¥ÀÌŸ¸¦ º¹ÀâÇÑ µµ±¸·Î °Ç³×ÁØ´Ù. ÀÛ°í ´Ü¼øÇÑ µµ±¸°¡ ÀÔ·Â °Ë»ç¿Í º¹ÀâÇÑ µµ±¸·Î ¹«¾ùÀ» °Ç³×ÁÙ °ÍÀÎÁö¸¦ Á¦ÇÑÇϴ öÀúÇÑ ÀÛ¾÷À» ÇØ¾ßÇÔÀ» ÁÖ¸ñÇØ¶ó ±×·¸Áö ¾Ê´Ù¸é ÀÌ´Â °ø°Ý´çÇϱ⠽¬¿ï ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ Á¢±Ù ¹æ¹ýÀº ¸î°¡Áö ¹æ½ÄÀ¸·Î °èÃþÈ (layered) µÉ ¼ö Àִµ¥ ¿¹¸¦ µé¾î º¹ÀâÇÑ »ç¿ëÀÚ µµ±¸´Â ´ÙÀ½¿¡ ´Ù¸¥ º¹ÀâÇÑ ½Å·ÚµÈ µµ±¸·Î Á¤º¸¸¦ °Ç³×ÁÖ´Â ´Ü¼øÇÑ setuid "wrapping" ÇÁ·Î±×·¥ (ÀÔ·ÂÀÌ ¾ÈÀüÇÑ °ªÀÎÁö¸¦ °Ë»çÇÑ´Ù) À» È£ÃâÇÒ ¼ö ÀÖ´Ù. ÀÌ Á¢±Ù ¹æ¹ýÀº GUI ¿¡ ±âÃÊÇÑ ÇÁ·Î±×·¥¿¡ ƯÈ÷ µµ¿òÀÌ µÈ´Ù; GUI ºÎºÐÀ» ÀÏ¹Ý »ç¿ëÀÚ·Î ½ÇÇà½ÃŰ°í º¸¾È °ü·Ã ¿äûÀ» ½ÇÁ¦ ½ÇÇàÇÒ ¼ö Àִ Ưº° ±ÇÇÑÀ» °®´Â ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ³Ñ°ÜÁà¶ó.
¾î¶² ¿î¿µÃ¼Á¦´Â ÇϳªÀÇ ÇÁ·Î¼¼½º¿¡ ´ÙÁß ½Å·Ú °èÃþ °³³äÀ» °®°í Àִµ¥ Multics' rings ÀÌ ÇÑ¿¹ÀÌ´Ù. Ç¥ÁØ À¯´Ð½º¿Í ¸®´ª½º´Â À̿Ͱ°Àº ½Ì±Û ÇÁ·Î¼¼½º³»¿¡¼ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ ´ÙÁß ½Å·Ú °èÃþÀ» ºÐ¸®ÇÏ´Â ¹æ¹ýÀ» °®°í ÀÖÁö ¾Ê´Ù; Ä¿³ÎÀÇ È£ÃâÀº ±ÇÇÑÀ» Áõ°¡½ÃŰÁö¸¸ ±×·¸Áö ¾ÊÀ¸¸é ÁÖ¾îÁø ÇÁ·Î¼¼½º´Â ÇϳªÀÇ ½Å·Ú ¼öÁØÀ» °®´Â´Ù. ¸®´ª½º¿Í ´Ù¸¥ À¯´Ð½º °è¿ ½Ã½ºÅÛÀº ÇÁ·Î¼¼½º¸¦ °¢°¢ ´Ù¸¥ ±ÇÇÑÀ» °®´Â ´ÙÁß ÇÁ·Î¼¼½º·Î ºÐ±âÇÔÀ¸·Î½á ÀÌ ´É·ÂÀ» ¶§¶§·Î ¸ð»çÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô Çϱâ À§ÇØ º¸¾ÈÀûÀÎ Åë½Å ä³Î (º¸Åë ¾ð³×ÀÓµå ÆÄÀÌÇÁ ¶Ç´Â ¾ð³×ÀÓµå ¼ÒÄÏÀÌ »ç¿ëµÈ´Ù) À» ¼³Á¤ÇÑ ÈÄ ´Ù¸¥ ÇÁ·Î¼¼½º·Î ºÐ±âÇÏ¿© °¢ ÇÁ·Î¼¼½º ±ÇÇÑÀ» °¡´ÉÇÑ ¸¹ÀÌ Ãà¼Ò½ÃÄѶó. ±×¸®°í ´Ü¼øÇÑ ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ¼ ´ú ½Å·ÚµÈ ÇÁ·Î¼¼½º·Î ÇÏ¿©±Ý ´õ¿í ½Å·ÚµÈ ÇÁ·Î¼¼½º·ÎºÎÅÍÀÇ µ¿ÀÛÀ» ¿äûÇϵµ·ÏÇÏ¸ç ´õ¿í ½Å·ÚµÈ ÇÁ·Î¼¼½º´Â ´ÜÁö Á¦ÇÑµÈ ¿äû¼ÂÀ» Áö¿øÇϵµ·Ï º¸ÀåÇØ¶ó.
ÀÌ´Â ÀÚ¹Ù 2 ¹× Fluke °¡ ÀåÁ¡À» °®´Â ºÐ¾ßÀε¥ ¿¹¸¦ µé¾î ÀÚ¹Ù 2 ´Â ´ÜÁö ƯÁ¤ ÆÄÀÏÀ» ¿ ¼öÀÖ´Â Çã°¡±Ç°ú °°ÀÌ ¹Ì¼¼ÈµÈ (fine-grained) Çã°¡±ÇÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ¹ü¿ë ¿î¿µÃ¼Á¦´Â ÀϹÝÀûÀ¸·Î ÇöÀç ÀÌ·¯ÇÑ ´É·ÂÀ» °®°í ÀÖÁö ¾Ê´Ù; ÀÌ´Â °¡±î¿î ¹Ì·¡¿¡´Â º¯ÇÒ ¼ö ÀÖ´Ù. ÀÚ¹Ù¿¡ ´ëÇÑ ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â 9.6Àý ¸¦ º¸¶ó.
°¢°¢ÀÇ ¸®´ª½º ÇÁ·Î¼¼½º´Â ÆÄÀϽýºÅÛ »ç¿ëÀÚ id (fsuid) ¿Í ÆÄÀϽýºÅÛ ±×·ì id (fsgid) ¶ó´Â ¸®´ª½º °íÀ¯ÀÇ µÎ°³ÀÇ »óŰªÀ» °®´Â´Ù. ÀÌ µÎ°ªÀº ÆÄÀϽýºÅÛ Çã°¡±ÇÀ» °Ë»çÇÒ ¶§ »ç¿ëµÇ´Âµ¥ ÀÓÀÇ »ç¿ëÀÚ¸¦ À§ÇÑ ÆÄÀÏ ¼¹ö (NFS ¿Í °°Àº) ·Î ÀÛµ¿ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ·Á¸é ÀÌ·¯ÇÑ ¸®´ª½º È®ÀåÀÇ »ç¿ëÀ» °í·ÁÇÒ ¼ö ÀÖ´Ù. ÀÌ È®ÀåÀ» »ç¿ëÇϱâ À§Çؼ´Â ·çÆ® ±ÇÇÑÀ» º¸À¯ÇÏ´Â µ¿½Ã¿¡ ÀÏ¹Ý »ç¿ëÀÚ ´ë½Å ÆÄÀÏÀ» Á¢±ÙÇϱâ Àü¿¡ ´ÜÁö fsuid ¿Í fsgid ¸¦ º¯°æÇضó. ÀÌ È®ÀåÀº ¸Å¿ì À¯¿ëÇÏ¸ç ´Ù¸¥ (¾Æ¸¶ ÇÊ¿äÇÑ) ±ÇÇÑÀ» Á¦°ÅÇÏÁö ¾Ê°í¼ ÆÄÀϽýºÅÛ Á¢±Ù ±ÇÇÑÀ» Á¦ÇÑÇÏ´Â ¸ÞÄ«´ÏÁòÀ» Á¦°øÇÑ´Ù. ´ÜÁö fsuid (euid ´Â ¾Æ´Ï´Ù) ¸¦ ¼³Á¤ÇÔÀ¸·Î½á Áö¿ª »ç¿ëÀÚ´Â ÇÁ·Î¼¼½º¿¡ ½Ã±×³ÎÀ» º¸³¾ ¼ö ¾ø´Ù. ¶ÇÇÑ ÀÌ·¯ÇÑ »óȲ¿¡¼ °æÀï »óÅ´ ´õ¿í ½±°Ô ÇÇÇØÁø´Ù. ±×·¯³ª ÀÌ·¯ÇÑ Á¢±Ù ¹æ¹ýÀÇ ´ÜÁ¡Àº ÀÌ·¯ÇÑ È£ÃâÀÌ ¸ðµç À¯´Ð½º °è¿ ½Ã½ºÅÛÀ¸·Î À̽ÄÇÒ ¼ö ¾ø´Ù´Â °ÍÀÌ´Ù.
chroot(2) ¸¦ »ç¿ëÇØ¼ ÇÁ·Î±×·¥ÀÌ º¼ ¼ö ÀÖ´Â ÆÄÀÏÀ» Á¦ÇÑÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â µð·ºÅ丮¸¦ ÁÖÀDZí°Ô ¼³Á¤Çϰí (choot jail À̶ó°í ºÒ¸°´Ù) µð·ºÅ丮¿¡ Á¤È®ÇÏ°Ô µé¾î°¡¾ß ÇÔÀ» ¿äÇÑ´Ù. ÀÌ´Â ÇÁ·Î±×·¥ÀÇ º¸¾ÈÀ» Çâ»ó½ÃŰ´Â ¸Å¿ì È¿°úÀûÀÎ ±â¹ýÀÌ´Ù - º¼ ¼ö ¾ø´Â ÆÄÀÏÀ» ¹æÇØÇÏ´Â °ÍÀº ¾î·Æ´Ù. ±×·¯³ª ÀÌ´Â ÀüüÀûÀÎ °¡Á¤, ƯÈ÷ ÇÁ·Î±×·¥ÀÌ ·çÆ® ±ÇÇÑÀÌ ¾ø¾î¾ß ÇÑ´Ù´Â °¡Á¤¿¡ ÀÇÁ¸ÇÑ´Ù. ·çÆ® ±ÇÇÑÀ» ȹµæÇÒ ¾î¶°ÇÑ ¹æ¹ýµµ ¾ø¾î¾ß Çϸç chroot jail ÀÌ ÀûÀýÈ÷ ¼³Á¤µÇ¾î¾ß ÇÑ´Ù. ÀúÀÚ´Â ÀÌ ¹æ¹ýÀÌ ÀûÀýÇÑ °æ¿ì¿¡ chroot(2) ¸¦ »ç¿ëÇÒ °ÍÀ» ÃßõÇÏÁö¸¸ ÀÌ¿¡¸¸ ÀÇÁ¸ÇÏÁö¸¸ ¸¶¶ó; ´ë½Å À̸¦ °èÃþÈµÈ º¸È£¼ÂÀÇ ºÎºÐÀÌ µÇµµ·Ï ÇØ¶ó. ´ÙÀ½Àº chroot(2) »ç¿ë¿¡ ´ëÇÑ ¾à°£ÀÇ ÁÖÀǵéÀÌ´Ù:
ÇÁ·Î±×·¥ÀÌ Àüü ¸Ó½ÅÀ» ÅëÇØ °øÀ¯µÇ°í ÀÖ´Â ÆÄÀϽýºÅÛÀÌ ¾Æ´Ñ °´Ã¼¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù (System V IPC °´Ã¼¿Í ³×Æ®¿öÅ© ¼ÒÄÏ). ¶ÇÇÑ ¸ðµç À¯´Ð½º °è¿ ½Ã½ºÅÛÀº »ç¿ëÀÚ¸¦ ±¸ºÐÇÒ ¼ö Àֱ⠶§¹®¿¡ º°µµÀÇ ÁØ»ç¿ëÀÚ ¹×/¶Ç´Â ±×·ìÀ» »ç¿ëÇÏ´Â °ÍÀÌ ÃÖ¿ì¼±ÀÌ´Ù; ÀÌ´Â Àû¾îµµ ÆÄ±«µÈ ÇÁ·Î±×·¥ÀÌ ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ¹ÌÄ¥ ¼ö ÀÖ´Â ¼ÕÇØ¸¦ Á¦ÇÑÇÒ °ÍÀÌ´Ù. ÇöÀç ¸®´ª½º¸¦ Æ÷ÇÔÇÏ¿© ´ëºÎºÐÀÇ À¯´Ð½º °è¿ ½Ã½ºÅÛÀÌ »óÈ£ÀÛ¿ëÇϰí ÀÖ´Â ÇÁ·Î±×·¥À» ÀǵµÀûÀ¸·Î ºÐ¸®ÇÏÁö ¾ÊÀ» °ÍÀÓÀ» ÁÖ¸ñÇØ¶ó; ¾ÇÀÇÀÖ´Â ÇÁ·Î±×·¥ÀÌ »óÈ£ÀÛ¿ëÇÏ´Â °Í¿¡ ´ëÇØ °ÆÁ¤Çϰí ÀÖ´Ù¸é ¾î¶² °Á¦ÀûÀÎ Á¢±Ù Á¦¾î¸¦ ±¸ÇöÇϰí/Çϰųª ¼û°ÜÁø ä³ÎÀ» Á¦ÇÑÇÏ´Â ½Ã½ºÅÛÀ» ¾òÀ» Çʿ䰡 ÀÖ´Ù.
¿ÜºÎ ÆÄÀÏ¿¡ ´ëÇÑ ÆÄÀÏ ½Ã½ºÅÛ ±â¼úÀÚ¸¦ ÃßÈÄ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é À̵éÀÌ ¸ðµÎ ´ÝÈù °ÍÀ» È®ÀÎÇØ¶ó. ƯÈ÷ chroot jail ¿ÜºÎ µð·ºÅ丮¿¡ ¾î¶°ÇÑ ±â¼úÀÚµµ ¿Áö ¸»°í ±×·¸Áö ¾Ê´Ù¸é À¯´Ð½º ¼ÒÄÏ ¶Ç´Â ¿¹Àü /proc ±¸Çö°ú °°ÀÌ ±â¼úÀÚ¸¦ ÁÙ ¼ö ÀÖ´Â »óȲÀ» ¼³Á¤Çضó. chroot jail ¿ÜºÎ µð·ºÅ丮¿¡ ´ëÇÑ ±â¼úÀÚ¸¦ ÇÁ·Î±×·¥¿¡°Ô Áشٸé ÀÌ´Â chroot jail À» ¹þ¾î³ª´Âµ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù.
chroot jail Àº º¸¾ÈÀûÀ¸·Î ¼³Á¤µÇ¾î¾ß ÇÑ´Ù. ÀÏ¹Ý »ç¿ëÀÚÀÇ È¨ µð·ºÅ丮 (¶Ç´Â ÇϺΠµð·ºÅ丮) ¸¦ chroot jail ·Î »ç¿ëÇÏÁö ¸¶¶ó; º°µµ À§Ä¡ ¶Ç´Â ƯÈ÷ ÀÌ ¸ñÀûÀ¸·Î ÁغñÇØ ³õÀº Ȩ µð·ºÅ丮¸¦ »ç¿ëÇØ¶ó. ÀÌ µð·ºÅ丮¿¡ ÆÄÀÏÀÇ Àý´ëÀûÀÎ ÃÖ¼Ò¼ö¸¦ ¼³Á¤Çضó. ÀϹÝÀûÀ¸·Î ¿©·¯ºÐÀº /bin, /etc/, /lib ¹× ¾Æ¸¶ ÇÑ µÎ°³ ´Ù¸¥ µð·ºÅ丮 (ftp ¼¹ö¶ó¸é /pub) ¸¦ °®°í ÀÖÀ» °ÍÀÌ´Ù. /bin ³»¿¡´Â chroot() ¸¦ ÇÑ ÈÄ ½ÇÇàÇÒ Çʿ䰡 ÀÖ´Â °Íµé¸¸ ³õ¾Æ¶ó; ¶§¶§·Î ¾Æ¹«°Íµµ Çʿ䰡 ¾øÀ» °ÍÀÌ´Ù (½©À» °Å±â¿¡ µÎÁö ¾ÊÀ¸·Á°í ÇØ¶ó ¹°·Ð ¾î¿ ¼ö ¾øÀÌ ³õÀ» ¼ö ÀÖ´Ù). ÆÄÀÏ ¸ñ·ÏÀÌ ¾î¶² Á¤È®ÇÑ À̸§À» º¸ÀÏ ¼ö ÀÖµµ·Ï /etc/passwd ¿Í /etc/group ¸¦ ÇÊ¿ä·Î ÇÒ ¼öµµ ÀÖÁö¸¸ ±×·¸´Ù¸é ½ÇÁ¦ ½Ã½ºÅÛ °ªÀ» Æ÷ÇÔÇÏÁö ¾Êµµ·Ï Çϰí È®½ÇÈ÷ ¸ðµç ÆÐ½º¿öµå¸¦ "*" ·Î ´ëÃ¼ÇØ¶ó.
/lib ¿¡´Â ÇÊ¿äÇÑ °Í¸¸ ³õ¾Æ¶ó; ldd(1) ÇÁ·Î±×·¥À» »ç¿ëÇØ¼ /bin ³»ÀÇ °¢ ÇÁ·Î±×·¥ÀÌ ÇÊ¿äÇÑ °ÍÀ» ãµµ·Ï ÁúÀÇÇϰí À̵鸸À» /lib ¿¡ ³õ¾Æ¶ó. ¸®´ª½º¿¡¼´Â ¾Æ¸¶µµ ld-linux.so.2 ¿Í °°Àº ¾à°£ÀÇ ±âº»ÀûÀÎ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ¸ç ´õ ÀÌ»óÀº ÇÊ¿äÄ¡ ¾Ê´Ù. ´ë¾ÈÀ¸·Î ¸ðµç ÇÁ·Î±×·¥µéÀÌ µ¿Àû ÀûÀç ¶óÀ̺귯¸®¸¦ ÇÊ¿ä·Î ÇÏÁö ¾Êµµ·Ï ÇÁ·Î±×·¥À» Á¤ÀûÀ¸·Î ´Ù½Ã ÄÄÆÄÀÏÇØ¶ó.
ÇÏµå ¸µÅ©¸¦ ÇÏ´Â ´ë½Å ¸ðµç ÆÄÀÏÀ» º¹»çÇØ¼ ¿ÏÀüÈ÷ °®°í ÀÖ´Â °ÍÀÌ º¸Åë ´õ¿í Çö¸íÇÑ °ÍÀÌ´Ù; À̰ÍÀÌ ¾à°£ÀÇ ½Ã°£ ¹× ÇÏµå °ø°£À» ¼ÒºñÇÏÁö¸¸ chroot jail ¿¡ ´ëÇÑ °ø°ÝÀÌ Á¤±Ô ½Ã½ºÅÛ ÆÄÀÏ·Î ÀÚµ¿ÀûÀ¸·Î ÀüÆÄµÇÁö ¾Êµµ·Ï ±×·¸°Ô ÇØ¶ó. /proc ÆÄÀϽýºÅÛÀ» ¸¶¿îÆÃÇÏ´Â °ÍÀº (Áö¿øµÇ´Â ½Ã½ºÅÛ¿¡¼) ÀϹÝÀûÀ¸·Î Çö¸íÇÏÁö ¾Ê´Ù. »ç½Ç chroot µÈ ÇÁ·Î±×·¥ÀÇ À̽ºÄÉÀÌÇÁ¸¦ Çã¿ëÇÒ ¼ö ÀÖ´Â ÁØ µð·ºÅ丮°¡ /proc ³»¿¡ ÀÖ¾ú±â ¶§¹®¿¡ ¸®´ª½º ¿¹Àü ¹öÀü (2.0.x ¹öÀü, 2.0.38 ¹öÀü±îÁö) ¿¡¼´Â Àß ¾Ë·ÁÁø º¸¾È °áÇÔÀÌ¿´´Ù. ¸®´ª½º Ä¿³Î 2.2 ´Â ÀÌ ¾Ë·ÁÁø ¹®Á¦¸¦ ¼öÁ¤ÇßÁö¸¸ ´Ù¸¥ ¹®Á¦°¡ ÀÖÀ» ¼ö ÀÖÀ¸¸ç °¡´ÉÇÏ´Ù¸é ÀÌ·¸°Ô ÇÏÁö ¸¶¶ó.
Chroot ´Â ÇÁ·Î±×·¥ÀÌ ·çÆ® ±ÇÇÑÀ» ¾ò´Â´Ù¸é ½ÇÁ¦·Î È¿°úÀûÀÌÁö ¾Ê´Ù. ¿¹¸¦ µé¾î ÇÁ·Î±×·¥ÀÌ mknod(2) ¿Í °°Àº È£ÃâÀ» »ç¿ëÇØ¼ ¹°¸® ¸Þ¸ð¸®¸¦ º¼ ¼ö ÀÖ´Â µð¹ÙÀ̽º ÆÄÀÏÀ» »ý¼ºÇÑ ÈÄ ÀÌ µð¹ÙÀ̽º ÆÄÀÏÀ» ÀÌ¿ëÇØ ¿øÇÏ´Â ±ÇÇÑÀ» ¾òÀ» ¼ö ÀÖµµ·Ï Ä¿³Î ¸Þ¸ð¸®¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. chroot ¸¦ ÀÌ¿ëÇØ¼ ·çÆ® ÇÁ·Î±×·¥À» ÆÄ±«ÇÒ ¼ö ÀÖ´Â ´Ù¸¥ ¿¹´Â http://www.suid.edu/source/breakchroot.c ¿¡ ¿¹½ÃµÇ¾î ÀÖ´Ù. ÀÌ ¿¹¿¡¼ ÇÁ·Î±×·¥Àº ÇöÀç µð·ºÅ丮ÀÇ ÆÄÀÏ ±â¼úÀÚ¸¦ ¿¾î ÇϺεð·ºÅ丮¸¦ »ý¼º ¹× chroot ÇØ ÇöÀç µð·ºÅ丮¸¦ ÀÌÀü¿¡ ¿¸° ÇöÀç µð·ºÅ丮·Î ¼³Á¤Çؼ ÇöÀç µð·ºÅ丮 (ÀÌ´Â ÇöÀç µð·ºÅ丮ÀÇ ¿ÜºÎÀ̱⶧¹®¿¡ chroot ´Â ½ÇÁ¦ ÆÄÀϽýºÅÛ ·çÆ®·Î °è¼ÓÇØ¼ ¿Ã¶ó°£´Ù) ·ÎºÎÅÍ °è¼ÓÇØ¼ »óÀ§ µð·ºÅ丮·Î ¿Å°Ü°£ ÈÄ °á°ú¿¡ ´ëÇØ chroot ¸¦ È£ÃâÇÑ´Ù. ¿©·¯ºÐÀÌ À̸¦ ÀÐÀ» ¶§±îÁö ÀÌ ¾àÁ¡ÀÌ º¸¿ÏµÆÀ» ¼öµµ ÀÖÁö¸¸ ½ÇÁ¦·Î ·çÆ® ±ÇÇÑÀº ÀϹÝÀûÀ¸·Î ¸ðµç ±ÇÇÑÀ» ÀǹÌÇÏ¿© À̸¦ Á¦°ÅÇϱâ´Â ¾î·Æ´Ù. °è¼ÓÀûÀ¸·Î ·çÆ® ±ÇÇÑÀ» ÇÊ¿ä·Î ÇÏ´Â ÇÁ·Î±×·¥Àº chroot() ¸¦ »ç¿ëÇÔÀ¸·Î½á ´ÜÁö Á¶½É½º·´°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù¶ó°í °¡Á¤ÇÏ´Â °ÍÀÌ ´õ¿í ÁÁ´Ù. ¹°·Ð Àû¾îµµ ÇÁ·Î±×·¥ÀÇ ÀϺκи¸ÀÌ chroot jail ³»¿¡ ÀÖÀ» ¼ö ÀÖµµ·Ï ÇÁ·Î±×·¥À» ³ª´ ¼ö ÀÖÀ»Áöµµ ¸ð¸¥´Ù.
»ç¿ëÀÚ°¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â µ¥ÀÌŸÀÇ ¾çÀ» ÃÖ¼ÒÈÇÏ´Â °ÍÀ» °í·ÁÇØ¶ó. ¿¹¸¦ µé¾î »ç¿ëÀÚ°¡ µ¥ÀÌŸ¸¦ Á÷Á¢ÀûÀ¸·Î º¼ Çʿ䰡 ¾ø´Ù¸é CGI ½ºÅ©¸³Æ®¿¡¼ ÀÌ ½ºÅ©¸³Æ®°¡ »ç¿ëÇÏ´Â ¸ðµç µ¥ÀÌŸ¸¦ ¹®¼ Æ®¸® ¿ÜºÎ¿¡ ³õ¾Æ¶ó. ¾î¶² »ç¶÷Àº °ø°³ÀûÀ¸·Î ¸µÅ©¸¦ Á¦°øÇÏÁö ¾ÊÀ½À¸·Î½á ¾î¶² ´©±¸µµ µ¥ÀÌŸ¿¡ Á¢±ÙÇÒ ¼ö ¾ø´Ù´Â À߸øµÈ »ý°¢À» °®°í Àִµ¥ ÀÌ´Â °£´ÜÈ÷ ¸»Çؼ ¿ÇÁö ¾Ê´Ù.
ÁÖ¾îÁø ÇÁ·Î¼¼½º°¡ »ç¿ë°¡´ÉÇÑ ÄÄÇ»ÅÍ ÀÚ¿øÀ» ÃÖ¼ÒÈÇÏ´Â °ÍÀ» °í·ÁÇØ¶ó. µû¶ó¼ °íÀå³´Ù°í ÇÏ´õ¶óµµ ¼Õ»óÀ» Á¦ÇÑÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â ¼ºñ½º ºÎÀÎ °ø°ÝÀ» ¿¹¹æÇÏ´Â ±âº»ÀûÀÎ ¹æ¹ýÀÌ´Ù. ³×Æ®¿öÅ© ¼¹öÀÇ °æ¿ì °øÅëÀûÀÎ Á¢±Ù ¹æ¹ýÀº °¢ ¼¼¼Ç¿¡ ´ëÇØ º°°³ÀÇ ÇÁ·Î¼¼½º¸¦ ¼³Á¤ÇÏ°í °¢ ÇÁ·Î¼¼½º¿¡ ´ëÇØ ¼¼¼ÇÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ÃÑ CPU ½Ã°£ µîÀ» Á¦ÇÑÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á °ø°ÝÀÚ°¡ ¸Þ¸ð¸®¸¦ ¼ÒºñÇϰųª ¸ðµç CPU ¸¦ »ç¿ëÇÏ´Â ¿äûÀ» ÇÏ´Â °æ¿ì Çѵµ°¡ Àû¿ëµÇ¾î ±× ÇϳªÀÇ ¼¼¼ÇÀÌ ´Ù¸¥ ŽºÅ©¸¦ ¹æÇØÇÏÁö ¸øÇϵµ·Ï ÇÒ °ÍÀÌ´Ù. ¹°·Ð °ø°ÝÀÚ°¡ ¸¹Àº ¼¼¼ÇÀ» ¸¸µé ¼ö ÀÖÁö¸¸ ÀÌ´Â Àû¾îµµ °ø°ÝÀ» ¹æÇØÇÒ ¼ö ÀÖ´Ù. Çѵµ ¼³Á¤ ¹æ¹ý (¿¹, ulimit(1)) ´ëÇÑ ´õ¿í ÀÚ¼¼ÇÑ Á¤º¸´Â 3.6Àý ¸¦ º¸¶ó.