• 締切済み

PHPのユーザと権限

apacheのモジュールとして実行するPHPを実行させるユーザを指定する方法か、PHPでファイルを新規作成した時に、そのファイルの所有者を指定する方法を教えてください。 apacheの設定ファイルかPHPの設定ファイルで何とかできませんか?

  • PHP
  • 回答数2
  • ありがとう数1

みんなの回答

  • satoh
  • ベストアンサー率77% (17/22)
回答No.2

PHPをapacheのモジュールとした場合、基本的にスクリプトはapacheの実行者(プロセスのユーザ)になります。 PHPのスクリプトをapacheとは別の権限で動かしたい場合、現状ではPHPをCGIとして動かします。CGIなら、そのwebページ(例としてURLがhttp://www.example.com/~foo/sample.phpを仮定します)に割り当てられたユーザ権限(例のURLならfoo)で動かすことも、そのファイルの所有者(sample.phpの所有者が(fooとは異なる)barならbar)として動かすことも出来ます(Windowsは知らないのですがUnixなら出来ます)。 どうしてもPHPをモジュールとして動かさなければならないのでないなら、CGIとして動かしてはいかがでしょうか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

PHPのchownコマンドで所有者はかえられそうですが、 スーパーユーザーの権限が必要なようです。 場合によってはスーパーユーザー系のコマンドやモ ジュールをつかう手もありますが、管理の煩雑さや リスクを考えるとphp上から所有者変更はなさらない 方がよいかと思います。 どうしてもということであればsshなどでログインして、 chownするのが妥当ではないでしょうか? とりあえずchmodは、自分が作るファイルなので結構 自由にパーミッションもいじれるみたいですよ。 またなぜ所有者変更したいのか追加でご質問いただ ければ、別の方法もご提示できるかもしれません。

kauern
質問者

お礼

スーパーユーザーの権限が必要なんでしょうね。 単にchownをやってみましたがだめでした。 sshを使うというのはどういうことですか? sshは言葉ぐらいしか聞いたことがないので教えてください。

関連するQ&A

  • PHPプログラムを各ユーザ権限で実行させる(suEXEC)には?

    色々なCMSを試してみたくて、テスト用の自宅サーバ(外部には非公開)を構築しています。 サーバ環境はubuntu9.04+Apache2+PHP5+MySQL5で、Apacheのuserdirモジュールを有効にしています。この状態で各CMS専用のユーザを作成し、各ユーザのドキュメントルートにCMSをインストールして使っています。 具体的には・・・ xoopsユーザを作成して http://localhost/~xoops/ にXOOPSをインストール。 drupalユーザを作成して http://localhost/~drupal/ にDrupalをインストール。 ここで問題になったのは、PHPプログラムがwww-dataユーザの権限で実行されるので、自動的に生成されるファイルの所有者がwww-dataになってしまうということです。自分なりに調べて「suEXECを導入することで解決できそうだ」というところまでは解ったのですが、具体的な設定方法を見つけるには至っていません。 そこで質問なのですが、suEXECを導入することでxoopsユーザのドキュメントルート以下にあるプログラムはxoopsユーザの権限で、drupalユーザのドキュメントルート以下にあるプログラムはdrupalユーザの権限で実行されるようにするには、何をどの様に設定すれば良いのでしょうか。もしsuEXECを使う以外の方法で実現可能であれば、それでも構いません。 質問が冗長になってしまって申し訳ありませんが、サーバ構築の経験者様からのアドバイスを頂ければと思い質問させて頂きました。何卒よろしくお願い致します。

  • Apacheモジュールとしてphpをユーザー権限で

    Apacheモジュールとして、phpをユーザー権限で動かしている レンタルサーバー等が多いのですが、 これは、どのように行っているのでしょうか? #CGIであれば、suexecで十分かとは思うのですが OSはFreeBSD 10 です。 pkg ではなく、portsからのインストールになります。 よろしくお願いします。

  • apacheユーザの実行権限設定はどうすれば良い?

    ■環境 ・Cent OS ■状況 ・所有者hogeのディレクトリxに対して、スクリプト経由(apacheユーザ権限)でchmodしようとすると、エラーになります ・スクリプト経由(apacheユーザ権限)でディレクトリ作成しようとしても、エラーになります ■質問 ・どうすれば良いでしょうか? ・所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか? ・ディレクトリ所有者がhogeであることが問題? apache所有にした方が良い? ・それとも、スクリプト実行を、apacheユーザ権限ではなく、所有者hogeにした方が良い? どうやって? ・そもそもapacheユーザ権限は、一般的にどう設定するものなのでしょうか? rootみたいに最強にする?

  • PHPでの自動作成されるファイルが

    ファイルの読み込み自体や、 既存ファイルへの書き込み等は問題がないようですが、 「新規」でファイルの追加が出来ない状況です。 つまりPHPで自動生成されるスクリプトが動作しません。 サーバー移転で、新しいサーバーのみ動かない状況です。 前回以下の回答がありましたが ----------------------------------------------------- PHPを実行しているスクリプトがファイルを作成する場合 ファイルの所有者はsystem(Apache)になると思われます。 要するに作成しようとするファイルの親ディレクトリの 所有者がsystem(Apache)であり、所有者書き込みが可能 のパーミッション(700)になっている場合か、親ディレクトリの 所有者がsystem(Apache)以外であるなら、所有者以外の 書き込みが許可(707もしくは777)になってなければ 新規ファイルの作成は失敗します。 ----------------------------------------------------- ユーザー用ディレクトリ(仮にuserとします) 所有者はアカウント、パーミッションは777です 登録があれば、userディレクトリにIDの名前で新しくディレクトリが作成され そのID名のディレクトリの中に必要なファイルも自動的に作成されます この登録が動作しません・・・ ファイルが新しく作成されない状態です。 試しに手動でUPすると、動作は正常でした。 ファイルの自動作成のみが動作しません。 パーミッションもこれで合っているように思えるのですが・・・ 原因が分かりません・・

    • ベストアンサー
    • PHP
  • php実行権限以外でのディレクトリ(ファイル)作成方法

    webからphpを起動し、ディレクトリを作る場合、 phpが実行された権限ではない権限で作ることはできますか? 所有者がapacheとなるディレクトリを作りたいのです。 試してみたこと。 ・mkdirでディレクトリ作成後、chownで所有者変更が出来ればいいのですが、 root権限で動いているわけではないので無理でした。 ・シェルを作って、シェルの所有者をapacheにしてphpからコマンドラインで シェルを呼び出してみましたが所有者apacheで作られません。

    • ベストアンサー
    • PHP
  • MySQLでのLinuxユーザの作成

    Linux上でMySQLを構築する際useraddコマンドでmysqlユーザを作成することは何かメリットがあるでしょうか? Apache httpdの構築の本を読むと実行ユーザ用にapacheユーザを作成しているのですが、MySQLの本では実行ユーザはmysqlを指定しているのに、OS上でユーザ作成は行っていません。 存在しないユーザであっても、実行ユーザとして指定できるのであれば、MySQLではmysqlユーザを作成することに何かメリットがあるでしょうか? また、反対にApache httpdでは何故apacheユーザ(とグループ)を作成しているのでしょうか? (試していませんが、Apache httpdでは存在しないユーザでは実行できないのでしょうか?) よろしくお願いいたします。

  • htdoc内の所有者、アクセス権限は誰にすれば?

    PHPでシステムを構築しています。 実行するWebサーバはLinuxです。 機能はいろいろあるんですが、そのひとつにzipファイルをアップロードすると、解凍して所定のフォルダ(htdoc内)にファイルを展開(場合によっては上書き)するという機能があります。 このファイルを展開するフォルダと言うのは、zip内に一緒に入っているconfファイルに書かれているフォルダに展開するし組みになっています。 このフォルダはプログラムが入っているフォルダも指定されることが良くあります。 プログラムが入っているフォルダは、所有者はFTPユーザでアクセス権は644に現在なっています。 当然ですが、上記の解凍、展開(ファイル保存)を行うのはapacheユーザのため、ファイル保存でワーニングが出ます。 フォルダなどの所有者をapacheユーザにすべて変えるというのが一番手っ取り早いと思ったのですが、各ファイル、フォルダをFTPから修正、追加することが、アクセス権を747とかかなりゆるくしないとできなくなると言う問題があります。 そこで、質問ですが。 1.zip展開システムで追加、修正される可能性のあるファイル、フォルダはhtdocs以下すべてです。 アクセス権を747等緩めにしても問題ないものでしょうか? 2.1が問題ある場合、何かよい解決策はあるでしょうか?   (ftpユーザとapacheユーザを同じグループに入れて774とかにするというのも少し考えたのですが、こういう方法が一番よいのでしょうか?) なお、ログインしないと操作できないようになっていますので、phpファイルを壊す可能性のあるアップロードをさせる設計自体をやめるという回答は求めていません。 よろしくお願いします。

    • 締切済み
    • PHP
  • PHPでsuEXEC

    test.cgiをPHP言語で記述し、suEXECを使っているつもりなんですが、確認のためにfopen()で作成されたファイルの所有者を見たらapacheになっていました。 現在インストールされているPHPがCGIとしての動作に対応できているかを確認する方法はないですか? PerlならsuEXECが適用されています。 何をどう設定すればsuEXECとつながってくれるでしょうか? apacheとsuexecのログでは手がかりになる情報は得られませんでした。

    • 締切済み
    • CGI
  • IISでPHP使うにはどう設定したらいいですか?

    IIS+CGI(Perl)の場合は実行ファイルのある場所を/usr/local/bin/などとファイルの最初に指定するのはわかります。 しかしIIS+PHPで実行ファイルのある場所を指定するときはどうやったらいいのかわかりません。ApacheだとScriptのエイリアスで設定するみたいですが私にはよく分かりません。 どなたか回答をお願いいたします。

  • ゲストユーザー権限解除

    WindowsXPHOMEを使っています スタート>ファイル名を指定して実行>rundll32 netplwiz.dll,UsersRunDll と進んでいくと ユーザーの設定画面になるのですが そこで間違えて ユーザーをUSERにするはずが Guestになってしまい それから 解除できません 解除方法を教えてください リカバリー システムの復元以外でお願いします

専門家に質問してみよう