21Àå. Á¦ÇÑµÈ ½©(Restricted Shells)

Á¦ÇÑµÈ ½©¿¡¼­ ¸ø ¾²´Â ¸í·É¾îµé

½ºÅ©¸³Æ®³ª ½ºÅ©¸³Æ®ÀÇ ÀϺκÐÀ» Á¦ÇÑµÈ ¸ðµå·Î µ¿ÀÛ½ÃÅ°´Â °ÍÀº Á¦ÇÑÀÌ ¾øÀ» °æ¿ì¿¡ ¾µ ¼ö ÀÖ´Â ¸î¸î ¸í·É¾îµéÀ» ¾²Áö ¸øÇÏ°Ô ÇÕ´Ï´Ù. º¸¾È»óÀÇ ÀÌÀ¯·Î, ½ºÅ©¸³Æ® »ç¿ëÀÚÀÇ ±ÇÇÑÀ» Á¦ÇѽÃÅ°°í ½ºÅ©¸³Æ®¸¦ µ¹·Á¼­ ÀÔÀ» ¼ö ÀÖ´Â °¡´ÉÇÑ ÇÇÇظ¦ ÃÖ¼ÒÈ­ÇØ ÁÝ´Ï´Ù.

cd·Î ÀÛ¾÷ µð·ºÅ丮¸¦ ¹Ù²Ù±â.

$PATH³ª, $SHELL, $BASH_ENV, $ENV ȯ°æ º¯¼öÀÇ °ªÀ» ¹Ù²Ù±â.

½© ȯ°æ º¯¼ö ¿É¼ÇÀÎ $SHELLOPTSÀ» Àаųª ¹Ù²Ù±â.

Ãâ·Â ÀçÁöÇâ.

/'sÀ» Æ÷ÇÔÇÑ Çϳª ÀÌ»óÀÇ ¸í·É¾î ½ÇÇà.

½©¿¡¼­ ´Ù¸¥ ÇÁ·Î¼¼½º·Î ¿Å°Ü°¡±â À§Çؼ­ exec ºÎ¸£±â.

ºÒ¼øÇÑ ¸ñÀûÀ¸·Î Àå³­À» Ä¥ ¼ö Àְųª ½ºÅ©¸³Æ®¸¦ µÚÁý¾î ¾þÀ» ¼ö ÀÖ´Â ´Ù¾çÇÑ ¸í·É¾îµé.

½ºÅ©¸³Æ®¿¡¼­ Á¦ÇÑµÈ ¸ðµå¸¦ ºüÁ®³ª±â´Â ÇàÀ§.

¿¹ 21-1. Á¦ÇÑµÈ ¸ðµå·Î ½ºÅ©¸³Æ® µ¹¸®±â

#!/bin/bash
# ½ºÅ©¸³Æ® ½ÃÀۺκÐÀ» "#!/bin/bash -r" ·Î ÇØ ÁÖ¸é
# Àüü ½ºÅ©¸³Æ®°¡ Á¦ÇÑµÈ ¸ðµå¿¡¼­ µ¿ÀÛÇÕ´Ï´Ù.

echo

echo "µð·ºÅ丮¸¦ ¹Ù²Ù°Ú½À´Ï´Ù."
cd /usr/local
echo "Áö±ÝÀº `pwd` ¿¡ ÀÖ½À´Ï´Ù."
echo "Áý(home)À¸·Î µ¹¾Æ°©´Ï´Ù."
cd
echo "Áö±ÝÀº `pwd` ¿¡ ÀÖ½À´Ï´Ù."
echo

# ¿©±â±îÁö´Â Ưº°ÇÑ °Ô ¾ø´Â Á¦ÇѵÇÁö ¾ÊÀº ¸ðµå¿´½À´Ï´Ù.

set -r
# set --restricted    µµ °°Àº È¿°ú¸¦ °¡Á®¿É´Ï´Ù.
echo "==> Áö±ÝºÎÅÍ´Â Á¦ÇÑµÈ ¸ðµå·Î µ¿ÀÛÇÕ´Ï´Ù. <=="

echo
echo

echo "Á¦ÇÑµÈ ¸ðµå¿¡¼­ µð·ºÅ丮¸¦ ¹Ù²Ù·Á°í ÇÕ´Ï´Ù."
cd ..
echo "¾ÆÁ÷µµ `pwd` ¿¡ ÀÖ±º¿ä."

echo
echo

echo "\$SHELL = $SHELL"
echo "Á¦ÇÑµÈ ¸ðµå¿¡¼­ ½©À» ¹Ù²Ù·Á°í ÇÕ´Ï´Ù."
SHELL="/bin/ash"
echo
echo "\$SHELL= $SHELL"

echo
echo

echo "Á¦ÇÑµÈ ¸ðµå¿¡¼­ Ãâ·ÂÀ» ÀçÁöÇâ ÇÏ·Á°í ÇÕ´Ï´Ù."
ls -l /usr/bin > bin.files
ls -l bin.files    # ÆÄÀÏÀÌ »ý¼ºµÆ´ÂÁö ¾î¶²Áö ÇÑ ¹ø º¾½Ã´Ù.

echo

exit 0