0

A.py新しいプロセス () を動的に生成するスクリプト ( )B.pyがありますが、これらのスクリプトは として作成する必要がありますroot。私が走れば

$ python A.py

通常のユーザーとして、実行すると

>>> subprocess.Popen('sudo nohup python B.py &') 

root開始するにはパスワードを入力する必要があります。私は本当にそれをしたくありません。


最初のスクリプトを次のように実行するとroot

$ sudo python A.py

その後、私は実行できるようになります

>>> subprocess.Popen('nohup python B.py &')

通常のように。私が懸念しているのは、sudoのタイムアウト期間であり、通常の権限に落ちA.py、プロセスを生成/強制終了したいときにパスワードを要求し、意図したとおりに動作しなくなります。

  1. 実行すると、スクリプトの存続期間中ルート権限が保持されますか、それとも通常の端末のように (デフォルトは 15 分だと思います)sudo python A.py失われますか?sudo timeout
  2. これを行うより良い方法はありますか?
4

2 に答える 2

4

sudo python A.py を実行すると、スクリプトの存続期間中ルート権限が保持されますか、sudo timeoutそれとも通常の端末のように (デフォルトは 15 分だと思います) 失われますか?

スクリプトの存続期間中、ルート権限が保持されます。

コマンドを実行しても、ルート権限は取り消されません。それはタイムアウトが行うことではありません。タイムアウトは、ユーザーがsudoコマンドを実行するときにパスワードを入力しなければならない頻度を制御するだけです。root 権限が付与されたスクリプトは、sudo タイムアウトではnohup python B.pyなく、単純に直接実行されるため、機能しません。sudo nohup python B.py

于 2013-02-12T17:53:43.737 に答える
0

実行する追加のスクリプトを作成できますpython B.py。このスクリプトは root が所有し、setuidフラグが設定されています。(または、B.py適切なシバンを指定して、直接実行可能にします。)その後、いつでも実行すると、ルートとして実行されます。(当然のことながら、適切にのみ実行され、任意のコードを実行できないように保護されていることを確認して、権限昇格を提供する必要があります。)

于 2013-02-12T17:55:34.580 に答える