IT/Unix & Linux

cannot open /dev/kmem: Permission denied 해결방법

슈다루냥 2020. 2. 5.
728x90

안녕하세요. 슈다 입니다.

 

평소 잘 사용하던 명령어를 입력했는데, "cannot open /dev/kmem: Permission denied" 메세지가 발생하며

명령어 실행이 되지 않을 때 해결방법을 알아보겠습니다.

 

 

예를들어 netstat 명령을 사용한다고 가정합니다.

# netstat -in

cannot open /dev/kmem: Permission denied

 

 

 

netstat 명령어가 아닌 처음보는 /dev/kmem 경로의 파일 권한이 없다고 나오는데요,

이 파일의 권한을 살펴보면 아래와 같이 출력됩니다.

cr--r-----   1  root    system     2,   1   월   일  년   /dev/kmem

 

 

현재 로그인 한 계정은 root 이고, /dev/kmem 파일의 소유자도 root 입니다.

그렇지만 원하는 명령어가 실행이 되지 않고 있는 상황입니다.

 

 

이 현상은 대부분 root권한 소유자가 잘못된 명령어를 수행하는 등의 행위로 인해 (주로 chown 명령)

/ 경로 아래 불특정 다수 파일의 owner (소유자) 가 root가 아닌 일반계정으로 변경되었을 경우 발생합니다.

아래 명령 등으로 owner 변경이 의심스러운 경로를 확인합니다. 

# ls -al / |grep -v root

# ls -al /usr/sbin |grep -v root

# ls -al /usr/bin |grep -v root

 

 

위 명령을 통해 파일 소유 변경된 것을 확인했다면,  find 명령을 통해 전체 경로에서 변경된 파일을 검색합니다.

예를들어 test 계정으로 파일권한이 변경되었다면 아래와 같이 입력합니다.

# find / -user test -ls

 

 

test 계정이 owner인 파일이 출력됩니다.

아래 명령으로 find로 검색된 파일 owner를 일괄 변경 가능합니다.

# find / -user test -ls |awk '{print "chown root "$11}'

  > 소유자 변경 명령어 포함한 파일 경로 출력 (onwership 변경 안됨)

 

# find / -user test -ls |awk '{print "chown root  "$11}'  |sh

  > 출력된 명령을 실행 (실제 onwer쉽 변경 됨)

 

 

다만 /home/test/  등 기존 소유 파일의 권한까지 모두 변경되니

출력된 결과를 편집하여 일부 항목들만 ownership 변경하는 것을 권고합니다.

 

 

파일 오너쉽이 변경되었다면 다시한번 명령어를 사용해 결과를 확인합니다.

정상적으로 출력되는 것을 확인할 수 있습니다.

# netstat -in

 

 

위 ownership 변경 문제는 일부 명령어 실행뿐만이 아닌 smit 을 통한 명령어 실행도 불가능 할 수 있습니다.

smit 으로 실행한 경우 failed 결과값이 명령어 마다 상이할 수 있으므로

평소 잘 되던 smit 명령이 실패할 경우 위 처럼 파일 권한 변경 문제를 의심해 볼 수 있습니다.

728x90
반응형