2014-03-13 1 views
1

우분투에서 작업하고 있습니다.open/dev/mem - 작동이 허용되지 않습니다.

나는 /dev/mem을 열려고하고 그리고 난이 코드는 항상 "Failed to open /dev/mem : Operation not permitted"

내가 SO

  1. access-permissions-of-dev-mem

  2. 에 검색 한 인쇄 permission denied

    int32_t open_memdev() 
    { 
         int32_t fd; 
    
         fd = open("/dev/mem", O_RDONLY); 
         if (fd < 0) { 
           printf("Failed to open /dev/mem : %s\n", strerror(errno)); 
           return-EINVAL; 
         } 
    
         return fd; 
    } 
    

    무엇입니까

    accessing-mmaped-dev-mem

이 Q의는 1MB 이상 액세스 할 수 없다는 문제를 논의하는 것,하지만 내 문제는 내가 한 번도 열 수 없습니다 오전입니다.

Addtitional 자세한 내용은 도움이 경우 :

1) 나는 CONFIG_STRICT_DEVMEM가 활성화되어 내 구성을 확인.

2) ls -l /dev/mem 
crw-r----- 1 root kmem 1, 1 2014-03-13 13:57 /dev/mem 

추가 정보가 필요한 경우 알려주십시오.

+1

[ "'id']] (http://linux.about.com/library/cmd/blcmdl1_id.htm), 루트입니까? – osgx

+0

가능한 중복의 [액세스 권한 /dev/mem](http://stackoverflow.com/questions/6134984/access-permissions-of-dev-mem) – osgx

+0

@osgx이 Q의 중복 점을 명확히했습니다. 당신이 언급 한 사람. 내 질문에서 그 부분을 보도록 요청하십시오. 나는 루트가 아닙니다. 루트로 읽을 수 있습니다. 정상적인 사용자로서 루트가되지 않고 읽고 싶습니다. –

답변

6

이 아닌 경우 /dev/mem을 읽을 수 없습니다. 응용 프로그램 가상 메모리에서 실행되기 때문에

는 일반 응용 프로그램이 /dev/mem에 액세스 할 이유, 즉 물리적 RAM이 없습니다!

/dev/mem의 사용 권한을 변경하면 (사용하지 말아야 함) 시스템에 거대한 보안 구멍이 열립니다. 신뢰할 수있는 루트 프로세스 만 /dev/mem에 액세스해야합니다. 고려, 당신은 다른 processaddress spacevirtual memory에 액세스해야하는 경우 mem(4)

을 (그래서 원하는 경우 setuid 기술을 사용할 수 있음)를 참조하십시오 proc(5) 예를 들어, 의 프로세스는 1234입니다.

+0

Thanks. 알 겠어. –

관련 문제