Cosa determina le autorizzazioni in / dev?


11

Ho un bug in cui le autorizzazioni /dev/input/event*sono sbagliate, quindi quando uso Mumble , l'applicazione non è in grado di rilevare la pressione dei tasti. Se eseguo il comando seguente "risolve" il problema, ma vorrei una correzione permanente.

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

Cosa determina le autorizzazioni /dev/input/event*e come posso impostarle permanentemente?


6
Nota che se dai il permesso "tutto" alla lettura /dev/input/event/*, stai essenzialmente dando a tutti l'accesso a annusare la tastiera, ad esempio le password che digiti. Su un sistema a utente singolo questo potrebbe non importare molto, ma anche su un sistema a utente singolo generalmente utilizziamo gli utenti di sistema come ulteriore livello di sicurezza nel caso in cui alcuni componenti vengano compromessi e dando ad esempio l' nobodyaccesso dell'utente alla tastiera flusso di input stai indebolendo questa protezione. Mentre questo potrebbe "risolvere" Mumble, non è una soluzione generale appropriata al tuo problema. Dovrebbe esserci un modo migliore.
— Robie Basak,

3
@popey Puoi dire di più sul perché le autorizzazioni sui nodi /dev/inputsono sbagliate e quali sono attualmente la proprietà e le autorizzazioni (forse con l'output di ls -l)? Il problema è che il inputgruppo non dispone delle autorizzazioni di lettura (o che non è il proprietario del gruppo)? Sul mio sistema i file degli eventi sono root:inputproprietari e sia i proprietari degli utenti che i gruppi possono leggere da essi. Se non lo hai, dovresti forse provare a configurarlo in questo modo piuttosto che lasciare che tutti li leggano. Se fare avere questo, può essere sufficiente per Mambo a correre con i poteri del inputgruppo.
— Eliah Kagan,

@EliahKagan cosa pensi della mia risposta? puoi per favore rivederlo?
— Sergiy Kolodyazhnyy,

si fa male. usa ACL. vedi la mia risposta qui sotto
— solsTiCe

Potete farmi sapere la versione di distribuzione o la versione xorg-server? perché xorg-server 2: 1.9.99.902-2ubuntu1 aveva risolto il problema.
— Tohid Tamboli

Risposte:


4

Un modo più flessibile per gestire le autorizzazioni sui file è utilizzare ACL .

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

Se hai davvero bisogno di renderlo permanente, puoi usare le regole udev che lo impostano per il tuo dispositivo di input degli eventi

aggiungi un file /etc/udev/rules.d/99-userdev-input.rules con:

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

puoi controllare l'autorizzazione ACL con

getfacl /dev/input/event*

2

Non so cosa imposta inizialmente i permessi dei dispositivi carattere / dev / input / event *

ma so che puoi cambiare quelle autorizzazioni con un software che è sul tuo sistema di default come parte di coreutils. vedi il comando man mknod.

Le autorizzazioni dei miei dispositivi per eventi sono:

crw-rw ---- 1 input root 13, 64 Apr 14 06:39 / dev / input / event0

ecco alcuni esempi di utilizzo:

~$ 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

se hai bisogno di maggiori informazioni per decidere sui numeri maggiori e minori, guarda qui

Ora, dici che le autorizzazioni sono sbagliate. Quindi qualcosa deve sbagliarli e quella cosa deve funzionare come root. mknod potrebbe essere usato per creare un dispositivo, ma anche mkdev. potresti voler esaminare le autorizzazioni di qualunque azione predefinita sia per mkdev e mknod.

Come nei miei esempi: / dev / input / event0 ha le autorizzazioni crw-rw, ma le autorizzazioni predefinite, di lolwat erano impostate su crw-r - r--

Ho delle incertezze sul fatto che il tipo di dispositivo imponga le autorizzazioni originali. Puoi scoprirlo per scoprirlo.

Ecco un altro link per maggiori informazioni su mknod


mumble funziona come root?
— j0h

1

Fondamentalmente, avresti bisogno di aggiungere un file /etc/udev/rules.d/(potresti chiamarlo in modo simile 75-input-events.conf)

E aggiungi le righe KERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777"per ogni evento in quel file, dove x è il numero. Ad esempio, ho eventi da 0 a 9, quindi farei personalmente per ognuno di essi. L'ultima risposta su questo thread suggerisce che potresti aver aggiunto KERNEL==event*(ad esempio, con il carattere jolly).


0

Il mio consiglio è di installare l'applicazione input-utils

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

Questa è una raccolta di utilità utili quando si lavora con il livello di input del kernel Linux (versione 2.6 e successive). Sono incluse le utilità per elencare i dispositivi di input noti al kernel, mostrare gli eventi di input ricevuti da un dispositivo e interrogare o modificare le mappe della tastiera.

Il comando di interesse è:

sudo -i 
lsinput

Scarica tutti i dispositivi di input e i dettagli associati sul dispositivo.

È possibile osservare gli eventi di input utilizzando il comando, specificando l'ennesimo numero di dispositivo:

sudo -i
input-events <device number>

È quindi possibile eseguire il dump della mappatura della tastiera di un determinato dispositivo evento utilizzando il comando, specificando l'ennesimo numero di dispositivo:

sudo -i
input-kyb <device number>

Con questi strumenti è possibile eseguire il debug di un sistema per vedere se gli input generano i codici evento previsti e quindi aiutare a risolvere problemi come il motivo per cui le chiavi non funzionano o sono mappate in modo errato.

Udev è il gestore dei dispositivi per il kernel Linux. Gestisce i nodi del dispositivo in / dev e gestisce tutte le azioni dello spazio utente durante l'aggiunta o la rimozione di dispositivi.

Evdev è un'interfaccia generica di eventi di input nel kernel Linux che generalizza eventi di input non elaborati dai driver di dispositivo e li rende disponibili tramite dispositivi a caratteri nella /dev/input/directory.

Ogni volta che si verifica un cambiamento nella struttura del dispositivo, il kernel emette un evento che viene raccolto da udev. udev segue quindi le regole dichiarate nelle directory /etc/udev/rules.d, /run/udev/rules.d e /lib/udev/rules.d.

Sulla base delle informazioni contenute all'interno di uevent, trova la regola o le regole necessarie per attivare ed eseguire le azioni richieste.

Queste azioni possono essere la creazione o l'eliminazione di file del dispositivo, ma possono anche innescare il caricamento di determinati file del firmware nella memoria del kernel.


0

In una corsa terminale:

sudo nano -b /etc/rc.local

Scendi fino alla riga che dice "exit 0" e in una riga sopra digita:

sudo chmod a + r / dev / input / event

Premi Ctrl + x per uscire. Ti chiederà se vuoi salvare. Hit y. Ti chiederà cosa salvare come. Premi Invio.

Ora, quel comando dovrebbe avviarsi ad ogni avvio e quindi dare i permessi a quella cartella. Il file /etc/rc.local ha automaticamente i privilegi di root, quindi non dovrai inserire una password per farlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.