通常のユーザーに特権をドロップするsudoedpythonスクリプトからfirefoxを実行できません。私が書いたら
$ sudo python >>>OSのインポート >>> import 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) >>>#コマンドを実行しません >>>-Hオプションなしでsudoを介してIceweaselを実際に実行するべきではありません。 -Hオプションを使用したかのように続行します。 プロトコルが指定されていません エラー:ディスプレイを開くことができません:0
これはPythonの問題ではなく、firefox / iceweasel/debianの設定の問題だと思います。たぶん、FirefoxはEUIDではなくUIDのみを読み取り、UIDが0に等しいため、プロセスを実行しません。どう思いますか?