1993.1.19
SUBJECT: "vipw"¿¡ ´ëÇÏ¿©
DESCRIPTION:
0. "vipw" µîÀåÀÇ ¹è°æ
* /etc/passwd fileÀÌ editµÇ´Â µ¿¾È machineÀÌ crash ³ª´Â °æ¿ì¸¦ »óÁ¤ÇØ º¸ÀÚ.
¹°·Ð ´ë°³ÀÇ °æ¿ì systemÀÌ rebootingÇÑ µÚ "vi -r"·Î¼ recovery°¡ µÇÁö¸¸
¿¹¸¦ µé¾î, tape ÀÛ¾÷À» ÇÏ´Ù root fullÀÌ ³ª´Â °æ¿ì´Â editÇÏ´ø fileÀÇ ³»¿ëÀÌ
¸ù¶¥ ³¯¶ó°¡ ¹ö¸®°í size°¡ 0°¡ µÇ´Â °Í°ú °°Àº °æ¿ì¿¡´Â ¾î¶»°Ô ´ëóÇÒ °ÍÀΰ¡.
* password fileÀº user°¡ systemÀ¸·Î loginÇϴµ¥ ÇÊ¿äÇÑ Á¤º¸¸¦ Æ÷ÇÔÇϰí Àֱ⠶§¹®¿¡
system operation¿¡ ÀÖ¾î ¸Å¿ì Áß¿äÇÑ fileÀÌ´Ù.
ÀÌó·³ Áß¿äÇÑ fileÀ» Á÷Á¢ editÇÑ´Ù´Â °ÍÀº °áÄÚ ÁÁÀº ¹æ¹ýÀÌ ¾Æ´Ò °ÍÀÌ´Ù.
* ÀÌ·± ¹®Á¦¸¦ ÇØ°áÄÚÀÚ ¸î¸î BSD °è¿ÀÇ system¿¡¼´Â "vipw"¸¦ »ç¿ëÇÏ¿©
/etc/passwd fileÀ» editÇÑ´Ù.
1. "vipw"¶õ ?
* "vipw"´Â /etc/passwd¸¦ copyÇÏ¿© /etc/ptmp¶ó´Â fileÀ» ¸¸µç´Ù.
±×¸®°í (default·Î) vi editor¸¦ »ç¿ëÇÏ¿© /etc/ptmp¸¦ openÇÑ´Ù.
edit°¡ ³¡³ª¸é º¯°æµÈ »çÇ×À» /etc/passwd¿¡ writeÇϰí /etc/ptmp¸¦ Áö¿î´Ù.
µû¶ó¼ /etc/ptmp°¡ editµÇ´Â µ¿¾È
/etc/passwd´Â disk¿¡ ¿ø·¡ »óÅ ±×´ë·Î Àß º¸Á¸µÇ¾î ÀÖÀ» °ÍÀÌ´Ù.
¾Õ¼ password file edit½Ã system crash·Î ÀÎÇØ password file ÀÚü¿¡ ¹®Á¦°¡ »ý±â´Â
Çö»ó µûÀ§¿¡¼´Â ÃæºÐÈ÷ º¸È£°¡ µÇ´Â °ÍÀÌ´Ù.
* ¶Ç "vipw"¸¦ »ç¿ëÇϰí ÀÖ´Â µ¿¾È ´Ù¸¥ window/terminal¿¡¼ "vipw"¸¦ »ç¿ëÇÏ¿©
password fileÀ» editÇÒ ¼ö´Â ¾ø´Ù.
"vipw: password file busy"¶ó´Â message°¡ ³ª¿Ã °ÍÀÌ´Ù.
¹°·Ð "vipw"¸¦ »ç¿ëÇϰí ÀÖ´õ¶óµµ ´Ù¸¥ ÂÊ¿¡¼ "vi"·Î /etc/passwd¸¦ ¿¾î ³õ°í ÀÖ´Ù°¡
"vipw"º¸´Ù ³ªÁß¿¡ saveÇÑ´Ù¸é "vipw"¸¦ »ç¿ëÇÏ¿© ÀÛ¾÷Çß´ø °ÍÀÌ µµ·Î¾Æ¹ÌŸºÒ µÉ °ÍÀÌ´Ù.
"vipw"´Â /etc/passwd fileÀÌ ¾Æ´Ï¶ó /etc/ptmp fileÀ» lockingÇÏ´Â °ÍÀÌ´Ù.
±×·¯¹Ç·Î "vipw"´Â "vi"°¡ /etc/passwd fileÀ» ¾îÂîÇÏ´Â °Í±îÁö ¸·À» ¼ö ¾ø´Â °Í.
* "vipw"°¡ »ç¿ëÇÏ´Â default editor´Â viÀÌÁö¸¸
ȯ°æº¯¼ö "EDITOR"¿¡ ´Ù¸¥ editor¸¦ settingÇÏ¿© "vipw"¿¡¼ ºÒ·¯ ¾µ ¼öµµ ÀÖ´Ù.
2. "vipw"¿Í /etc/rc fileÀÇ °ü°è
* /etc/rc file¿¡ º¸¸é ¾Æ·¡¿Í °°Àº scriptÀÌ ÀÖ´Ù.
+-------------------------------------------------------------------------------+
| # attempt to rationally recover the passwd file if needed |
| if [ -s /etc/ptmp ]; then |
| if [ -s /etc/passwd ]; then |
| ls -l /etc/passwd /etc/ptmp |
| rm -f /etc/ptmp # should really remove the shorter |
| else |
| echo 'passwd file recovered from ptmp' |
| mv /etc/ptmp /etc/passwd |
| fi |
| elif [ -r /etc/ptmp ]; then |
| echo 'removing passwd lock file' |
| rm -f /etc/ptmp |
| fi |
+-------------------------------------------------------------------------------+
* systemÀÌ crash ³µÀ» ´ç½Ã "vipw"¸¦ »ç¿ëÇϰí ÀÖ¾ú´Ù¸é
/etc/ptmp fileÀÌ deleteµÇÁö ¾Ê°í ³²¾Æ ÀÖÀ» ¼ö ÀÖ°í
°¡´ÉÇÏ´Ù¸é À̸¦ ÅëÇØ /etc/passwd¸¦ recoveryÇϵµ·Ï ÇÏ´Â routineÀÌ´Ù.
Revision History
Created on Jan. 19 ,1993