Varsayılan olmayan bir kullanıcının ttyUSB0 seri aygıtını kullanmasına nasıl izin veririm?


34

2 kullanıcılı bir Ubuntu 11.10 sistemim var:

  • İlk kurulum sırasında oluşturuldu
  • İkinci yerine sonra yaratıldı. Bu sudoers grubuna ait.

Şimdi sorun şu ki, ikinci bir cihazı kullanmaya çalıştığında ttyUSB0aşağıdaki hata döndürülür:

"Could not open serial port /dev/ttyUSB0"

Bunu kullanarak düzeltmeyi başardım:

sudo chown :second_user /dev/ttyUSB0

Ancak, cihazın bağlantısını kesip yeniden taktığımda sorun geri geliyor.

Farklı kullanıcıların cihazlara erişmesine izin vermenin bir yolu var mı? Sanırım kullanıcıyı belirli bir gruba eklemek zorundayım. Şu anda sahibi rootve gruptur dialout. Ancak grup hakkında emin değilim ve kullanıcıyı nasıl ekleyeceğimi bilmiyorum.

Teşekkürler!

Yanıtlar:


47

Fark ettiğiniz gibi, /dev/ttyUSB0cihaz grubuna sahiptir dialout. Tek yapmanız gereken ikinci kullanıcıyı dialoutgruba eklemek.

sudo adduser second_user dialout

second_user'ın bunun geçerli olması için oturumu kapatması ve tekrar oturum açması gerekir.


Teşekkürler Jeremy! Bu aynı zamanda ssh erişimi için de işe yarıyor mu? Çünkü PC'ye ssh ile girdiğimde aynı isimde iki kullanıcı görüyorum. Sanırım biri yerel kullanıcı diğeri ssh. Sahipliği ssh kullanıcısına nasıl verebilirim?
Maverik

1
Bu, second_user'ın herhangi bir oturum açma, ssh veya yerelden seri porta erişmesine izin verecektir. Bu kullanıcının belirli bir giriş bilgisine sahiplik atamanız gerekmez.
Jeremy Kerr

2
Evet haklısın. Oturumu kapatıp sonra ssh ile erişebilmek için tekrar giriş yapmam gerekti.
Maverik

Otomatik olarak oturum açan bir kullanıcının oturumları için, yalnızca X Pencere Sistemine yeniden giriş yapmak için bilgisayarı yeniden başlatmanız gerekir. Ubuntu 19.04 ile gözlemlendi.
tanius

12

Kolay yol:

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

Bu metni kaydet:

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

Cihazın fişini çekin ve fişini çekin; kullanıcının herhangi bir kullanıcıdan okuması / yazması gerekir!


TtyACM soketinde ev yapımı cihaz için 14.04'te çalışır. Teşekkürler. +1
Standart DışıModel

Kuralları yeniden yüklemek için fişe basmadan önce bunu yapmana gerek yok mu? sudo udevadm control --reload?
Alexis Paques

/ Etc / udev dosyalarınızı hangi dosya sistemine ve hangi udev sürümünüze bağlı olduğuna bağlı olarak, kesinlikle yeniden yüklemeniz gerekebilir. Ama kullandığım çoğu makinede udev otomatik olarak anlıyor gibi görünüyor (inotify kullanarak).
Orion Lawlor

Gerçekten yapılması gereken bu değil. USB seri aygıtları arama grubuna veya benzeri bir gruba ait olmalı ve kullanıcı buna eklenmelidir. Ne teklif edersiniz diğer USB cihazları için de bir anlam ifade eder
Chris Stratton

7

UDEV kullanabilirsiniz. Bir cihazı her taktığınızda veya çıkarırken tetikleyen bir sistemdir (diğer şeylerin yanı sıra). Bununla beraber, izinleri ayarlama da dahil olmak üzere çeşitli şeyler yazıyorsunuz.

Koş sudoedit /etc/udev/rules.d/50-ttyusb.rulesve şuraya yapıştır:

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

Kaydet, çık ve yeniden fişe tak ve hazır olmalısın. İzni 666 olarak ayarlamak, herkesin cihaza yazmasına izin verir.

Birkaç yıl öncesine dayanan bu sayfadan yola çıkıyorum , ancak eğer Jeremy’nin çözümü işe yaramazsa böyle bir şey işe yaramalı .


1
Bu benim için çalıştı, yani, udev kurallarını kullandım, ancak sözdizimi kendi davamla uyuşacak şekilde değiştirdim. linux.m2osw.com/sane-cannot-find-any-scanners - MODE = "0666" kullanıyorsanız, muhtemelen GROUP 'a ihtiyacınız olmadığını unutmayın. Sadece biri veya diğeri faydalı olacaktır.
Alexis Wilke

5

Fantastik - burada verilen UDEV çözümü benim için biletti.

Icom’un CS-F3020_F5010_F5020 programını Wine aracılığıyla yükledim, Com portu için bağlantıyı şu şekilde oluşturdum:

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

Sonra erişmeme izin vermek için / dev / ttyUSB0 üzerindeki izinleri değiştirmem gerektiğini fark ettim. Bu, USB'yi çıkarmadan / yeniden takana kadar işe yaramaz, daha sonra izinleri yeniden değiştirmeniz gerekir.

Kullanıcımı arama grubuna eklemeye çalıştım, ancak bu bir nedenden dolayı sorunu çözmedi.

UDEV kullanarak bulmacanın son parçasını çözer. Artık Icom radyonumu Linux kullanarak programlayabilir, USB / Seri cihazını daha fazla telaşa gerek kalmadan takıp çıkarabilirim. Woohoo. Teşekkürler.


3

Udev kuralları işe yarıyor ancak yazıldığı gibi tüm ttyUSB*cihazları herkes için erişilebilir kılmanın çok kötü yan etkisi var . Bu iyi değil, çünkü sistemde başka neler olduğuna bağlı olarak bir güvenlik riski olabilir.

Bunun yerine daha seçici bir udev kuralı kullanın. Örneğin, bir anahtar seti çalıştıran bir USB cihazım var. Prize takılıyken dmesg'den üreticinin kimliğini ve ürün kodunu görebiliyorum (artı, bu durumda bile, cihazın seri numarasını). Ekleyebilirim:

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

Yukarıdaki çekirdek satırlarına ve kural yalnızca bu aygıta uygulanır. MODETek başına değişkene atamak yerine daha da iyisi grubu da ayarlayın:

GROUP="whatever", MODE="0660"

o zaman sadece ' whatever' grubundaki kişiler yazma erişimine sahip olacak.

John Bowler

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.