it-swarm-ja.com

「Sudo」なしでコマンドを実行するにはどうすればよいですか?

サーバー上のNagiosが正しく機能していません。 「Sudo」がないとコマンドlftpを実行できません。 「Sudo」を使用せずにnagiosがコマンドを実行できるようにする方法はありますか?

私の/etc/groupnagios:x:107:www-data,nagios

Lftpを使用したスクリプト:-rwxr-xr-x 1 root nagios 3667 říj 20 12:20 check_ftp_fully

/usr/bin/lftp-rwxr-xr-x 1 root root 924936 srp 7 2013 lftp

ところで私は試しました この答え 成功しませんでした。それでも動作しません。

[〜#〜] edit [〜#〜]:スクリプトはNagiosによって$USER5$/check_ftp_fully.sh <username> <password> <port>として呼び出されます。チェックスクリプトは ここ です。ディレクトリの一覧表示に失敗します(FTP check failed when trying to list the contents of a directory.

EDIT2:Nagiosの問題は、IFの知識ほど重要ではなく、「Sudo」なしでコマンドを実行するにはどうすればよいですか。例えば。 mkdir in /etc

1
Jakub Turcovsky

スクリプトはNagiosによって./check_ftp_fully.shとして呼び出されます

ここでの先頭の./は、スクリプトが存在するディレクトリからスクリプトを実行していることを示しています。私はあなたがこのディレクトリへの書き込みアクセス権を持っていないことを推測しています(実際にそうすべきではありません)。代わりに/tmpスクリプトへのフルパスを使用して、呼び出し元のスクリプトをホームディレクトリ(または、たとえばcheck_ftp_fully.sh)で実行するように変更します。さらに良いことに、またはさらに、一時ディレクトリを作成するようにテストスクリプトを変更し、完了時に削除します(たとえば、構文エラーの場合でも、trapを参照)。

2
tripleee

いくつかの解決策があるかもしれません

  1. sudoersファイルのnagiosがパスワードの確認なしでSudoを実行できるようにするか、check_ftp_fullyから「Sudolftp」を実行します。

  2. lftpのsetuid

どちらもセキュリティ違反になる可能性があります。これは、どのドアを開きたいかはあなた次第です:)

1
Ovidiu Andoniu