2013-04-19 1 views
1

을 거부하면 오류 Couldn't create backup sub-directory: Permission denied가 발생하지만 전체 권한을 부여하고 우분투에서 관리자 계정을 사용하고있는 이유를 이해할 수 없습니다.이 코드를 실행할 때 Mkdir() 권한이 C/linux 프로그래밍

umask(0777); 
int folder_date_status = mkdir(filepath_W, 0777); 

if(folder_date_status == -1){ 
    perror("Couldn't create backup sub-directory"); 
     return -1; 
    } 
+0

읽기 http://advancedlinuxprogramming.com/ - 당신이 시간을 이길 것이다 그것을 읽는 데 몇 시간이 걸렸습니다. –

답변

2

관리자 계정은 기본적으로 전체 권한으로 실행되지 않습니다. 이는 실행하는 프로그램이 예기치 않게 권한있는 사용자 (즉, 명시 적으로 권한을 부여해야 함)로 작동하지 않도록하기위한 것입니다.

프로그램에 권한있는 액세스가 필요한 디렉토리에 하위 디렉토리를 만들 수있는 권한을 부여하려면 sudo을 사용해보십시오. 프로그램 이름이 myprogram를 호출하면

, 실행 해보십시오 :이 요청 된 경우

sudo ./myprogram 

그런 다음 암호를 입력합니다.

수퍼 유저 액세스는 쓰기 제한이 설정된 디렉토리 (예 : 루트가 소유 한 제한된 디렉토리 또는 다른 사용자)에서 하위 디렉토리를 만들려고하는 경우에만 필요합니다. 또한 상위 디렉토리가 있는지 확인하십시오 (그렇지 않으면 오류가 발생할 수도 있음).

+0

새로 생성 된 폴더를 열려고 할 때 전체 사용 권한 (0777)의 마스크를 넣었 기 때문에 문제가 절반 정도 해결되었지만 "폴더의 내용을 볼 수있는 권한이 없습니다"라는 오류가 있습니다 ... –

0

파일을 확인 했습니까? 그것에 대한 읽기, 쓰기 및 실행을 허용합니까? 난 당신이 절대 경로 이름을 사용하고의 tmp 디렉토리, 이런 식으로 뭔가를 가리 키도록하는 것이 좋습니다 :

filepath_w = "/ tmp를/디렉토리"