ルートなしのシリアルポートへの読み取り/書き込み?
On 2月 12, 2021 by admin私はFedora14のシリアルポートとの間で読み取り/書き込みを行うアプリケーションを作成しています。rootとして実行するとうまく機能します。通常のユーザーとして実行していますが、デバイス(/ dev / ttySx)にアクセスするために必要な権限を取得できません。 Eclipseを使用して実際にデバッグすることができないため、これは一種のくだらないことです。
Eclipseをsudoで実行しようとしましたが、ワークスペースが破損し、プロジェクトを開くことさえできません。したがって、/ dev / ttySxに書き込むためのアクセス要件を下げて、通常のユーザーがアクセスできるようにすることが可能かどうかを知りたいと思います。これは可能ですか?
回答
シリアルポートにアクセスする権利は、デバイスファイルのアクセス許可によって決まります(例:/dev/ttyS0
)。したがって、あなたがする必要があるのは、デバイスをあなたが所有するように手配するか、(より良い)デバイスを所有するグループに自分自身を入れるか、(Fedoraがそれをサポートしている場合は)デバイスを手配することですコンソールにログインしているユーザーに属します。
たとえば、私のシステム(Fedoraではない)では、/dev/ttyS0
はユーザー
とグループdialout
なので、シリアルデバイスにアクセスできるようにするには、dialout
グループ:
usermod -a -G dialout MY_USER_NAME
コメント
回答
多くのディストリビューションは、グループメンバーシップを使用してシリアルポートへのアクセスを有効にします。でも、Fedoraの詳細はわかりません。
回答
sudoersファイルに自分を追加できると思います。パスワードなしで実行できるコマンドエイリアスとして一連のコマンドを指定できます。sudoersファイルに関する優れたチュートリアルは、 Ubuntu docs にあります。
その後、eclipseを通常どおり実行すると、root権限なしで特定のコマンドを実行できるようになります。
回答
これは古い質問ですが、問題を解決するための追加の手順があったので、貢献できると思います。 Debian10を使用してポート/ dev / ttyACM0のmicro:bitに接続しようとしたときに、この質問に行き着きました。
ls -al /dev/ttyACM0
表示:
crw-rw-rw- 1 root dialout 166, 0 Jan 5 16:13 /dev/ttyACM0
これは、sudoを使用してポートにアクセスできる理由を示しています。ポートはrootが所有しています。また、root以外のユーザーをダイヤルアウトグループに追加すると、rootでなくてもアクセスできる理由も示されています。次のコマンドを使用して、/ etc / groupのダイヤルアウトグループにユーザーアカウントを追加しました。
sudo usermod -a -G dialout <user>
それでもmicrobitに接続できませんでしたルートにならずにシリアルポートモニターを使用します。
micro:bitは/ mediaの下にマウントされます:
ls -al /media/<user> drwxr-x---+ 2 root root 4096 Jan 5 12:44 <user>
これは、ディレクトリがmicro:bitがマウントされているのはrootが所有しています。このディレクトリの所有者とグループを次のように変更する必要がありました:
“” “sudo chowner / media / sudo chgrp / media /” “”
これで、microに接続できます:bitsudoを使用せずにシリアルポートモニターを使用します。
回答
この問題は、 dialout グループにユーザーを追加するには、そのユーザーに/ devへのアクセス許可を与える必要もあります。単に su ->ルートパスワードを入力-> chmod -R 777 / dev -Rは再帰モードを意味し、そのフォルダ内のすべてが同じ権限を持ちます
問題はこれです、再起動するたびにそれを行う必要がありますコンピューターまたはデバイスのプラグインとプラグアウトハァッ!!!
コメント
-
chmod -R 777 /dev
は非常に悪い考えです。 - そうです、これについて他に提案があれば、それは素晴らしいことです
- のように、ログアウトしてから再度ログインする必要があるのではないかと思います。受け入れられた回答についてコメントしますか?これはしばしば人々をつまずかせます。
- / dev /内のすべてにすべてのユーザーに無料アクセスを与えることは非常に危険です。 'これを行わないでください。
sudo usermod -a -G dialout $USER
🙂