/ dev의 권한은 무엇입니까?


11

권한 /dev/input/event*이 잘못된 버그가 있으므로 Mumble을 사용 하면 응용 프로그램에서 키 누름을 감지 할 수 없습니다. 다음 명령을 실행하면 문제가 "수정"되지만 영구적 인 수정이 필요합니다.

sudo chmod a+r /dev/input/event/*

사용 권한을 결정하는 내용은 무엇 /dev/input/event*이며 어떻게 영구적으로 설정합니까?


6
"모두"읽기 권한을 /dev/input/event/*부여하면 기본적으로 모든 사람이 키보드를 스니핑 할 수 있습니다 (예 : 입력 한 비밀번호). 단일 사용자 시스템에서는 그다지 중요하지 않지만 단일 사용자 시스템에서도 일반적으로 일부 구성 요소가 손상 nobody되고 사용자가 키보드에 액세스 할 수 있도록하여 시스템 사용자를 추가 안전 계층으로 사용합니다. 입력 스트림이 보호 기능을 약화시키고 있습니다. 이 문제는 Mumble을 "수정"할 수 있지만 문제에 대한 일반적인 해결책은 아닙니다. 더 좋은 방법이 있어야합니다.
Robie Basak

3
@popey 노드에 대한 권한이 왜 틀린지 /dev/input, 그리고 현재 소유권과 권한이 무엇인지 에 대해 더 자세히 말할 수 있습니까 ls -l? 하는 문제가 input그룹이 읽기 권한이 없습니다 (또는이 그룹의 소유자가 아닌 것을)? 내 시스템에서 이벤트 파일은 root:input소유권을 가지며 사용자 및 그룹 소유자가 읽을 수 있습니다. 이것을 가지고 있지 않다면, 모든 사람이 읽지 말고 그렇게 설정해야 합니다. 당신이 경우에 이이 멈블이의 권한으로 실행하는 것은 충분히있을 수 있습니다 input그룹.
Eliah Kagan

@EliahKagan 내 대답은 어떻습니까? 검토해 주시겠습니까?
Sergiy Kolodyazhnyy

그래, 나쁘다 ACL을 사용하십시오. 아래 내 답변을 참조하십시오
solsTiCe

배포 버전 또는 xorg-server 버전을 알려주시겠습니까? xorg-server 2 : 1.9.99.902-2ubuntu1이 문제를 해결했기 때문입니다.
Tohid Tamboli

답변:


4

파일에 대한 권한을 관리 하는보다 유연한 방법은 ACL 을 사용하는 것 입니다.

sudo setfacl -m u:popey:rw /dev/input/eventx

이것을 영구적으로 만들어야하는 경우 이벤트 입력 장치에 대해 설정하는 udev 규칙을 사용할 수 있습니다

다음 과 같이 /etc/udev/rules.d/99-userdev-input.rules 파일을 추가하십시오 .

KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:popey:rw $env{DEVNAME}"

당신은 ACL 권한을 확인할 수 있습니다

getfacl /dev/input/event*

2

초기에 문자 장치 / dev / input / event *의 권한을 설정하는 것을 모르겠습니다.

하지만 기본적으로 coreutils의 일부로 시스템에있는 소프트웨어를 사용하여 해당 권한을 변경할 수 있다는 것을 알고 있습니다. 명령을 참조하십시오 man mknod.

내 이벤트 장치의 권한은 다음과 같습니다.

crw-rw ---- 1 개의 루트 입력 13, 64 4 월 14 일 06:39 / dev / input / event0

다음은 몇 가지 사용 예입니다.

~$ sudo mknod lolwat c 4 64 
~$ sudo mknod lolwatnow c 4 64  -m 777
~$ ls -l lolwat*
crw-r--r-- 1 root root 4, 64 Apr 14 08:07 lolwat
crwxrwxrwx 1 root root 4, 64 Apr 14 08:08 lolwatnow

주요 및 부수를 결정하는 데 대한 자세한 정보가 필요하면 여기를 참조하십시오.

이제 권한이 잘못되었다고 말합니다. 따라서 무언가 잘못 설정해야하며, 루트로 실행해야합니다. mknod를 사용하여 장치를 만들 수 있지만 mkdev도 가능합니다. mkdev 및 mknod에 대한 기본 조치의 권한을보고 싶을 수 있습니다.

내 예에서와 같이 / dev / input / event0에는 crw-rw 권한이 있지만 lolwat의 기본 권한은 crw-r--r--로 설정되었습니다.

장치 유형이 원래 권한을 지시하는지 여부에 대한 불확실성이 있습니다.이를 실험하여 알아낼 수 있습니다.

mknod에 대한 자세한 정보는 다음 링크를 참조하십시오.


겸손이 뿌리로 달리고 있습니까?
j0h

1

기본적으로 파일을 추가해야합니다 /etc/udev/rules.d/(같은 이름을 지정할 수 있습니다 75-input-events.conf)

그리고 KERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777"각 이벤트에 대한 행 을 해당 파일에 추가 하십시오. 여기서 x는 숫자입니다. 예를 들어, 0에서 9까지의 이벤트가 있으므로 개인적으로 각 이벤트에 대해 수행합니다. 이 글타래의 마지막 답변 은 당신이 KERNEL==event*(와일드 카드로) 더 했음을 암시합니다 .


0

내 제안은 응용 프로그램 input-utils를 설치하는 것입니다.

sudo -i
apt-get update
apt-get install input-utils

Linux 커널의 입력 계층 (버전 2.6 이상)으로 작업 할 때 유용한 유틸리티 모음입니다. 커널에 알려진 입력 장치를 나열하고 장치가 수신 한 입력 이벤트를 표시하며 키보드 맵을 쿼리 또는 수정하는 유틸리티가 포함되어 있습니다.

관심있는 명령은 다음과 같습니다.

sudo -i 
lsinput

모든 입력 장치와 장치에 대한 관련 세부 정보를 덤프합니다.

N 번째 장치 번호를 지정하여 명령을 사용하여 입력 이벤트를 관찰 할 수 있습니다.

sudo -i
input-events <device number>

그런 다음 N 번째 장치 번호를 지정하여 명령을 사용하여 특정 이벤트 장치의 키보드 매핑을 덤프 할 수 있습니다.

sudo -i
input-kyb <device number>

이러한 도구를 사용하면 입력을 통해 예상되는 이벤트 코드를 생성하는지 확인하기 위해 시스템을 디버깅 할 수 있으므로 키가 작동하지 않거나 잘못 매핑되는 이유와 같은 문제를 해결하는 데 도움이됩니다.

Udev는 Linux 커널의 장치 관리자입니다. / dev에서 장치 노드를 관리하고 장치를 추가하거나 제거 할 때 모든 사용자 공간 작업을 처리합니다.

Evdev는 Linux 커널의 일반 입력 이벤트 인터페이스로, 장치 드라이버의 원시 입력 이벤트를 일반화하고 /dev/input/디렉토리의 문자 장치를 통해 사용할 수 있도록합니다 .

장치 구조 내에서 변경이 발생할 때마다 커널은 uevent에 의해 선택되는 uevent를 생성합니다. 그런 다음 udev는 /etc/udev/rules.d, /run/udev/rules.d 및 /lib/udev/rules.d 디렉토리에 선언 된 규칙을 따릅니다.

uevent에 포함 된 정보를 기반으로 트리거하는 데 필요한 규칙을 찾아 필요한 조치를 수행합니다.

이러한 작업은 장치 파일을 만들거나 삭제할 수 있지만 특정 펌웨어 파일을 커널 메모리로로드 할 수도 있습니다.


0

터미널 실행에서 :

sudo nano -b /etc/rc.local

"exit 0"이라고 표시된 줄로 내려 가서 그 위 줄에 입력하십시오 :

sudo chmod a + r / dev / input / event

종료하려면 Ctrl + x를 누르십시오. 저장 여부를 묻습니다. y를 누르십시오. 무엇을 저장할 것인지 묻습니다. Enter 키를 누르십시오.

이제이 명령은 부팅 할 때마다 시작되므로 해당 폴더에 대한 권한을 부여해야합니다. /etc/rc.local 파일에는 자동으로 루트 권한이 있으므로 암호를 입력하지 않아도됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.