0

通常のユーザーに特権をドロップする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に等しいため、プロセスを実行しません。どう思いますか?

4

1 に答える 1

1

これはあなたの環境かもしれません。アクセス許可を変更しても、$ HOMEなどの環境変数はrootユーザーのディレクトリを指し、アクセスできなくなります。os.environブラウザを起動する前に変更して、これらの変数を変更してみる価値があるかもしれません。チェックする価値のある他の変数もあるかもしれません。

于 2009-07-16T20:47:04.450 に答える