3. ÀúÀå¼Ò ¼³Á¤

3.1. ÃʱâÈ­

CVS¸¦ »ç¿ëÇϱâ À§Çؼ­ °¡Àå ¸ÕÀú ÇÒ ÀÏÀº °¢ ÇÁ·ÎÁ§Æ®ÀÇ ÆÄÀϵéÀ» ÀúÀåÇÒ ÀúÀå¼Ò(repository)ÀÇ À§Ä¡¸¦ Á¤ÇÏ´Â °ÍÀÌ´Ù. ÀúÀå¼Ò¸¦ ÀÌ¿ëÇÒ ÇÁ·ÎÁ§Æ®µéÀÇ ±Ô¸ð¸¦ °í·ÁÇÏ¿© ÃæºÐÇÑ °ø°£À» °¡Áø µð·ºÅ丮¸¦ ÀúÀå¼Ò·Î ¾²µµ·Ï ÇÑ´Ù. ÀúÀå¼Ò¸¦ /home/cvs¿¡ ¸¸µé±â·Î Çß´Ù¸é ´ÙÀ½°ú °°ÀÌ ÃʱâÈ­ÇÒ ¼ö ÀÖ´Ù.
# cvs -d /home/cvs init
¿©±â¼­ -d´Â ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ³ªÅ¸³»¸ç, ¸¶Áö¸·ÀÇ init°¡ CVS ¸í·ÉÀÌ´Ù. ¹°·Ð ÀÌ ¸í·ÉÀ» »ç¿ëÇϱâ À§Çؼ­´Â /home¿¡ ¾²±â ±ÇÇÑÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù. ±×·¯¹Ç·Î ´ë°³ÀÇ °æ¿ì ÀúÀå¼ÒÀÇ ÃʱâÈ­´Â root ±ÇÇÑÀ» °¡Áø ¾¾½ºÅÛ °ü¸®ÀÚ°¡ ÇÏ°Ô µÈ´Ù. ¸í·ÉÀÌ ½ÇÇàµÇ°í ³ª¸é /home¿¡ CVS¶õ µð·ºÅ丮°¡ »ý±â°í, ±× ¾È¿¡´Â CVSROOT¶õ µð·ºÅ丮°¡ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ CVSROOT µð·ºÅ丮´Â CVSÀÇ °¢Á¾ ¼³Á¤ ³»¿ëÀ» ´ã°í ÀÖ´Â µð·ºÅ丮ÀÌ´Ù. ÀúÀå¼Ò(/home/cvs)ÀÇ ÆÄÀϵéÀ» Á÷Á¢ °Çµå¸®´Â °ÍÀº Àý´ë·Î ÇÇÇØ¾ß ÇÑ´Ù. ÀÌ ÆÄÀϵéÀ» º¯°æÇÏ°í ½Í´Ù¸é cvs ¸í·ÉÀ» ÀÌ¿ëÇØ¾ß ÇÑ´Ù.

3.2. ±ÇÇÑ ºÎ¿©

ÀúÀå¼Ò¸¦ ¸¸µé¾úÀ¸¸é CVS¸¦ ÀÌ¿ëÇÒ °³¹ßÀڵ鿡°Ô ÀúÀå¼Ò¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀ» ÁÖ¾î¾ß ÇÑ´Ù. ±ÇÇÑ ºÎ¿© ¹æ¹ýÀº °³¹ßÀÚµéÀÌ ÀúÀå¼Ò°¡ À§Ä¡ÇÑ ¾¾½ºÅÛ¿¡ °èÁ¤ÀÌ ÀÖ´ÂÁö¿¡ µû¶ó µÎ °¡Áö·Î ³ª´¶´Ù.

3.2.1. °èÁ¤ÀÌ ÀÖ´Â °æ¿ì

°³¹ßÀÚµéÀÌ °èÁ¤À» °®°í ÀÖ´Â °æ¿ì´Â °³¹ßÀÚµéÀÌ ¸ðµÎ ÀúÀå¼Ò°¡ ÀÖ´Â ¾¾½ºÅÛ¿¡¼­ ÀÛ¾÷À» Çϰųª, °¢ÀÚÀÇ ±â°è¿¡¼­ ÀÛ¾÷À» Ç쵂 sshÀ̳ª rshÀ» ½á¼­ ¿ø°ÝÀ¸·Î CVS¸¦ »ç¿ëÇÏ´Â °æ¿ìÀÌ´Ù. ÀÌ ¹æ¹ýÀº ´ÙÀ½¿¡ ³ª¿Ã ¾ÏÈ£ ÀÎÁõ ¹æ½Ä¿¡ ºñÇØ ¼³Á¤ÀÌ °£´ÜÇϰí, º°µµÀÇ Æ÷Æ®¸¦ ¿­ Çʿ䰡 ¾ø´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù. °³¹ßÀÚµéÀÌ ¸ðµÎ °èÁ¤À» °®°í ÀÖÀ¸¹Ç·Î ÀúÀå¼Ò°¡ À§Ä¡ÇÑ µð·ºÅ丮¿¡ ÀÐ±â ¹× ¾²±â ±ÇÇÑÀ» Áֱ⸸ ÇÏ¸é µÇ´Â °ÍÀÌ´Ù. ±×·¯±â À§ÇØ °³¹ßÀÚµéÀ» ¸ðµÎ °°Àº ±×·ì(¿¹: cvs)ÀÇ ±¸¼º¿øÀ¸·Î ¸¸µç´Ù. ÀÌ´Â ¾¾½ºÅÛº°·Î Á¸ÀçÇÏ´Â ±×·ì °ü¸® µµ±¸¸¦ ÀÌ¿ëÇϰųª groupadd¿Í °°Àº ¸í·ÉÀ¸·Î cvs¶ó´Â ±×·ìÀ» ¸¸µé°í, ±×·ì °ü¸® µµ±¸¸¦ ¾²°Å³ª /etc/group ÆÄÀÏÀ» Á÷Á¢ ¼öÁ¤ÇÏ¿© °³¹ßÀÚµéÀ» ±× ±×·ì¿¡ Ãß°¡ÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î minskim°ú sehkoneÀ̶ó´Â »ç¿ëÀÚ¸¦ cvs ±×·ì¿¡ Ãß°¡ÇÑ´Ù¸é ´ÙÀ½°ú °°Àº ÁÙÀÌ /etc/group¿¡ »ý±æ °ÍÀÌ´Ù.
cvs:*:510:minskim,sehkone
ÀÌÁ¦ ´ÙÀ½ ¸í·ÉÀ¸·Î µð·ºÅ丮ÀÇ ±ÇÇÑÀ» ¿­¾î ÁÖ¸é µÈ´Ù.
# chgrp -R cvs /home/cvs
# chmod ug+rwx /home/cvs /home/cvs/CVSROOT
ÀÌÈķδ cvs ±×·ì¿¡ ¼ÓÇÑ °³¹ßÀÚ´Â ÀÌ ÀúÀå¼Ò¸¦ ¸¶À½´ë·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.

3.2.2. °èÁ¤ÀÌ ¾ø´Â °æ¿ì

°³¹ßÀÚµéÀÌ ¾¾½ºÅÛ¿¡ °èÁ¤À» °®°í ÀÖÁö ¾Ê´Ù¸é CVSÀÇ ¾ÏÈ£ ÀÎÁõ ¹æ½ÄÀ» ÀÌ¿ëÇØ¼­ CVS ½á¹ö¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ´Ù. °³¹ßÀÚ °¢°¢Àº CVS °èÁ¤(¾¾½ºÅÛ °èÁ¤°ú´Â ´Ù¸£´Ù)À» ºÎ¿©¹Þ°Ô µÇ¸ç, inetd¸¦ ÅëÇØ Á¤ÇØÁø Æ÷Æ®·Î CVS¸¦ »ç¿ëÇÏ°Ô µÈ´Ù. ¼³Á¤Àº Á¶±Ý º¹ÀâÇÏÁö¸¸ °³¹ßÀڵ鿡°Ô ÀÏÀÏÀÌ ¾¾½ºÅÛ °èÁ¤À» ¹ß±ÞÇÒ Çʿ䰡 ¾øÀ¸¹Ç·Î ¾¾½ºÅÛ °ü¸® Ãø¸é¿¡¼­´Â º¸´Ù ³ºÀº ¹æ¹ýÀ̶ó ÇÒ ¼ö ÀÖ´Ù. ƯÈ÷ ºÒƯÁ¤ ´Ù¼ö¿¡ ´ëÇØ CVS·Î ÆÄÀÏÀ» ¹Þ¾Æ°¥ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÏ´Â °ø°³ ÇÁ·ÎÁ§Æ®ÀÇ °æ¿ì ´ëºÎºÐÀÌ ÀÌ ¹æ½ÄÀ» äÅÃÇϰí ÀÖ´Ù. ¾ÆÆÄÄ¡³ª ¸ðÁú¶ó °°Àº °æ¿ì°¡ ´ëÇ¥ÀûÀÎ ¿¹°¡ µÉ °ÍÀÌ´Ù. ¹Ý¸é °³¹ßÀÚµéÀÌ ¾¾½ºÅÛ °èÁ¤À» °®°í ÀÖ´Â °æ¿ì¶óµµ sshÀ̳ª rshÀ» ÅëÇÑ Á¢¼ÓÀ» Çã¿ëÇÏ°í ½ÍÁö ¾ÊÀ» °æ¿ì´Â º°µµÀÇ CVS °èÁ¤À» ¸¸µé¾î ¾ÏÈ£ ÀÎÁõ ¹æ½ÄÀ» ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù.

±×·¯¸é inetd·Î CVS Á¢¼ÓÀ» Çã¿ëÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº¸ÀÚ. ¿ì¼± CVS°¡ »ç¿ëÇÏ´Â Æ÷Æ® ¹øÈ£(2401¹ø)¸¦ µî·ÏÇØ¾ß ÇÑ´Ù. /etc/services¿¡ ´ÙÀ½°ú °°Àº ÁÙÀÌ ÀÖ´ÂÁö »ìÆì º¸ÀÚ.
cvspserver      2401/tcp
¸¸ÀÏ ¾ø´Ù¸é À§ÀÇ ³»¿ëÀ» Ãß°¡ÇÏ¸é µÈ´Ù. ´ÙÀ½Àº ½ÇÁ¦·Î ÇØ´ç Æ÷Æ®¸¦ ¿­¾îÁÙ Â÷·ÊÀε¥, ÀÌ´Â ¾¾½ºÅÛÀÌ inetd¸¦ ¾²°í ÀÖ´ÂÁö, xinetd¸¦ ¾²°í ÀÖ´ÂÁö¿¡ µû¶ó ¼³Á¤ ¹æ¹ýÀÌ ´Ù¸£´Ù. ¸ÕÀú inetdÀÇ °æ¿ì´Â /etc/inetd.conf¿¡ ´ÙÀ½ ³»¿ëÀ» Ãß°¡ÇÑ´Ù.
cvspserver stream tcp nowait root /usr/bin/cvs cvs
   --allow-root=/home/cvs pserver
ÆíÀÇ»ó µÎ ÁÙ·Î ³ªÅ¸³ÂÀ¸³ª, ½ÇÁ¦ ÆÄÀÏ¿¡´Â ÇÑ ÁÙ·Î µé¾î°¡¾ß ÇÑ´Ù. ¸¸¾à tcpd¸¦ »ç¿ëÇÑ´Ù¸é À§ÀÇ ÁÙ ´ë½Å ´ÙÀ½À» Ãß°¡ÇÑ´Ù.
cvspserver stream tcp nowait root /usr/sbin/tcpd /usr/bin/cvs
   --allow-root=/home/cvs pserver
¹°·Ð /usr/bin/cvs³ª /usr/sbin/tcpd´Â ½ÇÁ¦·Î ÀÌµé ¸í·ÉÀÌ À§Ä¡ÇÏ´Â Àý´ë °æ·Î·Î ½á ÁÖ¾î¾ß ÇÑ´Ù.

»õ·Î¿î ¼³Á¤ ³»¿ëÀ» ¹Ý¿µÇÏ·Á¸é inetd¸¦ Àç½ÃÀÛÇÏ¿©¾ß ÇÑ´Ù. inetdÀÇ ÇÁ·Î¼¼½º ID°¡ 357À̶ó¸é ´ÙÀ½°ú °°ÀÌ HUP ½ÅÈ£¸¦ º¸³»¸é µÈ´Ù.
# kill -HUP 357

xinetd¸¦ ¾´´Ù¸é /etc/xinetd.d¿¡ cvspserver¶õ À̸§À¸·Î º°µµÀÇ ÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ÆÄÀÏ ³»¿ëÀº ´ÙÀ½°ú °°´Ù.
# default: on
# description: The cvspsever serves CVS Passowrd Server sessions; it uses \
#          unencrypted username/password pairs for authentication.
service cvspserver
{
        disable         = no
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/cvs
        server_args     = --allow-root=/home/cvs pserver
        log_on_failure  += USERID
}
inetdÀÇ °æ¿ì¿Í ¸¶Âù°¡Áö·Î /usr/bin/cvs´Â cvs ¸í·ÉÀÇ Àý´ë °æ·Î, /home/cvs´Â ÀúÀå¼ÒÀÇ À§Ä¡·Î ¹Ù²ã ÁØ´Ù.

xinetd¸¦ Àç½ÃÀÛÇÏ´Â ¹æ¹ýµµ inetd¿Í µ¿ÀÏÇÏ´Ù. ¿ì¼± xinetdÀÇ ÇÁ·Î¼¼½º ID(357ÀÌ¶ó °¡Á¤ÇÑ´Ù)¸¦ ¾Ë¾Æ³½ ÈÄ, HUP ½ÅÈ£¸¦ º¸³»ÀÚ.
# kill -HUP 357

ÀÌÁ¦ Á¢¼Ó Æ÷Æ®´Â ¿­¾îµÎ¾úÀ¸´Ï, °³¹ßÀڵ鿡°Ô CVS °èÁ¤À» ¹ß±ÞÇÏ´Â Àϸ¸ ³²¾Ò´Ù. ¾ÏÈ£ ÀÎÁõ ¹æ½ÄÀ» ÀÌ¿ëÇÏ´Â °æ¿ì, °èÁ¤°ú ¾ÏÈ£´Â ÀúÀå¼ÒÀÇ CVSROOT µð·ºÅ丮 ¹Ø¿¡ passwd¶õ À̸§ÀÇ ÆÄÀÏ¿¡ ÀúÀåµÈ´Ù. ¿©±â¿¡¼­´Â /home/cvs/CVSROOT/passwd°¡ µÉ °ÍÀÌ´Ù. ÇÏÁö¸¸ ÀÌ ÆÄÀÏÀº óÀ½¿¡´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù. ±×·¯¹Ç·Î Á÷Á¢ ¸¸µé¾îÁÖ¾î¾ß Çϴµ¥, ¸ÕÀú ¿¹¸¦ Çϳª º¸µµ·Ï ÇÏÀÚ.
minskim:YxNPCzaM/WCp2:cvs
sehkone:Yw2najHG5cLfo:cvs
°¢ ÁÙÀº ÇÑ »ç¿ëÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Ù. ÁÙÀº ':'À» °æ°è·Î ´Ù½Ã ¼¼ ºÎºÐÀ¸·Î ³ª´µ´Âµ¥ ù ºÎºÐÀÌ »ç¿ëÀÚÀÇ CVS °èÁ¤ À̸§(¾¾½ºÅÛ °èÁ¤°ú´Â ¹«°üÇÏ´Ù), ±× ´ÙÀ½Àº ¾ÏÈ£, ±×¸®°í ¸¶Áö¸·Àº ¾¾½ºÅÛ °èÁ¤ À̸§ÀÌ´Ù. Áï, ÀÌ ÆÄÀÏ¿¡´Â ÇöÀç minskim°ú sehkoneÀ̶ó´Â µÎ »ç¿ëÀÚ°¡ µî·ÏµÇ¾î ÀÖ°í, À̵éÀÌ CVS ÀÌ¿ë½Ã¿¡´Â cvs¶õ ¾¾½ºÅÛ °èÁ¤ÀÇ ±ÇÇÑÀ» °®´Â °ÍÀÌ´Ù. ¾ÏÈ£ºÎºÐÀº À¯´Ð½º ¾¾½ºÅÛ¿¡¼­ ÀüÅëÀûÀ¸·Î »ç¿ëµÇ´Â crypt ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© º¯È¯µÈ °ªÀÌ ÀúÀåµÇ¾î ÀÖ´Ù. »õ·Î¿î »ç¿ëÀÚ¸¦ Ãß°¡ÇÏ·Á¸é °°Àº Çü½ÄÀ¸·Î ÇÑ ÁÙÀ» Ãß°¡ÇØ ÁÖ¸é µÈ´Ù.

¸¶Áö¸·À¸·Î ÇÊ¿äÇÑ °ÍÀº cvs¶õ ¾¾½ºÅÛ °èÁ¤¿¡ ÀúÀå¼Ò¿¡ ´ëÇÑ ÀÐ±â ¹× ¾²±â ±ÇÇÑÀ» ÁÖ´Â °ÍÀÌ´Ù. 3.2.1Àý°ú Àϰü¼ºÀ» À¯ÁöÇÏ·Á¸é cvs¶õ ±×·ìÀ» ¸¸µé°í cvs¶õ »ç¿ëÀÚ¸¦ cvs ±×·ì¿¡ Ãß°¡ÇÑ ÈÄ, cvs ±×·ì¿¡ ´ëÇÑ ±ÇÇÑÀ» °°Àº ¹æ¹ýÀ¸·Î ¿­¾îÁÖ¸é µÈ´Ù.
# chgrp -R cvs /home/cvs
# chmod ug+rwx /home/cvs /home/cvs/CVSROOT