Firefox 因 root 执行脚本且权限被删除而执行失败

Firefox 因 root 执行脚本且权限被删除而执行失败

我无法通过 sudo python 脚本运行 Firefox,因为该脚本会将权限降低到普通用户。如果我写

# sudo python
>>> 导入操作系统
>>> 导入 pwd,grp
>>> uid = pwd.getpwnam('norby')[2]
>>> gid = grp.getgrnam('norby')[2]
>>> os.setegid(gid)
>>> os.seteuid(uid)
>>> 导入网页浏览器
>>> webbrowser.get('firefox').open('www.google.it')
真的
>>> # 它返回 true 但不起作用
>>> 从子进程导入 Popen,PIPE
>>> p = Popen('firefox www.google.it', shell=True,stdout=PIPE,stderr=PIPE)
>>> # 不执行命令

我认为这不是 python 的问题,而是 firefox/iceweasel/debian 配置问题。也许 firefox 只读取 UID 而不读取 EUID,并且由于 UID 等于 0 而无法执行进程。你怎么看?

答案1

您必须导出名为 DISPLAY 且值为 ':0.0' 的环境变量。这样可能会让它起作用。如果您不知道如何使用 python 导出环境变量,请在 stackoverflow 上提问。

答案2

问题是它无法访问 X 服务器上的显示,它正在运行吗?我不建议以 root 权限运行 Firefox,这就像在 Windows 机器上运行 IE 一样。

您在评论中说您是在较低的运行级别启动它。错误是因为您在 X 出现活动显示之前在较低级别启动 Firefox。延迟它的运行,直到 X 启动。

答案3

你真的不应该这么做。比如,真的

你为什么要这么做?

答案4

我用的是 sux。

  1. apt-get 安装 sux
  2. 火狐

描述:su 的包装器,它将传输您的 X 凭证。Sux 是标准 su 命令的包装器,它将传输您的 X 凭证给目标用户。

相关内容