シリアル デバイスにアクセスできるように、Web 環境で持っている権限を昇格させたい状況があります。
特定のケースは、 で起動するモデムを構成するための Web インターフェイスがある場合です/dev/ttyUSB[0-9]
。
エンド ユーザーによって 0 個以上のモデムが接続されます。/sys/devices
ATコマンドを使用してモデムを読み取って通信することにより、USBワイヤレスモデムを識別できるソフトウェアを作成しています。
デバイスを開いて、次のようなことができるようにしたいと思います。
ser = serial.Serial(tty, baudrate=115200, timeout=10)
ser.write('AT+CGSN\r\n')
imei = ser.readline()
問題は、それpyserial
がこれを行うことです: self.fd = os.open(self.portstr, os.O_RDWR|os.O_NOCTTY|os.O_NONBLOCK)
portstr が であるシリアルポートを開きますが、権限のないユーザー/dev/ttyUSB0
としてそれを行います。nobody
このシステムのシリアル ポートは root:uucp が所有しており、0660 (つまりrw-rw----
) として設定されています。
nobody
開発者でファイルを開くための権限をできるだけ少なくする必要があるユーザーにとって、最善の方法は何ですか?
私が検討するアイデア:
- を使用してサブプロセスで物事を行う
sudo
。 - 内のファイルのパーミッションを変更します
/dev/
(udev を使用してこれを適切に行う方法についての説明を歓迎します!) - 考慮していない別の API またはソフトウェアの使用。