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.