본문 바로가기
코스웨어/13년 스마트컨트롤러

group 파일 분석

by 알 수 없는 사용자 2013. 9. 3.
728x90
반응형

 

 group 파일 분석!!

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

 

int main(int iArg, char *cpaArg[])
{

 

 FILE *stpFD;
 char *cpRet;
  
 char *cpSGroup;
 char caBuff[1024];
 char *cpGID = 0;
 char *cpGName = 0;
 char *cpUserlist = 0;


 /*
  /etc/group은  사용자들이 속한 그룹을 규정하는 ASCII 파일이고
  한 줄에 한명씩 각 줄마다 group_name : passwd : GID : user_list 형식을 가지고 있음
 */


 if(2 != iArg)
 {
       printf(" group_test groupname  형식으로 입력하시오!\n");
       return 0;
 } 
 
 cpSGroup = cpaArg[1];
 
 stpFD = fopen("/etc/group","r" );
 
 if( 0 == stpFD)
 {
       printf("fopen error!!\n");
  
       return 100;
 } 

 
 while(1)
 {

   cpRet = fgets(caBuff, sizeof(caBuff), stpFD);// 파일에서 한줄 읽어 와서 버퍼에 넣음 
  
  if( 0 == cpRet)
  {
        printf("파일끝에 도달!!\n");
        printf("일치하는 그룹네임을 찾지 못했습니다.\n");
        return 0;
        //cpGName = 0;
   
  }
  
  if( 0 == strncmp(cpSGroup, caBuff, strlen(cpSGroup)) ) // 찾으려는 그룹네임과 일치하면 탈출
  {  
        break;  
  } 

 

 }
  

 cpGName = caBuff;//Group Name 
 
 for(cpRet = caBuff; *cpRet != '\n'; ++cpRet)
 {
       if(':' == *cpRet)
       {
             *cpRet = 0;
       } 
 } 
 *cpRet = 0;// 개행문자 제거 
 
 cpGID = cpGName+strlen(cpGName)+3; // GID
 cpUserlist = cpGID+strlen(cpGID)+1;     // User List
 
 printf("Group Name  :  %s\n", cpGName);//Group Name 출력 
 printf("GID   :  %s\n", cpGID);                //GID 출력 
 printf("User List  :  %s\n", cpUserlist);    //user list 출력 

fclose(stpFD); 

      return 0;


}

 

 

 

 

 

728x90