我有一种情况,我想提升我在 Web 环境中的权限,以便我可以访问串行设备。
具体情况是我有一个用于配置调制解调器的 Web 界面/dev/ttyUSB[0-9]
。
最终用户将插入零个或多个调制解调器。我正在编写一些软件,该软件能够通过/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
应该拥有尽可能少的权限)在 dev 中打开文件的用户来说,最好的方法是什么?
我会考虑的想法:
- 使用
sudo
. - 更改文件的权限
/dev/
(感谢有关如何使用 udev 正确执行此操作的说明!) - 使用我没有考虑过的其他 API 或软件。