シナリオは次のとおりです。
特定のディレクトリにPDFファイルを書き込むWebアプリケーション(php、mysql)があります:/ var/www/myapp/tmp。次に、Gearman (端末から実行されるワーカー php スクリプト) を使用して、これらの pdf ファイルからプレビュー画像を生成します。ワーカー スクリプトは、/var/www/myapp/tmp ディレクトリにシンボリック リンクされている (ワーカー スクリプトが myapp と同じサーバーで実行されている場合) か、NFS を使用してそこにマウントされている /etc/mount/tmp の tmp ディレクトリにアクセスできます (ワーカー スクリプトが別のサーバーで実行されている場合)。
アプリは chmod 0777 で tmp にサブフォルダーを作成します。これらのサブフォルダーに pdf ファイルが配置されます。ワーカーは共有 tmp ディレクトリからファイルを取得し (問題ありません)、プレビュー イメージを生成し、共有 tmp ディレクトリにプレビュー イメージを書き込む必要があります。
問題
すべてをローカル(クライアント、ジョブサーバー、ワーカー)で実行すると、この問題が発生するため、シンボリックリンクされた tmp フォルダーを使用すると、次のようになります。
サブディレクトリは書き込み可能ではないため、結果を書き込むことができず、ワーカーは失敗します。
これで、pdf ファイルは Web アプリ/gearman クライアントによって書き込まれ、ユーザー _www によって所有されます。ワーカースクリプトはApacheを介して実行されず、別の所有者(端末にログインしている私)の下で実行されるため、これらの権限の問題が発生すると思います。
0777 のアクセス許可を使用してフォルダーを作成したため、フォルダーが書き込み可能ではない理由がよくわかりません。シンボリックリンクはこれと関係がありますか?
いずれにせよ、この問題を適切に修正する方法がわからないため、クライアントとワーカーの両方が同じフォルダー内でアクセス許可の問題なしに作業できます。誰でも助けることができますか?
アップデート
最初の問題は umask のようで、それを 0 に設定するとフォルダーは書き込み可能になりますが、それでもパーミッションを 0777 に設定する必要があります。どうすればより安全にアプローチできますか?