2

vpopmail を使用vadddomainして新しい仮想ドメインを追加しようとしています。apacheユーザーは vpopmail のバイナリにアクセスできないため、exec('../bin/vadddomain...')PHP から直接アクセスすることはできません。

adddomain.sh以下のようにシェルスクリプト ( ) を作成しました。

#!/bin/bash
 cd /home/lxadmin/mail/bin
 ./vadddomain $1 postmaster_password

/etc/sudoersそして、この行をusingに追加しましたvisudo(今のところセキュリティについては忘れてください):

ALL ALL=NOPASSWD: /home/lxadmin/mail/bin/adddomain.sh

私のPHPスクリプトには次のようなものがあります:

exec('sudo /home/lxadmin/mail/bin/adddomain.sh example.com', $output);

しかし、これはまったく機能していませexample.comん (ドメインは vpopmail に追加されません)。しかし、SSH を介して root ユーザーでこのコマンドを実行すると、機能します。

ここで私の問題は何ですか?

4

1 に答える 1

1

webmasterこれは、ファイルに -userを追加することで可能になり、/etc/sudoersそのユーザーが使用したいコマンドを使用することを受け入れるだけです。sudo コマンドを php で直接使用することはお勧めしません。おそらく、このパスワードをどこかに保存する必要があるためです。もちろん、これは望ましくありません。誤ってパスワードをどこかに投稿したり、コードにルート権限を与えたくない別の開発者に投稿したりしたくありません。

root コマンドを単純に使用することのもう 1 つの大きな欠点は、コードにセキュリティ違反がある場合に、フォームなどから sudo コマンドを実行できることです。特権には十分注意してください。

Ps。私は SSH とユーザー権限の設定も初めてなので、間違っている場合は修正してください。しかし、これは私が知っていることです。

于 2012-12-25T11:49:52.500 に答える