2011-06-27 41 views
0

が内容を持っているスクリプトtest.php考える:PHPはSUIDでもファイルのパーミッションを変更できませんか?

#!/usr/bin/php 
<?php 
echo exec('whoami'); 
chmod('test.txt', 0755); 

と自身と同じディレクトリにあるテキストファイルtest.txtをそれらのファイルを作成し、ユーザがスクリプトを実行した場合、それが正常に動作します。しかし、私はの線に沿って何かをする場合:

test.phpをに「アパッチ」ユーザ、それを実行しているに関係なくとして実行することができます
chown apache:apache test.php test.txt 
chmod 4775 test.php 

。しかし、私はそのコンテキストでそれを実行すると、私は "警告:chmod():操作が許可されていません"エラーが表示されます。また、 "whoami"コマンドによってエコーされるユーザーは、一般的なユーザーであり、 'apache'ユーザーではありません。

したがって、ユーザーにsudoアクセス権を付与してスクリプトを 'apache'として実行する以外に、PHPスクリプトを特定のユーザーとして実行する方法はありますか?

+1

suidビットは、スクリプトを実行しているPHPインタプリタがそれを認識した場合にのみ機能します。インタプリタバイナリ自体をsuidする必要があります。これはおそらく悪い考えです。 –

答えて

0

したがって、ユーザーにsudoアクセス権を付与して「apache」としてスクリプトを実行することを許可する以外に、PHPスクリプトを特定のユーザーとして実行する方法はありますか?

何か不足している必要があります。あなたが別のユーザー(sudo/suexec)の下でファイルを実行するかどうかをApacheが許可するかどうか。しかし、これは単なる構成です。ですから、まず何を達成したいのかを決定し、必要に応じてサーバーを構成する必要があります。

特定のユーザーの下でPHPスクリプトを実行する場合は、sudo機能を使用してユーザーを指定することでこれを行います。 Apacheはその設定されたユーザーの下でスクリプトを実行します。

sudoを使いたくない場合は、他にもapacheを実行するユーザーの下でスクリプトを実行するオプションはありません。また、apacheはスクリプトの呼び出しに使用するように構成されています。

あなたが達成したいことを決定してください。しかし、あなたがユーザーを変更したい場合は、私が知っている唯一の方法(おそらく他にも何かがありますが、それは疑いがあります)は、Apacheのsudo機能を利用しています。

関連する問題