Apa yang menentukan izin di / dev?

11

Saya memiliki bug di mana izin /dev/input/event*salah, jadi ketika saya menggunakan Mumble , aplikasi tidak dapat mendeteksi penekanan tombol. Jika saya menjalankan perintah berikut ini "memperbaiki" masalah, tapi saya ingin perbaikan permanen.

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

Apa yang menentukan izin pada /dev/input/event*dan bagaimana cara mengaturnya secara permanen?

popey
sumber
5
Perhatikan bahwa jika Anda memberikan "semua" izin untuk membaca /dev/input/event/*maka Anda pada dasarnya memberi semua orang akses untuk mengendus keyboard Anda, misalnya kata sandi yang Anda ketikkan. Pada sistem pengguna tunggal ini mungkin tidak terlalu penting, tetapi bahkan pada sistem pengguna tunggal kami biasanya menggunakan pengguna sistem sebagai lapisan keselamatan tambahan jika ada komponen yang dikompromikan, dan dengan memberikan misalnya nobodyakses pengguna ke keyboard Anda aliran input Anda melemahkan perlindungan ini. Meskipun ini mungkin "memperbaiki" Bergumam, itu bukan solusi umum yang tepat untuk masalah Anda. Harus ada cara yang lebih baik.
Robie Basak
2
@popey Bisakah Anda mengatakan lebih banyak tentang mengapa izin pada node /dev/inputsalah, dan apa kepemilikan dan izin saat ini (mungkin dengan output dari ls -l)? Apakah masalah bahwa inputgrup tidak memiliki izin baca (atau bukan pemilik grup)? Di sistem saya, file acara memiliki root:inputkepemilikan dan pemilik pengguna dan grup dapat membacanya. Jika Anda tidak memiliki ini, Anda mungkin harus mencoba mengaturnya daripada membiarkan semua orang membacanya. Jika Anda melakukan hal sudah begini, mungkin cukup untuk Mumble untuk menjalankan dengan kekuasaan inputkelompok.
Eliah Kagan
@ ElliKagan apa pendapatmu tentang jawabanku? bisakah kamu memeriksanya?
Sergiy Kolodyazhnyy
ya itu buruk. gunakan ACL. lihat jawaban saya di bawah ini
solsTiCe
Bisakah Anda memberi tahu saya versi Distribusi atau versi xorg-server? karena xorg-server 2: 1.9.99.902-2ubuntu1 telah menyelesaikan masalah.
Tohid Tamboli

Jawaban:

4

Cara yang lebih fleksibel untuk mengelola izin pada file adalah dengan menggunakan ACL .

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

Jika Anda benar-benar perlu membuat ini permanen maka Anda dapat menggunakan aturan udev yang mengaturnya untuk perangkat input acara Anda

tambahkan file /etc/udev/rules.d/99-userdev-input.rules dengan:

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

Anda dapat memeriksa izin ACL dengan

getfacl /dev/input/event*
titik balik matahari
sumber
2

Saya tidak tahu apa yang awalnya mengatur izin perangkat karakter / dev / input / event *

tetapi, saya tahu Anda dapat mengubah izin tersebut dengan perangkat lunak yang ada di sistem Anda secara default sebagai bagian dari coreutils. lihat perintahnya man mknod.

Izin perangkat acara saya adalah:

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

berikut ini beberapa contoh penggunaan:

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

jika Anda memerlukan info lebih lanjut untuk memutuskan nomor besar dan kecil, lihat di sini

Sekarang, Anda mengatakan izinnya salah. Jadi sesuatu pasti salah, dan hal itu harus dijalankan sebagai root. mknod dapat digunakan untuk membuat perangkat, tetapi mkdev juga bisa. Anda mungkin ingin melihat izin apa pun tindakan default untuk mkdev, dan mknod.

Seperti dalam contoh saya: / dev / input / event0 memiliki izin crw-rw, tetapi izin default, dari lolwat ditetapkan ke crw-r - r--

Saya memiliki beberapa ketidakpastian, apakah jenis perangkat menentukan izin asli. Anda dapat mencoba ini untuk mengetahuinya.

Berikut ini tautan lain untuk info lebih lanjut tentang mknod

j0h
sumber
apakah gumaman berjalan sebagai root?
j0h
1

Pada dasarnya, Anda perlu menambahkan file /etc/udev/rules.d/(Anda bisa menamainya seperti 75-input-events.conf)

Dan tambahkan baris KERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777"untuk setiap peristiwa ke dalam file itu, di mana x adalah nomornya. Misalnya, saya memiliki acara 0 hingga 9, jadi saya pribadi akan melakukannya untuk masing-masing. Jawaban terakhir di utas ini menyarankan Anda bisa menambahkan KERNEL==event*(yaitu, dengan kartu liar) juga.

Sergiy Kolodyazhnyy
sumber
0

Saran saya adalah agar Anda menginstal aplikasi input-utils

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

Ini adalah kumpulan utilitas yang berguna ketika bekerja dengan lapisan input kernel Linux (versi 2.6 dan yang lebih baru). Termasuk di dalamnya adalah utilitas untuk mencantumkan perangkat input yang dikenal oleh kernel, menunjukkan aktivitas input yang diterima oleh perangkat, dan meminta atau memodifikasi peta keyboard.

Perintah yang menarik adalah:

sudo -i 
lsinput

Itu membuang semua perangkat input dan rincian terkait tentang perangkat.

Seseorang dapat mengamati peristiwa input menggunakan perintah, dengan menentukan nomor perangkat Nth:

sudo -i
input-events <device number>

Seseorang kemudian dapat membuang pemetaan keyboard dari perangkat acara tertentu menggunakan perintah, dengan menentukan nomor perangkat Nth:

sudo -i
input-kyb <device number>

Dengan alat-alat ini orang dapat men-debug sistem untuk melihat apakah input menghasilkan kode acara yang diharapkan dan karenanya membantu memilah masalah seperti mengapa kunci tidak berfungsi atau dipetakan secara tidak benar.

Udev adalah manajer perangkat untuk kernel Linux. Ini mengelola node perangkat di / dev dan menangani semua tindakan ruang pengguna saat menambah atau menghapus perangkat.

Evdev adalah antarmuka peristiwa input generik di kernel Linux. Ini menggeneralisasi peristiwa input mentah dari driver perangkat dan membuatnya tersedia melalui perangkat karakter di /dev/input/direktori.

Setiap kali perubahan terjadi dalam struktur perangkat, kernel memancarkan uevent yang diambil oleh udev. udev kemudian mengikuti aturan sebagaimana dideklarasikan di direktori /etc/udev/rules.d, /run/udev/rules.d dan /lib/udev/rules.d direktori.

Berdasarkan informasi yang terkandung dalam uevent, ia menemukan aturan atau aturan yang diperlukan untuk memicu dan melakukan tindakan yang diperlukan.

Tindakan ini dapat membuat atau menghapus file perangkat, tetapi juga dapat memicu pemuatan file firmware tertentu ke dalam memori kernel.

Kyodake
sumber
0

Dalam terminal run:

sudo nano -b /etc/rc.local

Turun ke baris yang mengatakan "keluar 0" dan di baris di atasnya ketik:

sudo chmod a + r / dev / input / event

Tekan Ctrl + x untuk keluar. Ini akan menanyakan apakah Anda ingin menyimpan. Pukul y. Ini akan menanyakan Anda apa yang harus disimpan. Tekan saja Enter.

Sekarang, perintah itu harus mulai di setiap boot dan dengan demikian memberi Anda izin ke folder itu. File /etc/rc.local secara otomatis memiliki hak akses root sehingga Anda tidak perlu memasukkan kata sandi untuk melakukan ini.

Kolonel Trogdor
sumber