gpt4 book ai didi

python - Web 环境中的文件访问权限提升

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:32:26 26 4
gpt4 key购买 nike

我有一种情况,我想提升我在网络环境中的权限,以便我可以访问串行设备。

具体情况是我有一个用于配置 /dev/ttyUSB[0-9] 上出现的调制解调器的 Web 界面。

最终用户将插入零个或多个调制解调器。我正在编写一些软件,能够通过读取 /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 或软件。

最佳答案

在这种情况下,我会编写一个由系统用户运行的守护程序,它接受套接字连接并将它们中继到适当的设备,然后使用 Web 应用程序中的套接字与守护程序对话。这也有助于防止 Web 应用程序在打开尚未准备好与用户打交道的设备时发生阻塞,比使用 CGI 等更理智地解决锁问题。

但是,如果您希望应用程序能够直接与设备对话,请为它们提供与 null 相同的权限。

关于python - Web 环境中的文件访问权限提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/628956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com