0

私のphpスクリプトの権限がルートに設定されている場合、スクリプトはルートユーザーとしてコマンドを実行できると想定しました。しかし、どうやらそうではないようです。www 以外には何も書き込めないことに気付きました。テキスト ファイルを /test.txt に書き込もうとすると、非ルート ユーザーはアクセスのみできるが、作成や作成はできないという / のアクセス許可のために、ファイルが作成されません。削除しますが、スクリプト自体にはルート権限があります。/ で権限を変更すると、正常に動作します。ルート権限を持つように設定されたphpスクリプトが/ディレクトリに書き込めないのはなぜですか?

また、php スクリプトをスーパーユーザーとして実行できるようにするにはどうすればよいですか?

exec() を使用したいのですが、うまく動作しないようです。crontab を作成できるようにしたいのですが、うまくいきません。次のようなコードを書きました。

   exec("crontab -l > test.txt; echo '* * * * * echo hi! > /root/Desktop/hi.txt'>> test.txt; crontab test.txt");

しかし、それはうまくいきません。文字列を端末にコピーすると、期待どおりに機能します。

4

2 に答える 2

2

スクリプト ファイル自体にアクセス許可を設定しても、スクリプトを実行するユーザーには影響しません。誰がスクリプトにアクセスできるかに影響します。

スクリプトをルートとして実行するには、コンテキストによって異なります。Web サーバーで実行していますか、それとも CLI スクリプトですか? 後者の場合は、root ユーザーとしてログインするか、sudo コマンドを使用して実行する必要があります。Apache として Web サーバーにある場合は、ルートとして実行するように Apache を構成する必要がありますが、多くのセキュリティ リスクが発生するため、これはお勧めできません。

于 2012-10-24T16:08:14.017 に答える
0

スクリプトのアクセス許可/所有権は、スクリプトがどのユーザーとして実行されるかには関係ありません。ユーザーが実行する権限を持っていると仮定すると、実行するユーザーとして実行されます。setuid の「sticky bit」パーミッションを使用してこのようなことを行うことができる場合もありますが、ほとんどのシステムでは許可されておらず、許可することを説明するために私が考えることができる最も攻撃的でない用語は「お勧めできません」です。

www以外は書けないことに気づいた

Apacheが適切に構成されているためです。理想的には、root 以外のユーザー [通常は www] として実行し、スクリプトもそのユーザーとして実行します。Apache の安全性を低く設定する方法を説明する代わりに、アクセス/変更したいファイル/ディレクトリへのアクセスを Apache ユーザーに許可しないのはなぜですか?

于 2012-10-24T16:26:26.570 に答える