これは重複しているに違いありませんが、答えが見つかりません...
私はphp Webインストールスクリプトを書いています。後で書き込み不可になるファイルをphpに書き込んでもらいたいです。fopen を sudo する方法はありませんか?
明らかに、_www 資格情報は、ディレクトリへの書き込みアクセスで始まりません。また、それで終わりません。書き込みアクセス権を持つインストールユーザーが、残りを処理するスクリプトに資格情報を渡すと考えています。
これは重複しているに違いありませんが、答えが見つかりません...
私はphp Webインストールスクリプトを書いています。後で書き込み不可になるファイルをphpに書き込んでもらいたいです。fopen を sudo する方法はありませんか?
明らかに、_www 資格情報は、ディレクトリへの書き込みアクセスで始まりません。また、それで終わりません。書き込みアクセス権を持つインストールユーザーが、残りを処理するスクリプトに資格情報を渡すと考えています。
PHP 内から sudo を実行することはできません。何かを root として実行したい場合は、Apache ユーザーwww
を sudoers ファイルに追加する必要がありますが、これはおそらく良い考えではありません。また、他のユーザーが実行するインストール スクリプトを作成している場合、それはオプションではありません。
そのため、最初はアクセス権のないディレクトリにファイルを作成することはできませんが、chmod()
書き終わった後にファイルを読み取り専用にするために使用することはできます。これは、Apache によって実行される別のスクリプトが後で同じ関数を使用して書き込み属性を再追加できないという意味ではありません。
最善の策は、書き込みが必要なファイルの空のバージョンを作成することです。最初にスクリプトで書き込みアクセスをチェックし、存在しない場合は、書き込みアクセスを許可するために何をする必要があるかをユーザーに伝えます。それが完了すると、先に進むことができます。スクリプトはファイルを書き込み、書き込みアクセスを削除するために何をする必要があるかをユーザーに伝えます。スクリプトはそれが発生したことを確認し、ユーザーが書き込みアクセスを正常に削除するまで次のステップに進むことを許可しません。
ほとんどの場合、空のファイルを提供し、インストーラーに書き込み用にそれらを chmod させます。
これにより、ユーザーは最初にファイルを提供したユーザーを維持できます。
おまけに、アプリケーションでサーバーを作成できるようにする代わりに、より安全なアプリケーションを作成できる可能性があります。