web-dev-qa-db-ja.com

デフォルト以外のユーザーがシリアルデバイスttyUSB0を使用できるようにするにはどうすればよいですか?

2人のユーザーがいるUbuntu 11.10システムがあります。

  • 最初はインストール中に作成されました
  • 代わりに、2番目が作成されました。 sudoersグループに属します。

問題は、2番目がデバイスttyUSB0を使用しようとすると、次のエラーが返されることです。

"Could not open serial port /dev/ttyUSB0"

私はそれを使用して修正することができました:

Sudo chown :second_user /dev/ttyUSB0

ただし、デバイスを切断して再接続すると、問題が再発します。

さまざまなユーザーがデバイスにアクセスできるようにする方法はありますか?特定のグループにユーザーを追加する必要があると思います。現在、所有者はrootであり、グループはdialoutです。ただし、グループについてはわかりませんし、ユーザーを追加する方法もわかりません。

ありがとう!

34
Maverik

お気づきのとおり、/dev/ttyUSB0デバイスにはdialoutのグループがあります。必要なことは、2番目のユーザーをdialoutグループに追加することだけです。

Sudo adduser second_user dialout

これを有効にするには、second_userをログアウトして再度ログインする必要があります。

47
Jeremy Kerr

簡単な方法:

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

このテキストを保存します。

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

デバイスを取り外して再接続すると、すべてのユーザーから読み取り/書き込みが可能になります!

12
Orion Lawlor

UDEVを使用できます。これは、デバイスを(他のものと一緒に)プラグインまたはアンプラグするたびにトリガーするシステムです。これを使用して、許可の設定など、さまざまなスクリプトを作成します。

sudoedit /etc/udev/rules.d/50-ttyusb.rulesを実行して、そこに貼り付けます:

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

保存して終了し、再接続すると、稼働状態になります。許可を666に設定すると、誰でもデバイスに書き込むことができます。

私はこれに基づいています このページ これは数年前のものですが、ジェレミーの solution が機能しない場合はこのようなものが機能するはずです。

7
Oli

素晴らしい-ここで与えられたUDEVソリューションは私にとって切符でした。

Wine経由でIcomのCS-F3020_F5010_F5020プログラムをインストールし、Comポートのリンクを次のように作成しました。

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

それから、/ dev/ttyUSB0のアクセス権を変更してアクセスできるようにする必要があることに気付きました。これは、USBのプラグを抜き差しするまでうまく機能します。その後、アクセス許可を変更する必要があります。

ユーザーをダイヤルアウトグループに追加しようとしましたが、これは何らかの理由で問題を解決しませんでした。

UDEVを使用すると、パズルの最後のピースが解決されます。これで、Linuxを使用してIcomラジオをプログラムし、USB /シリアルデバイスを抜き差しすることができます。うわーありがとう。

5
Tom

Udevルールは機能しますが、書かれているとおり、すべてのttyUSB*デバイスをすべてのユーザーがアクセスできるようにするという非常に厄介な副作用があります。これは、システム上の他の要素によってはセキュリティリスクになる可能性があるため、良くありません。

代わりに、より選択的なudevルールを使用してください。たとえば、一連のスイッチを操作するUSB​​デバイスがあります。プラグインされたdmesgから、製造元のIDと製品コード(さらに、この場合はデバイスのシリアル番号)を確認できます。追加できます:

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

上記のカーネル行に追加すると、ルールはそのデバイスにのみ適用されます。 MODE変数に単独で割り当てるよりも、グループも設定する方が良いでしょう:

GROUP="whatever", MODE="0660"

グループ 'whatever'のユーザーのみが書き込みアクセス権を取得します。

ジョン・ボウラー

3
John Bowler