구글애드센스


Unix - chmod의 활용. STUDY



#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <stdlib.h>

#include "error.h"

int
main()


       int fsrc; 
       void *ch;
       struct stat buf; 

       if(stat ("/home/test/0391037/resume",&buf) < 0)

       { 
               perror("stat(resume)"); 
               exit(0); 
       } 
       if(chmod("/home/test/0391037/resume", buf.st_mode & ~S_IXUSR|S_ISUID|S_IXOTH|S_IXUSR) < 0 )

       { 
               perror("chmod(resume)"); 
               exit(0); 
       } 
       fsrc = open("/home/test/0391037/sample.txt",O_RDONLY); 

       if(fsrc == -1)

       { 
               printf("file open error!"); 
               exit(0); 
       } 

       lseek(fsrc , 0L, SEEK_SET); 

       for(;;) 
       { 
               ch = (void *)malloc(1); 
               if(read(fsrc, ch, 1)!= 0
                       { 
                               printf("%c", *((char*)ch)); 
                               free(ch); 
                       } 
               else break
       } 
       close(fsrc); 
       return 0;
}

void형 포인터에 메모리 할당하는거랑 아직 effective id에 대한 이해가 부족해서인지 절대경로랑 상대경로의 차이를 인식하지 못해서 한참 헤매다가 겨우겨우 알았다. 으휴.. -_-;
암튼 이 파일 자체는 내 홈디렉토리의 파일을 다른사람이 읽을수 있도록 owner id가 실제 log in 한 아이디가 될 수 있도록 퍼미션을 살짝 주는것이 관건. chmod로 S_ISUID 비트를 이용한다.


덧글

댓글 입력 영역