4.2. ȯ°æ º¯¼ö

µðÆúÆ®·Î ȯ°æ º¯¼ö´Â ºÎ¸ð ÇÁ·Î¼¼½º·ÎºÎÅÍ »ó¼ÓµÈ´Ù. ±×·¯³ª ÇÁ·Î±×·¥ÀÌ ´Ù¸¥ ÇÁ·Î±×·¥À» ½ÇÇà½Ãų ¶§ È£ÃâÇÏ´Â ÇÁ·Î±×·¥ÀÌ È¯°æ º¯¼ö¸¦ ÀÓÀÇÀÇ °ªÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â setuid/setgid ÇÁ·Î±×·¥ÀÇ °æ¿ì À̵éÀÇ È£ÃâÀÚ°¡ ÁÖ¾îÁø ȯ°æ º¯¼öµéÀ» ¿Ïº®È÷ Á¦¾îÇÒ ¼ö Àֱ⠶§¹®¿¡ À§ÇèÇÏ´Ù. ȯ°æ º¯¼ö´Â º¸Åë »ó¼ÓµÇ±â ¶§¹®¿¡ ÀÌ´Â ¶ÇÇÑ °úµµÀûÀ¸·Î Àû¿ëµÇ´Âµ¥ º¸¾ÈÀûÀÎ ÇÁ·Î±×·¥ÀÌ ¾î¶² ´Ù¸¥ ÇÁ·Î±×·¥À» È£ÃâÇÒ ¼öµµ ÀÖÀ¸¸ç Ưº°ÇÑ Á¶Ä¡°¡ ¾ø´Ù¸é ÀáÀçÀûÀ¸·Î À§ÇèÇÑ È¯°æ º¯¼ö¸¦ ÀÚ½ÅÀÌ È£ÃâÇÑ ÇÁ·Î±×·¥¿¡ ³Ñ°ÜÁÙ ¼ö ÀÖ´Ù. ´ÙÀ½ ÇϺΠÀýÀº ȯ°æ º¯¼ö ¹× À̸¦ °®°í ÇÏ´Â ÀÏÀ» ³íÀÇÇÑ´Ù.

4.2.1. ¸î¸î ȯ°æ º¯¼ö´Â À§ÇèÇÏ´Ù

¸î¸î ȯ°æ º¯¼öµéÀº ¸ðÈ£ÇÑ, ¹Ì¹¦ÇÑ ¶Ç´Â ºñ°øÀÎµÈ (undocumented) ¹æ½ÄÀ¸·Î ¸¹Àº ¶óÀ̺귯¸®¿Í ÇÁ·Î±×·¥À» Á¦¾îÇϱ⠶§¹®¿¡ À§ÇèÇÏ´Ù. ¿¹¸¦ µé¾î IFS º¯¼ö´Â ¾î¶² ¹®ÀÚ°¡ ¸í·É Çà ÀμöµéÀ» ±¸ºÐÇÏ´Â Áö¸¦ °áÁ¤Çϱâ À§ÇØ sh °ú bash ½©¿¡ ÀÇÇØ »ç¿ëµÈ´Ù. ½©Àº ¸î°¡Áö ÇÏÀ§ ¼öÁØ È£Ãâ (C ¿¡¼­ system(3) °ú popen(3) ¶Ç´Â ÆÞ¿¡¼­ back-tick ¿¬»êÀÚ) ¿¡ ÀÇÇØ È£ÃâµÇ±â ¶§¹®¿¡ IFS º¯¼ö¸¦ ¿¹¿ÜÀûÀÎ °ªÀ¸·Î ¼³Á¤ÇÑ´Ù¸é ¸í¹éÈ÷ ¾ÈÀüÇÑ È£ÃâÀ» Æı«ÇÒ °ÍÀÌ´Ù. ÀÌ µ¿ÀÛÀº sh ¿Í bash ¿¡ ¹®¼­È­µÇ¾î ÀÖÁö¸¸ ±× Àǹ̴ ¸ðÈ£ÇÏ´Ù; ¸¹Àº ¿À·¡µÈ »ç¿ëÀڵ鸸ÀÌ ½ÇÁ¦·Î ÀǵµµÈ ¸ñÀû¿¡ »ç¿ëÇϱ⠶§¹®ÀÌ ¾Æ´Ï¶ó º¸¾ÈÀ» ±ú¶ß¸®´Âµ¥ IFS º¯¼ö¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ÀÌ¿¡ ´ëÇØ ¾Ë°í ÀÖ´Ù. ´Ù¿í ¹Ù¶÷Á÷ÇÏÁö ¾ÊÀº °ÍÀº ¸ðµç ȯ°æ º¯¼ö°¡ ¹®¼­È­µÇ¾î ÀÖÁö ¾ÊÀ¸¸ç ÀÖ´Ù°í ÇÏ´õ¶óµµ ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ À§ÇèÇÑ È¯°æ º¯¼ö¸¦ º¯°æ ¹× Ãß°¡ÇÒ ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù. µû¶ó¼­ ÀÌ ¹®Á¦¿¡ ´ëÇÑ À¯ÀÏÇÑ ½ÇÁ¦ ÇØ°áÃ¥ (¹ØºÎºÐ¿¡ ±â¼úµÇµíÀÌ) Àº ÇÊ¿äÇÑ È¯°æ º¯¼ö¸¸ ¼±ÅÃÇÏ°í ³ª¸ÓÁö ¸ðµç º¯¼ö´Â ¹ö¸®´Â °ÍÀÌ´Ù.

4.2.2. ȯ°æ º¯¼ö ÀúÀå Æ÷¸ËÀº À§ÇèÇÏ´Ù

ÀϹÝÀûÀ¸·Î ÇÁ·Î±×·¥Àº ȯ°æ º¯¼ö¿¡ Á¢±ÙÇϱâ À§ÇØ Ç¥ÁØ Á¢±Ù ·çƾÀ» »ç¿ëÇϴµ¥ ¿¹¸¦ µé¾î, C ¿¡¼­´Â getenv(3) À» ÀÌ¿ëÇÏ¿© ȯ°æ º¯¼ö¸¦ ¾ò°í POSIX Ç¥ÁØ ·çƾ putenv(3) ¶Ç´Â BSD È®Àå setenv(3) ¸¦ ÀÌ¿ëÇÏ¿© À̸¦ ¼³Á¤Çϸç unsetenv(3) À» ÀÌ¿ëÇÏ¿© À̸¦ Á¦°ÅÇÑ´Ù. setenv(3) ´Â ¸®´ª½º¿¡¼­µµ ±¸ÇöµÇ¾î ÀÖÀ½À» ÀúÀÚ´Â ¾ð±ÞÇÑ´Ù.

±×·¯³ª Å©·¢Ä¿°¡ ±×·¸°Ô ¿µ¸®ÇÒ ÇÊ¿ä´Â ¾øÀ¸¸ç Å©·¢Ä¿´Â execve(2) ¸¦ »ç¿ëÇÏ¿© ÇÁ·Î±×·¥¿¡ ³Ñ°ÜÁö´Â ȯ°æ º¯¼ö µ¥ÀÌŸ ¿µ¿ªÀ» Á÷Á¢ÀûÀ¸·Î Á¦¾îÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â ´Ù¼ÒÀÇ ´Ù·ç±â Èûµç °ø°ÝÀ» Çã¿ëÇϸç ȯ°æ º¯¼ö°¡ ½ÇÁ¦·Î ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö ¾Ë¾Æ¾ß¸¸ ÀÌÇØÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º¿¡¼­ ȯ°æ º¯¼öÀÇ ½ÇÁ¦ ÀÛµ¿ ¹æ¹ý¿¡ ´ëÇÑ ¿ä¾àÀº environ(5) À» º¼ ¼ö ÀÖ´Ù. ¿ä¾àÇϸé ȯ°æ º¯¼ö´Â ³»ºÎÀûÀ¸·Î ¹®ÀÚ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ¹è¿­ÀÇ Æ÷ÀÎÅÍ·Î ÀúÀåµÇ´Âµ¥ ÀÌ ¹è¿­Àº ¼ø¼­ÀûÀ¸·Î ÀúÀåµÇ¸ç NULL Æ÷ÀÎÅÍ (À̸¦ ÅëÇØ ¹è¿­ÀÌ ¾ðÁ¦ ³¡³ª´ÂÁö¸¦ ¾Ë ¼ö ÀÖ´Ù) ·Î ³¡³­´Ù. ¹®ÀÚ¿¡ ´ëÇÑ Æ÷ÀÎÅ͵éÀº Â÷·Ê·Î ``NAME=value" ÇüÅÂÀÇ NIL ·Î ³¡³ª´Â ¹®ÀÚ¿­ °ªÀ» °¡¸®Å²´Ù. ÀÌ´Â ¸î°¡Áö ÇÔÃàµÈ ÀǹÌÀ» °®´Âµ¥ ¿¹¸¦ µé¾î ȯ°æ º¯¼ö À̸§Àº = ±âÈ£ ¸¦ Æ÷ÇÔÇÒ ¼ö ¾øÀ¸¸ç À̸§°ú °ªÀº NIL ¹®ÀÚ¸¦ ³»ÀåÇÒ ¼ö ¾ø´Ù. ±×·¯³ª ÀÌ Æ÷¸ËÀÇ ´õ¿í À§ÇèÇÑ ÇÔÃàµÈ Àǹ̴ µ¿ÀÏ º¯¼ö À̸§À» °®À¸³ª ´Ù¸¥ °ªÀ» °®´Â ´ÙÁß ¿£Æ®¸®¸¦ Çã¿ëÇÑ´Ù´Â °ÍÀÌ´Ù (¿¹, SHELL ¿¡ ´ëÇØ ÇÑ°¡Áö ÀÌ»óÀÇ °ª). ÀϹÝÀûÀÎ ¸í·É ½©Àº À̸¦ ±ÝÁöÇÏ´Â ¹Ý¸é Áö¿ªÀûÀ¸·Î ÀÛ¾÷À» ÇÏ´Â Å©·¢Ä¿´Â execve(2) ¸¦ ÀÌ¿ëÇÏ¿© ÀÌ·± »óȲÀ» ¸¸µé ¼ö ÀÖ´Ù.

ÀÌ·± ½ºÅ丮Áö Æ÷¸Ë(°ú ¼³Á¤µÇ´Â ¹æ½Ä) °ú °ü·ÃµÈ ¹®Á¦´Â ÇÁ·Î±×·¥ÀÌ ÀÌ °ªÀ»ÀÌ À¯È¿ÇÑÁö º¸±â À§ÇØ ÀÌ·¯ÇÑ °ªµé Áß Çϳª¸¦ °Ë»çÇÒ ¼ö ÀÖÁö¸¸ ½ÇÁ¦·Î´Â ´Ù¸¥ °ªÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù´Â °ÍÀÌ´Ù. ¸®´ª½º¿¡¼­ GNU glibc ´Â À̷κÎÅÍ ÇÁ·Î±×·¥À» º¸È£ÇÏ·Á°í Çϴµ¥ glibc 2.1 ¿¡¼­ getenv Àº ´Ã óÀ½ ÀÏÄ¡ÇÏ´Â ¿£Æ®¸®¸¦ ¾ò°í setenv ¿Í putenv ´Â ´Ã óÀ½ ÀÏÄ¡ÇÏ´Â ¿£Æ®¸®¸¦ ¼³Á¤Çϸç unsetenv ´Â ½ÇÁ¦·Î ¸ðµç ÀÏÄ¡ÇÏ´Â ¿£Æ®¸®ÀÇ ¼³Á¤À» ÇØÁ¦ÇÒ °ÍÀÌ´Ù (ÀÌ·± ¹æ½ÄÀ¸·Î unsetenv ¸¦ ±¸ÇöÇÑ GNU glibc ±¸ÇöÀÚ¿¡°Ô ÃàÇÏ!). ±×·¯³ª ¸î¸î ÇÁ·Î±×·¥Àº Á÷Á¢ÀûÀ¸·Î ȯ°æ º¯¼ö·Î °¡¼­ ¸ðµç ȯ°æ º¯¼ö¿¡ ´ëÇØ ¹Ýº¹ Àû¿ëÇϴµ¥ ÀÌ·± °æ¿ì óÀ½ÀÌ ¾Æ´Ñ ¸¶Áö¸·À¸·Î ÀÏÄ¡ÇÏ´Â ¿£Æ®¸®¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. µû¶ó¼­ óÀ½ ÀÏÄ¡ÇÏ´Â ¿£Æ®¸®¿¡ ´ëÇؼ­´Â Å©·¡Ä¿·ÎºÎÅÍ º¸È£ÇÒ ¼ö ÀÖÁö¸¸ ½ÇÁ¦ »ç¿ëµÈ °ªÀÌ ¸¶Áö¸·À¸·Î ÀÏÄ¡ÇÏ´Â ¿£Æ®¸®¶ó¸é Å©·¢Ä¿´Â À̸¦ ÀÌ¿ëÇØ º¸È£ ·çƾÀ» ÇÇÇÒ °ÍÀÌ´Ù.

4.2.3. ÇØ°á¹æ¾È - ÃßÃâ ¹× Á¦°Å

º¸¾ÈÀûÀÎ setuid/setgid ÇÁ·Î±×·¥¿¡ ´ëÇØ ÀÔ·ÂµÉ ÇÊ¿ä°¡ Àִ ȯ°æ º¯¼öÀÇ °£´ÜÇÑ ¸®½ºÆ®°¡ ÁÖÀDZí°Ô ÃßÃâµÇ¾î¾ß ÇÑ´Ù. ±× ÈÄ Àüü ȯ°æ º¯¼ö¸¦ Áö¿ì°í ÇÊ¿äÇÑ ¾à°£ÀÇ È¯°æ º¯¼öµéÀ» ¾ÈÀüÇÑ °ªÀ¸·Î Àç¼³Á¤ÇØ¾ß ÇÑ´Ù. ÇÏÀ§ ÇÁ·Î±×·¥À» È£ÃâÇÑ´Ù¸é ½ÇÁ¦·Î ´õ¿í ÁÁÀº ¹æ¹ýÀº ¾ø´Ù: ¸ðµç À§ÇèÇÑ °ªÀ» ¿­°ÅÇÒ ¼ö ÀÖ´Â ½ÇÁ¦ÀûÀÎ ¹æ¹ýÀº ¾ø´Ù. Á÷Á¢Àû ¶Ç´Â °£Á¢ÀûÀ¸·Î È£ÃâÇÒ ¸ðµç ÇÁ·Î±×·¥ÀÇ ¼Ò½º Äڵ带 °ËÅäÇÑ´Ù°í ÇÏ´õ¶óµµ Äڵ带 ÀÛ¼ºÇÑ ÈÄ ´©±º°¡°¡ »õ·Î¿î ºñ°øÀÎµÈ È¯°æ º¯¼ö¸¦ Ãß°¡ÇÒ ¼ö ÀÖÀ¸¸ç À̵é Áß Çϳª¸¦ °ø°Ý¿¡ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù.

C/C++ ¿¡¼­ ȯ°æÀ» Áö¿ì´Â °£´ÜÇÑ ¹æ¹ýÀº Àü¿ª º¯¼ö environ ¸¦ NULL ·Î ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù. Àü¿ª º¯¼ö environ Àº <unistd.h> ÆÄÀÏ¿¡ Á¤ÀǵǾî Àִµ¥ C/C++ »ç¿ëÀÚ´Â ÀÌ Çì´õ ÆÄÀÏÀ»#include ¸¦ ½á¼­ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ¾²·¹µå¸¦ »ý¼ºÇϱâ Àü¿¡ environ À» Á¶ÀÛÇÒ ÇÊ¿ä°¡ ÀÖÁö¸¸ ÇÁ·Î±×·¥ ½ÇÇà Ãʱâ (º¸Åë ¾²·¹µå°¡ »ý¼ºµÇ±â Àü) ¿¡ À̸¦ Á¶ÀÛÇϱ⠶§¹®¿¡ °ÅÀÇ ¹®Á¦°¡ µÇÁö ¾Ê´Â´Ù.

Àü¿ª º¯¼ö environ ÀÇ Á¤ÀÇ´Â ¿©·¯°¡Áö Ç¥ÁØ¿¡ Á¤ÀǵǾî ÀÖ´Ù; °ø½ÄÀû Ç¥ÁØÀÌ ÀÌ °ªÀÇ Á÷Á¢Àû º¯°æÀ» ¹¬°úÇÏ´Â Áö´Â ¸íÈ®ÇÏÁö ¾ÊÀ¸¸ç ÀúÀÚ´Â À̸¦ º¯°æÇϴµ¥ ÀÖ¾î ¹®Á¦°¡ ÀÖ¾ú´ø À¯´Ð½º °è¿­ ½Ã½ºÅÛÀº Àß ¸ð¸£°í ÀÖ´Ù. ÀúÀÚ´Â º¸Åë environ À» Á÷Á¢ÀûÀ¸·Î ¼öÁ¤ÇÑ´Ù; ÀÌ·¯ÇÑ ÇÏÀ§ ¼öÁØ ÄÄÆ÷ÅÏÆ®¸¦ Á¶ÀÛÇÏ´Â °ÍÀº ¾Æ¸¶µµ À̽İ¡´ÉÇÏÁö ¾ÊÁö¸¸ ÀÌ´Â ±ú²ýÇÑ (¾ÈÀüÇÑ) ȯ°æÀ» ¾òÀ» ¼ö ÀÖ°Ô º¸ÁõÇÑ´Ù. ÃßÈÄ Àüü º¯¼ö ÁýÇÕ¿¡ Á¢±ÙÇÒ ÇÊ¿ä°¡ ÀÖ´Â µå¹® °æ¿ì¿¡´Â environ º¯¼ö °ªÀ» ¾îµðµç ÀúÀåÇÒ ¼ö ÀÖÀ¸³ª ÀÌ´Â °ÅÀÇ ÇÊ¿äÇÏÁö ¾Ê´Ù; °ÅÀÇ ¸ðµç ÇÁ·Î±×·¥Àº À̵éÁß ´ÜÁö ÀϺΠ°ª¸¸À» ÇÊ¿ä·Î ÇÏ¸ç ³ª¸ÓÁö´Â ¹ö¸°´Ù.

ȯ°æÀ» Áö¿ì´Â ¶Ç ´Ù¸¥ ¹æ¹ýÀº ºñ°øÀÎµÈ clearenv() ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. clearenv() ÇÔ¼ö´Â º°´Ù¸¥ ¿ª»ç¸¦ °®°í Àִµ¥ ÀÌ´Â POSIX 1 ¿¡ Á¤ÀǵǾî ÀÖ´Ù°í ¾Ë·ÁÁ® ÀÖÁö¸¸ ¾î¶² ¿¬À¯ÀÎÁö ÀüÇô ÀÌ Ç¥ÁØ¿¡ Æ÷ÇÔµÇÁö ¾Ê¾Ò´Ù. ±×·¯³ª clearenv() ´Â POSIX 9 (Æ÷Æ®¶õ 77 ÀÇ POSIX ¹ÙÀεù) ¿¡ Á¤ÀǵǾî ÀÖÀ¸¸ç µû¶ó¼­ ÀÌ¿¡ ´ëÇØ ÁØ °ø½Ä »óÅ·ΠÀÖ´Ù. ¸®´ª½º¿¡¼­ clearenv() ´Â <stdlib.h> ÆÄÀÏ¿¡ Á¤ÀǵǾî ÀÖÁö¸¸ #include ¸¦ ½á¼­ Æ÷ÇÔÇϱâ Àü¿¡ __USE_MISC °¡ #define ¿¡ ÀÇÇØ Á¤ÀǵǾî ÀÖ´ÂÁö È®ÀÎÇØ¾ß ÇÑ´Ù. ¾à°£ ´õ¿í´õ °ø½ÄÀûÀÎ Á¢±Ù ¹æ¹ýÀº __USE_MISC ¸¦ Á¤ÀÇÇؼ­ _SVID_SOURCE ¶Ç´Â _BSD_SOURCE °¡ #define ¿¡ ÀÇÇØ Á¤ÀÇµÇ°Ô ÇÏ¿© <features.h> ÆÄÀÏÀ» #include ¿¡ ÀÇÇØ Æ÷ÇÔÇÏ´Â °ÍÀÌ´Ù - ÀÌ´Â °ø½ÄÀûÀΠƯ¡À» °®´Â Å×½ºÆ® ¸ÅÅ©·ÎÀÌ´Ù.

°ÅÀÇ È®½ÇÈ÷ ÀçÃß°¡ÇØ¾ß Çϴ ȯ°æ º¯¼ö´Â ÇÁ·Î±×·¥ ½ÇÇàÀ» À§ÇØ °Ë»öµÇ´Â µð·ºÅ丮 ¸ñ·ÏÀÎ PATH ÀÌ´Ù; PATH ´Â ÇöÀç µð·ºÅ丮¸¦ Æ÷ÇÔÇÏÁö ¾Ê¾Æ¾ß ÇÏ¸ç º¸Åë ``/bin:/usr/bin" °ú °°ÀÌ °£´ÜÇÑ ÇüÅÂÀÌ´Ù. ÀϹÝÀûÀ¸·Î IFS (µðÆúÆ®´Â °ø¹éÀÌ Ã¹ ¹®ÀÚÀÎ `` \t\n") ¿Í TZ (timezone, ½Ã°£´ë) ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ¸®´ª½º°¡ IFS ¶Ç´Â TZ °¡ ¼³Á¤µÇÁö ¾Ê¾Ò´Ù°í Çؼ­ ÀÛµ¿ÇÏÁö ¾Ê´Â °ÍÀº ¾Æ´ÏÁö¸¸ ¾î¶² System V ¿¡ ±âÃÊÇÑ ½Ã½ºÅÛÀº TZ °ªÀ» ¼³Á¤ÇÏÁö ¾Ê´Â °æ¿ì ¹®Á¦ÀÇ ¼ÒÁö°¡ µÈ´Ù. ¾î¶² ½©Àº IFS °ªÀÌ ¼³Á¤µÇ¾î¾ß ÇÑ´Ù´Â ·ç¸Óµµ ÀÖ´Ù. ¸®´ª½º¿¡¼­ ¼³Á¤ÇÒ ¼ö ÀÖ´Â °øÅëµÈ ȯ°æ º¯¼ö ¸ñ·ÏÀ» ¾ò±â À§Çؼ­´Â environ(5) ¸¦ º¸¶ó.

½ÇÁ¦·Î »ç¿ëÀÚ°¡ Á¦°øÇÑ °ªµéÀÌ ÇÊ¿äÇÏ´Ù¸é ±× °ªÀÌ ÇÕ¹ýÀûÀÎ °ª¿¡ ´ëÇÑ ÆÐÅÏ°ú ÀÏÄ¡ÇÏ´ÂÁö ¾î¶² ÇÕ´çÇÑ ÃÖ´ë ±æÀ̳»¿¡ ÀÖ´ÂÁö¸¦ º¸ÁõÇϱâ À§ÇØ ¿ì¼±ÀûÀ¸·Î °Ë»çÇضó. ¿øÄ¢ÀûÀ¸·Î´Â /etc µð·ºÅ丮¿¡ Ç¥ÁØÀûÀÎ ¾ÈÀüÇÑ È¯°æ º¯¼ö °ª¿¡ ´ëÇÑ Á¤º¸¸¦ °®°í ÀÖ´Â ½Å·ÚÇÒ ¼ö Àִ ǥÁØ ÆÄÀÏÀÌ ÀÖÀ» ¼öµµ ÀÖÁö¸¸ ÇöÀç ÀÌ·¯ÇÑ ¸ñÀûÀ» À§ÇØ Á¤ÀÇµÈ Ç¥ÁØ ÆÄÀÏÀº ¾ø´Ù. ºñ½ÁÇÑ ÀÌÀ¯·Î PAM ¸ðµâÀ» °®°í ÀÖ´Â ½Ã½ºÅÛ¿¡ ´ëÇØ pam_env ¸¦ Á¶»çÇÒ ¼öµµ ÀÖ´Ù.

ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ½©À» »ç¿ëÇÏ·Á ÇÑ´Ù¸é ``-" ¿É¼ÇÀ» »ç¿ëÇØ ``/usr/bin/env" ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö ÀÖ´Ù (½ÇÇàµÇ´Â ÇÁ·Î±×·¥ÀÇ ¸ðµç ȯ°æ º¯¼ö¸¦ Áö¿î´Ù). ±âº»ÀûÀ¸·Î /usr/bin/env ¸¦ È£ÃâÇÏ¿© ÀÌ¿¡ ``-" ¿É¼ÇÀ» ÁÖ°í ¼³Á¤ÇÏ·Á°í ÇÏ´Â º¯¼ö¿Í °ª (name=value ÇüÅ·Î) À» ¾´ ÈÄ ½ÇÇà½Ãų ÆÄÀÏ À̸§°ú ±× Àμö¸¦ ¼³Á¤ÇÑ´Ù. ´ëºÎºÐÀº ¿ÏÀüÇÑ °æ·Î À̸§ (/usr/bin/env) À» »ç¿ëÇÏ¿© ÇÁ·Î±×·¥À» È£ÃâÇÏ±æ ¿øÇϴµ¥ ``env" ¿Í´Â ´Þ¸® »ç¿ëÀÚ°¡ À§ÇèÇÑ PATH °ªÀ» ¸¸µé ¼ö ÀÖ´Ù. GNU env ´Â ``-i" ¿Í ``--ignore-environment" ¿É¼Ç (½ÃÀÛÇÏ´Â ÇÁ·Î±×·¥ÀÇ È¯°æÀ» Áö¿î´Ù) À» µ¿ÀÏÇÏ°Ô Çã¿ëÇÔÀ» ÁÖ¸ñÇضó. ±×·¯³ª À̸¦ ´Ù¸¥ ¹öÀüÀÇ env ¿¡ À̽ÄÇÒ ¼ö´Â ¾ø´Ù.

ȯ°æÀ» Á÷Á¢ÀûÀ¸·Î Àç¼³Á¤ÇÒ ¼ö ¾øµµ·Ï ÇÏ´Â ¾ð¾î·Î setuid/setgid ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù¸é ´Ù¸¥ Á¢±Ù ¹æ¹ýÀº ``wrapper" ÇÁ·Î±×·¥À» »ý¼ºÇÏ´Â °ÍÀÌ´Ù. wrapper ´Â ȯ°æ ÇÁ·Î±×·¥À» ¾ÈÀüÇÑ °ªÀ¸·Î ¼³Á¤ÇÑ ÈÄ ´Ù¸¥ ÇÁ·Î±×·¥À» È£ÃâÇÑ´Ù. ÁÖÀÇ: wrapper °¡ ½ÇÁ¦·Î ÀǵµÇÏ´Â ÇÁ·Î±×·¥À» È£ÃâÇÒ °ÍÀÎÁö¸¦ È®ÀÎÇضó; ÀÎÅÍÇÁ¸®Æ¼µå ÇÁ·Î±×·¥À̶ó¸é ÀÎÅÍÇÁ¸®ÅÍ·Î ÇÏ¿©±Ý Ưº°ÇÑ setuid/setgid ±ÇÇÑÀÌ ÁÖ¾îÁø ÇÁ·Î±×·¥¿Ü¿¡ ´Ù¸¥ ÇÁ·Î±×·¥À» ÀûÀçÇÒ ¼ö ÀÖ°Ô ÇÏ´Â °¡´ÉÇÑ °æÀï »óÅ°¡ ¾øÀ½À» È®ÀÎÇضó.