2011-09-13 23 views
0

私はPHPから "sudo"コマンドを実行したいと思いますし、Web上のすべてのチュートリアルを読みましたが、解決策はありません。少なくとも私はLAMPのデフォルトの "誰も"のユーザーをルートグループに追加しましたが、効果はありません。PHPスクリプトから "sudo"コマンドを実行していますか?

echo exec("sudo echo hi"); 

セキュリティ上の注意:

一部の人々はここに起因する、これはインターネット全体を破壊する大きなセキュリティホールを作成することを彼らの強い信念にこれをdownvotingている間、いくつかの有効な場合がありますこれは、例えば、テストのために。 PHPUnit/Behatスイートから設定スクリプトを実行して環境を設定するには、sudoの許可が必要な場合があります。これらのスクリプトはアプリケーションからアクセスできず、セキュリティホールを作成しません。そのようなホールが存在しないことを保証するのに役立ちます。

+6

はそれをしません。それは巨大なセキュリティホールです。 – thwd

+1

は、大きなセキュリティ上の問題を引き起こすため、このタイプの質問によって他の人を励ますべきではありません。 – Musa

答えて

9

ユーザーをルートグループに追加しても、sudo権限が付与されません。つまり、/ etc/sudoersが対象となります。

正直に言うと、あなたが巨大なセキュリティホール

EDITような音何をしようとして:コメントからコピーを...

私の提案は、下のcronを設定する、ようなものになるだろうあなたのPHPが書き込むことができるファイルまたはdbをチェックし、解析し、指定したユーザを削除します。

+0

まあ、私はbiiig、大きなセキュリティホールを作成すると思って、私は確かにこれを避けたい!だからあなたは私がどんなに絶望的であるかを見ています:-D 私に**良い**安全な解決策を教えてください。 (ちょうど情報の理由から:私は追加して、FTPユーザーを削除しようとしています..) –

+0

あなたが言ったことは、コマンドを実行することです。あなたが達成しようとしていることを知らなければ、私たちはあなたにどのようにしてより良い解決策を教えてくれるでしょうか? –

+0

私の質問は、私はsudoのcmdをどのように走らせることができるのですか?それは本当です。私がそれを知りたかった理由は、ftpのユーザーのものでした。あなたが私にセキュリティホールについて教えてくれたので**私の計画は何ですか?あなたが正しいです!そして、おそらくあなたは私の問題を解決するためのヒントを私に与えることができます.. –

0

あなたは私はあなたがあなたのスクリプトにはchmod uの+ Sを実行すべきだと思う/etc/sudoersファイル

1

にあなたのウェブサーバーユーザーを追加する必要があります。またはug + s(必要に応じて)。この方法であなたはsuアクセス権を持っています。

0
<?php 

phpinfo(); 

?> 

あなたはまず、上記のコードはあなたにこのことを教えてくれる、あなたのウェブサーバのユーザーを検索し、それらをルートprivialgesを与える必要がありますが、他の人が、これはMASSIVEセキュリティホールと私は強くお勧めしません言うように。

0

すべてのセキュリティ対策はさておき、これも可能です。 Jon Stirlingが述べたように、ユーザーを特定のグループに追加することはあなたを助けることにはなりません。あなたは、ルートとして例えば「visudoを」との正しいsudoのラインを指定する必要があります。

nobody ALL=(root) NOPASSWD:/usr/bin/echo hi 

これは、rootユーザーとしてコマンド「は/ usr/binに/エコーHI」を実行し、rootユーザーをさせます。 PHPを経由して、それを実行するための今

echo exec("/usr/bin/sudo -u root /usr/bin/echo hi");