2012-11-04 3 views
7

리눅스 프로그램에서 콘솔 (xorg 없음 등)에서 키보드/마우스를 읽으려면/dev/input/event *를 사용하고 있습니다. 그러나 읽을 수 있으려면 root 여야합니다. permissons 및 설정 파일을 변경하지 않고도 루트 권한이 필요없이 그 내용을 읽을 수있는 대체 양식이 있습니까?root 권한이없는 Linux 원시 입력?

기본적으로 설명 할 이유가없는 이유를 이해합니다.

:

+1

이렇게하려면 루트 권한이 있어야합니다. 그렇지 않으면 키보드 로거/스니퍼/스파이가 가능할 수 있습니다. 그리고 Unix는 안전한 다중 사용자 시스템으로 설계되었습니다. –

답변

6

장치 파일이 속한 그룹을 확인하려면 선택하십시오. 예를 들어 다음과 같습니다.

 
$ ls -l /dev/input/ 
... 
crw-rw---- 1 root plugdev 13, 64 Nov 4 18:01 event0 
crw-rw---- 1 root plugdev 13, 65 Nov 4 18:01 event1 
crw-rw---- 1 root plugdev 13, 66 Nov 4 18:01 event2 
crw-rw---- 1 root plugdev 13, 67 Nov 4 18:01 event3 
crw-rw---- 1 root plugdev 13, 68 Nov 4 18:01 event4 
... 

사용자가 프로그램을 실행하는 사용자는이 시스템의 plugdev 그룹에 있어야합니다. 아마도 비슷한 시스템이있을 수 있습니다.

(그룹에 속하지 않고 장치를 읽거나 쓰는 것)을 피할 방법을 묻는다면, 아니오. 이것은 분명히 사용자 그룹을 통해 보안 목적을 무력화시킬 것입니다.

대신 이벤트 장치를 직접 읽는 대신 적절한 사용자 공간 API를 사용하는 것이 좋습니다. 예를 들어 키보드를 읽으려면 ncurses를 사용하고 마우스를 읽으려면 GPM을 사용하십시오.

7

예, 그것은 udev가 규칙을 작성하여 가능, 파일 /etc/udev/rules.d/99-input.rules을 만들 루트로 예를 들어이 HowTo

참조 KERNEL == "이벤트 *", 이름 = "입력/% k", MODE = "660", GROUP = "입력"

참고 : 먼저 "입력"그룹을 만들어야합니다.

+1

음, udev 규칙을 작성하려면 루트가 필요합니다. – theomega

+0

@theomega 물론 그렇습니다. 단 한 번만 필요하며 모드를 변경하는 것보다 훨씬 낫습니다. – iabdalkader

관련 문제