代码之家  ›  专栏  ›  技术社区  ›  LEBG

Ubuntu/Python:无法从SubAccess启动Chromium。波本

  •  0
  • LEBG  · 技术社区  · 7 年前

    Basicaly,我插了一个 Arduino serial communication 多亏了一个 Python 剧本

    Chromium 使用 Popen(['chromium-brower'])

    这不会启动。语法是正确的,但终端返回了一个奇怪的错误,我不理解。

    sudo-python-serialtest。py公司 [0825/084720:错误:nss_util.cc(96)]未能创建/home/dlslabo/。pki/nssdb目录。 [0825/084721:FATAL:chrome\u main\u delegate.cc(386)]检查失败:process\u type。空()。无法获取的用户数据目录 过程类型:合子 #2 0x7f1a2f3a11f5 #3 0x7f1a2aa8f224 #6 0x7f1a17a25a40 _ulibc\u start\u main

    这是我的python程序:

    #!/usr/bin/env python
    
    import serial
    from subprocess import Popen
    
    ser = serial.Serial('/dev/ttyACM0', 9600)
    
    while 1 :
       line = ser.readline().strip()
       print line
       if line == "start":
          p = Popen(["chromium-browser"])
    

    Popen(["gedit"]) Popen(["firefox"]) 而且效果很好。 从我在互联网上读到的,这可能是因为我正在以超级用户的身份执行脚本。但我不知道为什么这会引起问题。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Thomas    7 年前

    运行浏览器(或任何其他不用于系统管理的程序)作为 root 用户对安全性来说是个坏主意。

    看起来你在用 /etc/udev/rules.d/99-tty-acm.rules 包括以下内容:

    KERNEL=="ttyACM0", OWNER="mynonrootuser", MODE=0660
    

    如果有更多用户可能需要访问权限,可以为他们创建一个组,比如 ttyacm ,并设置 GROUP="ttyacm" MODE=0660 More about writing udev rules here.