리눅스 시스템 계정을 전환해야 해서
새로운 계정은 생성 했습니다. 문제는
home 디렉토리에서 하는 작업이 있어 홈 디렉토리를 복사하려 했으나
디렉토리 및 파일 및 하부 구성에 각기 다른 소유자와 이전 계정 존재로 인해
다중 서버 작업이 어려움을 겪습니다.
chown -R 을 쓰면 일괄 변환이 되어버려서 고심인데
가능한 스크립트가 있을까요?
조건은 특정 디렉토리(/home/계정) 하부의 모든 파일 및 디렉토리 복사 하면서
root 및 여타 계정 소유 및 그룹은 유지하고 특정 계정 (이전계정) 만 신규 생성한 계정으로
소유권 및 그룹 을 변경하는 조건입니다.
ex ) /home/oldinit/dir -> /home/newinit/dir
oldinit:oldinit file -> newinit:newinit file
root:oldinit file2 -> root:newinit file2
µ¹·Á¾Èº¸°í °Ë»ö¸¸ Çغ»°Å¶ó È®ÀÎÇغ¸½Ã±â ¹Ù¶ø´Ï´Ù.
µð·ºÅ丮 ¸íÀÌ °èÁ¤¸íÀÌ´Ï±î µð·ºÅ丮 ¸íÀ¸·Î chown Çϵµ·Ï for¹® Â¥¸é µÉµí ÇÕ´Ï´Ù¸¸...
Á¶±Ý ´õ ÁÁ°Ô Â¥·Á¸é /etc/passwd¿Í /etc/groups¸¦ ÀÌ¿ëÇؼ ÇÏ´Â°Ô ´õ ÁÁÁö ¾ÊÀ»±î ÇÕ´Ï´Ù.
»ç¿ëÀÚ °èÁ¤À̸§°ú ¹øÈ£°¡ »õ·Î ¿Å±ä ½Ã½ºÅÛ¿¡¼µµ ÀÏÄ¡ÇØ¾ß ¹®Á¦°¡ ¹ß»ýÇÏÁö ¾Ê½À´Ï´Ù.
https://sancs.tistory.com/4
½ÇÀü¿¡¼ ¸¹ÀÌ ½á¸Ô´Â ¹æ¹ýÀÌÁÒ.
±× ´ÙÀ½¿¡ user id ¹× group id¸¦ ½á¼ ÇØ´çµÇ´Â ÆÄÀϸ¸ ¹Ù²ãÁÖ¸é µÇ°ÚÁÒ.
¸®´ª½ºÀÇ find ¸í·É¾î ¿¡´Â user id ¹× group id ·Î ã´Â ¿É¼ÇÀÌ ÀÖ½À´Ï´Ù.
https://www.unixtutorial.org/find-files-which-belong-to-a-user-or-unix-group
Àú´Â ¼ÒÀ¯ ¹× ±×·ìÀ» ¼±º°Çؼ Ȩµð·ºÅ丮¿¡ ¸Â°Ô º¯°æÇÏ±æ ¿øÇϴ°̴ϴÙ.
sudo find ./ -user root -group oldinit -exec chown root:newinit {} \;
ÇØ´ç µð·ºÅ丮¿¡ °¡¼ À§Ã³·³ ÀÔ·ÂÇÏ¸é ³¡³¯°Í °°±º¿ä.
¹°·Ð Ã¥ÀÓÀº ¸øÁý´Ï´Ù. Á¦´ë·Î µ¿ÀÛÇÏ´ÂÁö Å×½ºÆ® Çغ¸·Á¸é ´Ù¸¥ Å×½ºÆ®¿ë ¼¹ö¿¡¼ ¹Ì¸® µ¹·Áº¸¼¼¿ä.
¿¹¸¦ µç°ÍÀº ¿¹¸¦ µç°Í »ÓÀ̶ó ºñ´Ü Àú 2 °æ¿ì¸¸ ÀÖÀ» °æ¿ì°¡ ¾Æ´Ò¼öµµ ÀÖ½À´Ï´Ù. ÀÛ¾÷ÇØ¾ß ÇÒ ´ë»ó ½Ã½ºÅÛµéÀÌ
»ó´çÇؼ º¯¼ö°¡ ¸¹½À´Ï´Ù. ƯÈ÷³ª Á¢¼Ó°èÁ¤ Ȩµð·ºÅ丮¿¡´Â¿ä. ÇÏÁö¸¸ ÁÁÀº Âü°í°¡ µÉ ¼ö ÀÖÀ»°Ì´Ï´Ù. Â÷ºÐÈ÷ Å×½ºÆ® ÇغÁ¾ß°Ú½À´Ï´Ù.
/etc/skel¿¡ ³Ö¾îµÎ½Ã¸é ÀÚµ¿À¸·Î º¹Á¦ µË´Ï´Ù.
/home ¹Ø¿¡ »ç¿ëÀÚ°¡ À¯Àú1, À¯Àú2, À¯Àú3°¡ Àִµ¥
À¯Àú4¸¦ »ý¼ºÇؼ À¯Àú3¿¡ ÀÖ´Â Á¤º¸¸¦ À¯Àú4¿¡ º¹»çÇؼ À¯Àú4 ¼ÒÀ¯·Î ÇÏ°í ½Í´Ù - ¹¹ ÀÌ·± »óȲÀΰ¡¿ä?
¾Æ´Ï¸é /home µð·ºÀ» °¡Áö°í ÀÖ´Â Çϵ带 ±³È¯ÇÏ°í ½ÍÀ¸½Å°Ç°¡¿ä?
´ÜÀÏ ½Ã½ºÅÛ¿¡ root Á¦¿ÜÇÑ Á¢¼Ó°èÁ¤À» ÀüȯÇÏ·Á°í °èÁ¤ Ãß°¡ ÇÏ¿´°í ±âÁ¸ °èÁ¤¿¡¼ ÀÛ¾÷ÇÏ´Â ³»¿ëµéÀÌ ±âÁ¸ °èÁ¤ Ȩ µð·ºÅ丮¿¡ Á¸ÀçÇÏ°í
±×°ÍÀ» »õ·Î¿î °èÁ¤À¸·Î º¹»çÇÏ´Â ÀÛ¾÷ÀÔ´Ï´Ù. ´ç¿¬È÷ ±âÁ¸ Ȩ µð·ºÅ丮¿¡´Â ±âÁ¸ °èÁ¤¿¡ ´ëÇÑ ¼ÒÀ¯±Ç °ú ±×·ìÀÌ ÀÖ°í ÀϺδ root °èÁ¤À¸·Î »ç¿ëÇÏ´Â
ÆÄÀÏ ¹× µð·ºÅ丮µµ Á¸ÀçÇϱ⿡ ÀÌ°ÍÀÇ ¼Ó¼º Áß root³ª ´Ù¸¥ °èÁ¤Àº À¯Áö ±âÁ¸ °èÁ¤ ¼ÒÀ¯³ª ±×·ìÀº ¸ðµÎ »õ·Î »ý¼ºÇÑ µð·ºÅ丮¿¡¼´Â »õ·Î¿î °èÁ¤ÀÌ »ç¿ëÇÒ ¼ö°¡ ¾øÀ¸¹Ç·Î À̸¦ »õ·Î¿î °èÁ¤À¸·Î ±âÁ¸°èÁ¤ ¼ÒÀ¯ÆÄÀÏ ¹× ±×·ì ȤÀº ±× ¹Ý´ëÀÇ °æ¿ì¿¡µµ ±âÁ¸°èÁ¤À» »õ·Î¿î °èÁ¤À¸·Î ¼ÒÀ¯±Ç ¹× ±×·ì º¯°æÇÏ·Á´Â ÀÛ¾÷À»
´Ù·®ÀÛ¾÷ ÇϹǷΠÀÌ°Í¿¡ ´ëÇÑ ½ºÅ©¸³Æ®¸¦ ¾Ë¾Æº¸°í ÀÖ´Â ÁßÀÔ´Ï´Ù.
±×Áß 5õ°³´Â °èÁ¤À» À¯ÁöÇÏ°í 1¸¸5õ°³´Â »õ·Î¿î °èÁ¤À» ¸¸µé¾î¼ º¹»çÇؼ »ç¿ëÇÏ°í ½Í±¸¿ä
±×·¯´Ï±î root °èÁ¤À¸·Î »ç¿ëÇÏ´Â °èÁ¤°ú À¯ÁöÇÏ´Â 5õ°³ °èÁ¤Àº ±×´ë·Î ÇÏ°í ³ª¸ÓÁö 1¸¸5õ°³ °èÁ¤Àº »õ·Î¿î
°èÁ¤À¸·Î ¼ÒÀ¯±ÇÀ» ¹Ù²Ù°í ½Í´Ù´Â »óȲÀΰ¡¿ä?
ȤÀº °¢ °èÁ¤¸¶´Ù root ±ÇÇÑÀ¸·Î »ç¿ëÇÏ´Â ÆÄÀÏÀÌ Àִµ¥ À̰Ÿ¦ À¯ÁöÇÏ°í ½Í´Ù´Â ¸»¾¸À̽Ű¡¿ä?
/home ¹Ø¿¡ °èÁ¤ÀÌ ÀÖ´Ù´Â ÀüÁ¦°¡ ÀÏ´Ü ÀÌ»óÇÕ´Ï´Ù. °èÁ¤Àº ½Ã½ºÅÛ¿¡¼ °ü¸®Çϸç /etc/passwd ¿¡¼ Á¤ÀÇÇؼ Á¸ÀçÇÕ´Ï´Ù.
/home ¹Ø¿¡ µð·ºÅ丮¿Í ÆÄÀÏÀÌ Àִµ¥ ÀÌÁß¿¡´Â ¼ÒÀ¯ÀÚ°¡ old ±×·ìÀÌ old ÀÎ ÆÄÀÏ ¹× µð·ºÅ丮µµ ÀÖ°í ¾î¶²°Ç ¼ÒÀ¯ÀÚ°¡ root ÀÌ°í
±×·ìÀÌ root ÀÏ °æ¿ìµµ ÀÖ°í ¾î¶²°Ç ¼ÒÀ¯ÀÚ°¡ bbb ±×·ìÀÌ bbb ÀÎ °Íµµ ÀÖ°í ÀÌ È¨µð·ºÅ丮´Â /home/new ¾È¿¡ ÀÖ½À´Ï´Ù. ÀÌ Áß old °¡ ¼ÒÀ¯ÀÚ À̰ųª
±×·ì ÀÏ °æ¿ì À̸¦ ¸ðµÎ new ·Î ¹Ù²ã¾ß Çϴµ¥ °¢¾ç °¢»öÀÇ ½Ã½ºÅÛµéÀ̶ó Á¸Àç º¯¼ö°¡ ¸¹¾Æ¼ ½ºÅ©¸³Æ®¸¦ ¿øÇß´ø °Ì´Ï´Ù.
# /home/2cpu µð·ºÅ丮 ÇÏÀ§¿¡¼
# user/group À» °¢°¢ daemon ¿¡¼ nobody ·Î º¯°æÇϱâ
find /home/2cpu -user daemon -exec ls -l {} \;|more
find /home/2cpu -user daemon -exec chown -v nobody {} \;|more
find /home/2cpu -group daemon -exec ls -l {} \;|more
find /home/2cpu -group daemon -exec chgrp -v nobody {} \;|more
¿¹·Î µå½Å find ¹® À§¿¡ ¿¥ºê¸®¿À´Ô °Í°ú ´õÇؼ Å×½ºÆ® ¿½ÉÈ÷ Çغ¸°Ú½À´Ï´Ù.
°¨»çÇÕ´Ï´Ù.
Á¤¸®Çؼ °èÁ¤°ú ±×·ìÀº ÅëÀÏÇصµ µÇ¼
find /home/2cpu -user daemon -exec chown -v nobody:nobody {} \;|more
·Î °áÁ¤ Çß½À´Ï´Ù.
°ËÁõÇÏ´Â °Íµµ Å«ÀÏÀÌ°Ú½À´Ï´Ù