[완료]C언어로 파일업로드 cgi를 짜봤는데요 파일오픈이 안되네요

artanics의 이미지

#include <stdio.h>         // puts()
#include <string.h>        // strlen()
#include <fcntl.h>         // O_WRONLY
#include <unistd.h>        // write(), close()
 
int main()
{
    char  ch;
    int    fd;
 
    printf("Content-type: text/html\n\n");
    printf("upload ver1.0\n\n");
    if (( fd = open( "./test.txt", O_WRONLY | O_CREAT  |O_TRUNC ,0644)) <= 0)
	printf( "fileopen error\n");
 
    printf( "fileopen start\n");
    while(1) {
	fscanf(stdin, "%c", &ch);
	if(feof(stdin)) break;
	write( fd, &ch, 1);
    }
	close( fd);
 
   return 0;
}

----------------------------------------------------------------------------
소스코드이구요. 작업환경은 at91cap9stk 라는 임베디드 보드입니다.
아파치 버전은 1.3.41 이구요.
기존에 인터넷에서 돌아다니는 퍼미션이란 퍼미션은 다줘봤습니다.
현재는 디렉토리까지 풀로 777 인 상태입니다.

단순한 post로 넘어온 데이터를 받아서 파일에 기록하는 cgi입니다.
post값을 받으려고 stdin을 썼습니다

# ./upload.cgi
이렇게 실행하면 실행이 됩니다. 물론 파일도 생성이되고 정상적으로 쉘에서는 잘 작동이 됩니다.

하지만 웹에서 cgi를 실행 시키면 파일오픈에서 막혀버립니다.
// printf( "fileopen error\n");
저부분이 딱나와버리네요.
심지어 로그에도 아무런 오류코드가 안찍혀 있는데
왜 쉘에서는 파일이 생성되는데 cgi에서는 생성이 안될까요??
소스코드가 잘못된걸까요?

artanics의 이미지

완전 혼자 멍청한 짓을 했군요.
기존에 있던 test.txt 파일을 지우니까 됐습니다.
아마 그 권한이 root로 되어 있는 파일이라서 nobody 파일로 덮어쓸수 없었나 봅니다.