Mam błąd, w którym uprawnienia /dev/input/event*
są nieprawidłowe, więc gdy korzystam z Mumble , aplikacja nie może wykryć naciśnięć klawiszy. Jeśli uruchomię następujące polecenie, „rozwiązuje” to problem, ale chciałbym naprawić na stałe.
sudo chmod a+r /dev/input/event/*
Co decyduje o uprawnieniach /dev/input/event*
i jak mogę je na stałe ustawić?
permissions
Popey
źródło
źródło
/dev/input/event/*
to zasadniczo dajesz wszystkim dostęp do wąchania klawiatury, na przykład wpisywanych haseł. W systemie z jednym użytkownikiem może to nie mieć większego znaczenia, ale nawet w systemie z jednym użytkownikiem zwykle używamy użytkowników systemu jako dodatkowej warstwy bezpieczeństwa na wypadek, gdyby jakiś komponent został naruszony, i na przykład dającnobody
użytkownikowi dostęp do klawiatury strumień wejściowy osłabiasz tę ochronę. Chociaż może to „naprawić” Mumble, nie jest to odpowiednie ogólne rozwiązanie twojego problemu. Powinien być lepszy sposób./dev/input
są nieprawidłowe i jakie są obecnie prawa własności i uprawnienia (być może z wynikiemls -l
)? Czy problem polega na tym, żeinput
grupa nie ma uprawnień do odczytu (lub że nie jest jej właścicielem)? W moim systemie pliki zdarzeń mająroot:input
własność i zarówno użytkownicy, jak i właściciele grup mogą je czytać. Jeśli tego nie masz, być może powinieneś spróbować skonfigurować to w ten sposób, zamiast pozwolić wszystkim na ich przeczytanie. Jeśli to masz, Mumble może wystartować z mocamiinput
grupy.Odpowiedzi:
Bardziej elastycznym sposobem zarządzania uprawnieniami do plików jest użycie ACL .
Jeśli naprawdę chcesz, aby to stało się trwałe, możesz użyć reguł udev, które ustawiają to dla twojego urządzenia wejściowego zdarzenia
dodaj plik /etc/udev/rules.d/99-userdev-input.rules z:
możesz sprawdzić uprawnienia ACL za pomocą
źródło
Nie wiem, co początkowo ustawia uprawnienia urządzeń znakowych / dev / input / event *
ale wiem, że możesz zmienić te uprawnienia za pomocą oprogramowania domyślnie zainstalowanego w systemie jako część coreutils. zobacz polecenie
man mknod
.Uprawnienia moich urządzeń zdarzeń to:
oto kilka przykładów użycia:
jeśli potrzebujesz więcej informacji na temat decydowania o liczbach głównych i mniejszych, spójrz tutaj
Teraz mówisz, że uprawnienia są nieprawidłowe. Więc coś musi je źle ustawiać i to musi działać jako root. mknod może być użyty do stworzenia urządzenia, ale mkdev też. możesz przyjrzeć się uprawnieniom domyślnych akcji dla mkdev i mknod.
Jak w moich przykładach: / dev / input / event0 ma uprawnienia crw-rw, ale domyślne uprawnienia lolwat zostały ustawione na crw-r - r--
Mam pewną niepewność, czy typ urządzenia dyktuje oryginalne uprawnienia. Możesz się z tym eksperymentować, aby się dowiedzieć.
Oto kolejny link, aby uzyskać więcej informacji o mknod
źródło
Zasadniczo musisz dodać plik
/etc/udev/rules.d/
(możesz nazwać go jak75-input-events.conf
)I dodaj wiersze
KERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777"
dla każdego zdarzenia do tego pliku, gdzie x jest liczbą. Na przykład mam zdarzenia od 0 do 9, więc osobiście zrobiłbym dla każdego z nich. Ostatnia odpowiedź w tym wątku sugeruje, że mógłbyś również dodaćKERNEL==event*
(tj. Z użyciem dzikiej karty).źródło
Moją sugestią jest zainstalowanie narzędzi wejściowych aplikacji
Jest to zbiór narzędzi przydatnych podczas pracy z warstwą wejściową jądra Linux (wersja 2.6 i nowsze). Zawarte są narzędzia do wyświetlania listy urządzeń wejściowych znanych w jądrze, wyświetlania zdarzeń wejściowych odbieranych przez urządzenie oraz sprawdzania lub modyfikowania map klawiatury.
Poleceniem zainteresowania jest:
Zrzuca wszystkie urządzenia wejściowe i powiązane szczegóły dotyczące urządzenia.
Za pomocą polecenia można obserwować zdarzenia wejściowe, określając N-ty numer urządzenia:
Następnie można zrzucić mapowanie klawiatury określonego urządzenia zdarzenia za pomocą polecenia, określając N-ty numer urządzenia:
Za pomocą tych narzędzi można debugować system, aby sprawdzić, czy dane wejściowe generują oczekiwane kody zdarzeń, a tym samym pomóc rozwiązać problemy, takie jak dlaczego klucze nie działają lub są niepoprawnie mapowane.
Udev jest menedżerem urządzeń dla jądra Linux. Zarządza węzłami urządzeń w / dev i obsługuje wszystkie działania w przestrzeni użytkownika podczas dodawania lub usuwania urządzeń.
Evdev to ogólny interfejs zdarzeń wejściowych w jądrze Linuksa, który uogólnia surowe zdarzenia wejściowe ze sterowników urządzeń i udostępnia je za pośrednictwem urządzeń znakowych w
/dev/input/
katalogu.Za każdym razem, gdy nastąpi zmiana w strukturze urządzenia, jądro emituje uevent, który jest przechwytywany przez udev. udev następnie postępuje zgodnie z regułami zadeklarowanymi w katalogach /etc/udev/rules.d, /run/udev/rules.d i /lib/udev/rules.d.
Na podstawie informacji zawartych w zdarzeniu wyszukuje regułę lub reguły, które należy uruchomić, i wykonuje wymagane działania.
Działania te mogą polegać na tworzeniu lub usuwaniu plików urządzeń, ale mogą także powodować ładowanie określonych plików oprogramowania układowego do pamięci jądra.
źródło
W biegu terminalowym:
Zejdź do linii z napisem „exit 0”, a w linii powyżej wpisz:
Naciśnij Ctrl + x, aby wyjść z tego. Zapyta Cię, czy chcesz zapisać. Hit y. Zapyta Cię, co zapisać jako. Po prostu naciśnij Enter.
Teraz to polecenie powinno się uruchamiać przy każdym uruchomieniu, a tym samym dać ci uprawnienia do tego folderu. Plik /etc/rc.local automatycznie ma uprawnienia roota, więc nie musisz wprowadzać hasła, aby to zrobić.
źródło