する質問をすることでしか得られない、回答やアドバイスがある。37PHPプログラムから、テキストや画像ファイルを出力するような仕組みをもったWebアプリケーションを作っています。この時出力されるファイルの所有者について、ご質問させていただきたく思います。※SELinuxはオフにしています。【やりたいこと】Webアクセス時のドキュメントルート以下にあるファイルは、全てhogeユーザーが所有者ということにしたい。hogeユーザーは、FTPでドキュメントルート以下にアクセスし、ファイル書き込み操作を行うことがあるため、所有者がすべてhogeの方が都合が良い。PHPで出力されるファイル。groups=48(apache),1000(hoge)上記のようにapacheにはhogeのグループを追加しています。これで、hogeユーザーがFTPアップロードしたファイルを、PHP(apache実行ユーザー)が書き込み操作出来るというところまでは出来ました。問題点この状態ですと、PHPが新規のファイルやディレクトリを生成したときの所有者はapacheになります。PHPがmkdirしたディレクトリ。ownerはapache。ownerはapache。パーミッション644で書き込み不可!この時のgenerated.txtをhogeが消したりすることもあるため、書き込み権限が無いファイルが出来てしまうので困ります。できれば、PHPが生成するファイルの所有者は、PHPスクリプトと同じに揃えたいと思います。解決策の方向性についてお作法を含め、こういった時はどうするのが良いのか、アドバイスをいただけると幸いです。1Apacheの実行ユーザーを変えるApacheのUserをhogeにしてしまうというやり方ですが、調べてみるとあまりいい方法ではないような記事が多いです。実際のところどうなのでしょうか。2PHPスクリプトもすべて所有者をapacheにしてしまうhogeユーザーによるファイル編集は諦め、逆にapacheユーザーで揃えてしまうようにする。それはそれでキレイなのかもしれませんが、ちょっと運用上面倒そうです。3PHPがファイル生成時に所有者を書き換える環境はこのまま、スクリプトの方で、ディレクトリ作成やファイル書き込みをした直後にsystem関数とsudoコマンドで所有者を無理やり書き換えていく方法です。出来なくはなさそうですがとても面倒くさそうですし、お作法としてどうなのか気になります。■その他suEXECという方法があるようですが、ちょっと難易度が高そう・制約がありそうだったので、まずはそれ以外で実現出来ないかを検討したく、ご質問させていただきました。そもそも一般的には、apacheユーザーとドキュメントルート以下のユーザーについてはどうされるものなのか等、ご意見いただけますと幸いです。attachmentクリップ1気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。件sort評価が高い順sort新着順sort古い順link+5sgidビットでいけるんじゃないですかね。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。14:18コメントありがとうございます。便利そうだったので、実際にやってみました。/var/www/htmlこうすると、確かにそれ以下で生成されるファイルやディレクトリのグループはhogeになりました。ownerはapacheのままでした。調べたところ、suidビットもあったので、それも試してみました。/var/www/htmlこれは、結果変わらずでした。ファイル生成元のPHPファイルにもsuid,sgidを付けてみました。/var/www/html/index.phpこれを実行しても、やはり生成されるディレクトリ・ファイルのownerはapacheのままでした。suidビットでは、ownerまでは変わらないのでしょうか。コメントありがとうございます。便利そうだったので、実際にやってみました。すると、確かにそれ以下で生成されるファイルやディレクトリのグループはhogeになりました。ownerはapacheのままでした。調べたところ、suidビットもあったので、それも試してみました。これは、結果変わらずでした。ファイル生成元のPHPファイルにもsuid,sgidを付けてみました。これを実行しても、やはり生成されるディレクトリ・ファイルのownerはapacheのままでした。suidビットでは、ownerまでは変わらないのでしょうか。ユーザーで変更、削除できますよね。ユーザーで変更、削除できますよね。キャンセル完了するlinkcheck解決した方法+2コメントくださった方々、ありがとうございました。今回、下記の方法でやりたかったことが出来たので、自己解決とさせていただきます。指定出来るようだったので、試してみました。php-fpmこれで下記がインストールされました。0:7.0.3-1.el7.remi更に、Apacheのconf.dにconfファイルを新規作成しました。※デフォルトでは作成されなかったみたいです。index.php※ドキュメントルートの所有者は、hogeに変更したままです。PHP-FPMの実行ユーザーも変更します。hogeこれで、PHP-FPMを起動、httpdを再起動します。httpd.serviceそれぞれ、無事に起動しました。APIがFPM/FastCGIになっていました。下記のPHPを実行してみます。ownerともに「hoge」になっていました。同様のスクリプトでディレクトリ作成、ファイル作成を行うと、所有者が「hoge」で作成されることも確認しました。これでやりたかったことが出来たようです。ついでにですが、Apache2.4.6ですので、MPMをEventにしてみてパフォーマンスアップにもなるのではということもあり、このままPHP-FPMで運用するようにしようと思います。ありがとうございました。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。g+s)なものが作成されます。ユーザーで変更、削除できます。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。16:25コメントありがとうございます。グループ権限の指定があれば、確かに読み書きする上では問題はなさそうですね。別の方法で解決できましたので、自己解決を書かせていただきました。ご意見ありがとうございました。コメントありがとうございます。グループ権限の指定があれば、確かに読み書きする上では問題はなさそうですね。別の方法で解決できましたので、自己解決を書かせていただきました。ご意見ありがとうございました。キャンセル完了するlink0以前業務で作成したシステムでは3に該当する形でスクリプトを組みました。使用した関数は下記のページに載ってるやつです。http://www.php-ref.com/b2api/03_chmod.html※注PHPでスクリプトを組めない場合や、ファイルが多岐にわたる場合はcron等で定期的にファイルのオーナーと実行権限を変更していました。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。14:12コメントありがとうございます。ファイル生成のたびに処理を入れる方向ですね。cronは処理のタイミングや、ファイル・ディレクトリ数が膨大だったりする場合の負荷を考えるとちょっとむずかしそうですね...。コメントありがとうございます。ファイル生成のたびに処理を入れる方向ですね。cronは処理のタイミングや、ファイル・ディレクトリ数が膨大だったりする場合の負荷を考えるとちょっとむずかしそうですね...。キャンセル完了するlink0apacheユーザーがファイルを生成するhogeもファイルを読み書きしたい普通に考えればパーミッション666ですよね。所属グループを同一にしてしまうというもの対策の一つかと思います。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。14:11コメントありがとうございます。apacheはすでにhogeと同じグループにしているので、パーミッションさえ合えば問題ないのですが、PHP出力するファイル・ディレクトリの標準のパーミッションが644だったり755だったりするので、常にchmodしないといけないようですね。コメントありがとうございます。apacheはすでにhogeと同じグループにしているので、パーミッションさえ合えば問題ないのですが、PHP出力するファイル・ディレクトリの標準のパーミッションが644だったり755だったりするので、常にchmodしないといけないようですね。5.1をデプロイしたい。頂いたご意見への回答は行っておりません。