Bagaimana cara saya mengizinkan pengguna non-standar untuk menggunakan perangkat serial ttyUSB0?

35

Saya memiliki sistem Ubuntu 11.10 dengan 2 pengguna:

  • Yang pertama dibuat saat instalasi
  • Yang kedua malah dibuat setelah. Itu milik kelompok sudoers.

Sekarang masalahnya adalah ketika yang kedua mencoba menggunakan perangkat ttyUSB0, kesalahan berikut akan muncul:

"Could not open serial port /dev/ttyUSB0"

Saya dapat memperbaikinya dengan menggunakan:

sudo chown :second_user /dev/ttyUSB0

Namun ketika saya melepas perangkat dan menghubungkannya kembali, masalahnya kembali.

Apakah ada cara untuk memungkinkan pengguna lain mengakses perangkat? Saya kira saya harus menambahkan pengguna ke grup tertentu. Saat ini pemiliknya rootdan grupnya adalah dialout. Namun saya tidak yakin tentang grup dan saya tidak tahu cara menambahkan pengguna.

Terima kasih!

Maverik
sumber

Jawaban:

48

Seperti yang Anda perhatikan, /dev/ttyUSB0perangkat ini memiliki grup dialout. Yang perlu Anda lakukan adalah menambahkan pengguna kedua ke dialoutgrup:

sudo adduser second_user dialout

second_user harus keluar & masuk kembali lagi agar ini berlaku.

Jeremy Kerr
sumber
Jeremy terima kasih! Apakah ini berfungsi juga untuk akses ssh? Karena ketika saya mengakses pc melalui ssh saya melihat dua pengguna dengan nama yang sama. Saya kira satu adalah pengguna lokal dan yang lainnya adalah ssh. Bagaimana saya bisa memberikan kepemilikan kepada pengguna ssh?
Maverik
1
Ini akan memungkinkan second_user untuk mengakses port serial dari sembarang login, ssh atau lokal. Anda tidak perlu menetapkan kepemilikan untuk login tertentu dari pengguna itu.
Jeremy Kerr
2
Ya kamu benar. Saya harus keluar lalu masuk lagi untuk mendapatkan akses vis ssh.
Maverik
Untuk sesi pengguna yang login secara otomatis, Anda perlu me-reboot komputer, tidak hanya login ulang ke Sistem X Window. Diamati dengan Ubuntu 19.04.
tanius
12

Cara mudah:

sudoedit /etc/udev/rules.d/50-myusb.rules

Simpan teks ini:

KERNEL=="ttyUSB[0-9]*",MODE="0666"
KERNEL=="ttyACM[0-9]*",MODE="0666"

Cabut perangkat dan pasang kembali, dan itu harus dibaca / tulis dari pengguna mana pun!

Orion Lawlor
sumber
Bekerja pada 14,04 untuk perangkat buatan rumah di soket ttyACM. Terima kasih. +1
NonStandardModel
Tidakkah Anda perlu melakukan ini sebelum replug untuk memuat ulang aturan? sudo udevadm control --reload?
Alexis Paques
Bergantung pada filesystem mana yang menyimpan / etc / udev Anda, dan versi udev yang Anda miliki, Anda mungkin memang perlu memuat ulang secara eksplisit. Tetapi pada kebanyakan mesin yang saya gunakan, udev tampaknya mencari tahu secara otomatis (menggunakan inotify).
Orion Lawlor
Itu benar-benar tidak seharusnya dilakukan. Perangkat serial USB harus menjadi milik kelompok dialout atau serupa, dan pengguna harus ditambahkan ke dalamnya. Apa yang Anda usulkan akan masuk akal untuk jenis perangkat USB lainnya
Chris Stratton
7

Anda bisa menggunakan UDEV. Ini adalah sistem yang memicu setiap kali menghubungkan atau mencabut perangkat (di antara hal-hal lain). Dengannya, Anda membuat skrip berbagai hal untuk terjadi, termasuk mengatur izin.

Jalankan sudoedit /etc/udev/rules.d/50-ttyusb.rulesdan tempel ini di sana:

KERNEL=="ttyUSB[0-9]*",NAME="tts/USB%n",SYMLINK+="%k",GROUP="uucp",MODE="0666"

Simpan, keluar dan pasang kembali dan Anda harus siap dan berjalan. Menetapkan izin ke 666 memungkinkan siapa pun untuk menulis ke perangkat.

Saya mendasarkan ini dari halaman ini yang dari beberapa tahun yang lalu tetapi sesuatu seperti ini harus bekerja jika solusi Jeremy tidak.

Oli
sumber
1
Ini bekerja untuk saya, yaitu, saya menggunakan aturan udev, tetapi saya mengubah sintaks untuk mencocokkan kasus saya sendiri. linux.m2osw.com/sane-cannot-find-any-scanners - perhatikan bahwa jika Anda menggunakan MODE = "0666" maka Anda mungkin tidak memerlukan GROUP. Hanya satu yang akan bermanfaat.
Alexis Wilke
5

Fantastis - solusi UDEV yang diberikan di sini adalah tiket untuk saya.

Saya menginstal program CS-F3020_F5010_F5020 Icom melalui Wine, menciptakan tautan untuk port Com sebagai berikut:

ln -s /dev/ttyUSB0 ~/.wine/dosdevices/com1 but nothing. 

Kemudian saya menyadari bahwa saya perlu mengubah izin pada / dev / ttyUSB0 untuk memungkinkan saya mengaksesnya. Itu bekerja dengan baik sampai Anda mencabut / memasang kembali USB, maka Anda perlu mengubah kembali izin.

Saya mencoba menambahkan pengguna saya ke grup dialout tetapi ini tidak menyelesaikan masalah karena beberapa alasan.

Menggunakan UDEV memecahkan bagian terakhir dari teka-teki. Sekarang saya dapat memprogram radio Icom saya menggunakan Linux, pasang dan cabut perangkat USB / Serial tanpa ribut-ribut lagi. Woo hoo. Terima kasih.

Tom
sumber
3

Aturan udev bekerja tetapi sebagaimana tertulis mereka memiliki efek samping yang sangat jahat membuat semua ttyUSB*perangkat dapat diakses oleh semua orang. Ini tidak baik karena itu mungkin risiko keamanan tergantung pada apa lagi yang ada di sistem.

Alih-alih menggunakan aturan udev yang lebih selektif. Misalnya saya punya perangkat USB yang mengoperasikan satu set sakelar. Dari dmesg ketika dicolokkan, saya bisa melihat ID pabrikan dan kode produk (ditambah, bahkan, dalam hal ini, nomor seri untuk perangkat). Saya dapat menambahkan:

ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001"

ke baris kernel di atas dan aturan hanya akan berlaku untuk perangkat itu. Bahkan lebih baik daripada menugaskan ke MODEvariabel mengatur grup juga:

GROUP="whatever", MODE="0660"

maka hanya orang-orang dalam grup ' whatever' yang akan mendapatkan akses tulis.

John Bowler

John Bowler
sumber