1

いくつかの構成を実行している python スクリプトがありnagiosます。スクリプトは、完全な sudo 権限を持つユーザーとして実行されています (ユーザーは、パスワード プロンプトなしで、sudo を使用して任意のコマンドを実行できます)。構成の最後の手順は次のとおりです。

open(NAGIOS_COMMAND_FILE, 'a').write(cmdline)

NAGIOS_COMMAND_FILEroot のみが書き込み可能であるため、このコマンドは root で実行する必要があります。これを達成する方法は 2 つあります (どちらも不十分です)。

  1. スクリプト全体をルートとして実行します。スクリプトのエラーは完全なルート権限で実行されるため、これを行うのは好きではありません。
  2. open(NAGIOS_COMMAND_FILE, 'a').write(cmdline)コマンドを別のスクリプトに入れ、ライブラリを使用してそのsubprocessスクリプトを sudo で呼び出します。1つのコマンドを実行するためだけに余分なスクリプトを作成するのは好きではありません。

現在のスクリプトで、単一のコマンドだけで実行中のユーザーを変更する方法はないと思いますか、それとも間違っていますか?

4

4 に答える 4

1

NAGIOS_COMMAND_FILEすべての sudo 権限を持つユーザーに書き込み権限を与えてみませんか?

于 2012-08-13T10:30:39.120 に答える
0

root として、または完全な sudo 権限を持つユーザーとして Web サーバーを実行しないでくださいこれはpythonicのことではなく、「サーバーがpwnedされないようにする」ことです。

os.seteuid「最小特権の原則」を見て、man sudoersサーバーを通常の「httpd-server」として実行します。「httpd-server」には、sudoer への書き込み権限がありますNAGIOS_COMMAND_FILE。そして、コマンド ファイルに書き込む内容ができる限りクリーンであることを確認してください。

于 2012-08-13T10:50:58.837 に答える
0

単一のコマンドでユーザーを変更することは実際に可能です。 Fabricは、任意のユーザーとしてサーバーにログインする方法を提供します。それは私が信じているssh接続に依存しています。したがって、Python スクリプトで別のユーザーを使用して localhost に接続し、目的のコマンドを実行できます。

http://docs.fabfile.org/en/1.4.3/api/core/decorators.html

とにかく、他の人がすでに正確に述べているように、スクリプトを実行しているユーザーにこの 1 つのコマンドを実行する権限を許可し、root に依存して実行するのを避けるのが最善です。

于 2012-08-13T11:03:32.043 に答える
0

上記の投稿に同意します。ユーザーに NAGIOS_COMMAND_FILE への書き込み権限を付与するか、nagcmd などの権限を持つグループにその使用を追加します。

于 2012-08-17T14:41:34.683 に答える