개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.04 15:18

posix_uname 함수 사용 중 오류가 발생한 이유를 문의합니다.

목록
  • 메모리최적화전문가 1일 전 2025.04.04 15:18
  • 3
    1
제가 posix_uname 함수를 사용하여 시스템 정보를 가져오려고 하는데, 오류가 발생합니다.
유닉스 시스템에서 uname 함수를 사용하여 시스템 이름을 가져오려고 하는데, 다음과 같은 오류 메시지가 발생합니다.
c

#include 



int main() {

    struct utsname uname_info;

    if (uname(&uname_info) == -1) {

        perror("uname");

        return 1;

    }

    printf("시스템 이름: %sn", uname_info.sysname);

    return 0;

}


위의 코드에서 uname 함수를 호출하여 시스템 이름을 가져오려고 하는데, 다음과 같은 오류 메시지가 발생합니다.


$ ./test

uname: Operation not permitted


이 오류는 무슨 이유로 발생하는 것일까요?

uname 함수를 사용할 때는 어떤 권한이 필요한가요?

위의 오류 메시지가 발생하는 이유를 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    uname 함수는 시스템 정보를 가져오는 함수로, 사용자에게 시스템 이름, 노드 이름, 릴리즈 버전, 버전, 머신 이름을 반환합니다.

    uname 함수를 사용하기 위해서는 root 권한이 필요합니다.

    root 권한이 없는 경우 Operation not permitted 오류 메시지가 발생합니다.

    이 오류는 시스템 보안을 위해 권한이 없는 사용자가 시스템 정보를 가져올 수 없기 때문입니다.

    root 권한을 획득한 후에 uname 함수를 호출하여 시스템 정보를 가져올 수 있습니다.

    예를 들어, root 권한을 획득한 후에 다음과 같은 코드를 실행하면 시스템 이름을 성공적으로 가져올 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    int main() {
    
        struct utsname uname_info;
    
        if (uname(&uname_info) == -1) {
    
            perror("uname");
    
            return 1;
    
        }
    
        printf("시스템 이름: %sn", uname_info.sysname);
    
        return 0;
    
    }
    
    


    또한, setuid bit를 설정하여 특정 프로그램이 root 권한을 가질 수 있도록 설정할 수도 있습니다.

    예를 들어, 다음과 같은 코드를 사용하여 setuid bit를 설정할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    
    
    int main() {
    
        chmod("test", S_ISUID | S_IRUSR | S_IXUSR);
    
        return 0;
    
    }
    
    


    이러한 방법으로 uname 함수를 사용하여 시스템 정보를 가져올 수 있습니다.

    2025-04-04 15:19

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 9,244건 / 16 페이지

검색

게시물 검색