2009-05-25 13 views
3

chmodを使用して私のサーバ上のファイルアクセス権を変更するPHPスクリプトがあります。私は、ブラウザ(誰もしない)とcronジョブ(ユーザー名として)の両方でスクリプトを実行できるようにしたいと思います。php - ファイルアクセス権の変更

ファイルの所有者だけがアクセス権を変更できることは間違いありませんか?私。私がcronジョブを介してファイルを作成してアクセス権を設定した場合、ブラウザからスクリプトを実行するときにこれらのアクセス権を変更することはできません。

これはどのような方法ですか?スクリプトを実行しているユーザーとしてファイルを削除(リンク解除)して再作成しますか?または誰もがcronジョブを介してPHPスクリプトを実行する方法はありますか? /ユーザー名としてブラウザー経由で?

ファイルのアクセス許可を変更することで、画像を一般に閲覧可能にすることができます。

答えて

2

解決策1:ユーザーとcronユーザーの両方にグループを作成し、各ユーザーを新しいグループに追加し、両方のユーザーにファイルへの読み取りと書き込みを許可します(chmod g + rw filename)。 (より安全な次のソリューション)。

解決策2:これを行う最も簡単な方法は、すべての人がファイルを読み書きできるようにすることです(chmod a + rw filename)。

私はこれをプロダクション用にはお勧めしません。

-2

通常のみ所有者またはスーパーユーザ(または同等の)

-1

だけがファイルの所有者は、これを行うことができ、私の代わりに「誰」とcronジョブを実行することをお勧めします。

1

これは、スクリプトにユーザー名またはパスワードを入れずに行うことができます。

あなたのcrontabには、あなたのWebサーバーが実行されるユーザーとしてスクリプトを実行するsudoがあります。あなたの例に従って、私はnobodyユーザーを使用します。

0 12 * * *(sudoの-u誰もPHPの./yourscript.php)

注 "誰" ユーザー(同様に "アパッチ" のようなユーザ)は、通常のログイン権限を持っていないこと。これにより、sudoがttyなしでスクリプトを実行できるようにする必要があるかもしれません。 "sudo:申し訳ありませんが、sudoを実行するにはttyが必要です"

これを可能にするには、visudoコマンドを使用して "defaults requiretty"行をコメントアウトします。 sudoを変更した場合と同様に、この変更に伴う副作用を検索することができます。

0

はい、ファイルの所有者だけがこれを行うことができます。あなたのオプションは、あなたがサーバー上でどのようなコントロールを持っているかによって異なります。

サーバーを十分に管理できる場合は、Apacheのmod_phpの代わりにSuPHPを使用できます。こうすることで、PHPスクリプトはスクリプトを所有するユーザーとして実行され、PHPスクリプトによって作成されたファイルはすべて同じユーザーが所有します。

コントロールがあまりない場合(一般的な共有Webホスティングなど)、JoomlaのFTPアプローチのようなものを使用できます。 FTPサポートがJoomlaでオンになっていると、FTPを使用したすべてのファイル操作が行われます。これにより、FTPユーザーと同じ権限でファイルを作成または操作できます。

このような何か(エラーハンドリング省略さ):

$ftp = ftp_connect('localhost'); 
ftp_login($ftp, 'username', 'password'); 
ftp_chdir($ftp, '/root/to/website'); 
ftp_chmod($ftp, 0644, 'filename.ext'); 
ftp_close($ftp); 
関連する問題