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

python无法从根执行脚本中执行firefox webbrowser,删除权限

  •  0
  • Emilio  · 技术社区  · 16 年前

    我不能从一个将特权留给普通用户的sudoed python脚本运行firefox。如果我写

    $ sudo python
    >>> import os
    >>> import pwd, grp
    >>> uid = pwd.getpwnam('norby')[2]
    >>> gid = grp.getgrnam('norby')[2]
    >>> os.setegid(gid)
    >>> os.seteuid(uid)
    >>> import webbrowser
    >>> webbrowser.get('firefox').open('www.google.it')
    True
    >>> # It returns true but doesn't work
    >>> from subprocess import Popen,PIPE
    >>> p = Popen('firefox www.google.it', shell=True,stdout=PIPE,stderr=PIPE)
    >>> # Doesn't execute the command
    >>> You shouldn't really run Iceweasel through sudo WITHOUT the -H option.
    Continuing as if you used the -H option.
    No protocol specified
    Error: cannot open display: :0
    
    

    我认为这不是Python问题,而是firefox/iceweasel/debian配置问题。可能是firefox只读的uid而不是euid,并且不执行进程,因为uid等于0。你觉得怎么样?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Brian    16 年前

    这可能是你的环境。更改权限仍然会使$home等环境变量指向根用户的目录,这是不可访问的。尝试通过改变这些变量可能是值得的 os.environ 启动浏览器之前。可能还有其他值得检查的变量。