• ベストアンサー
  • 暇なときにでも

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

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

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数996
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.3
  • entree
  • ベストアンサー率55% (405/735)

> 所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか? 基本的にはそれでOKですが、それだけではapacheユーザが作成した ファイルをhogeユーザが変更できなくなってしまうかもしれません。 user=hoge,group=hoge user=apache,group=apache,groups=hoge groupは一次グループ、groups2は二次グループです。umask002 (新 規作成されたファイルのパーミッションが775 ) に設定されている とします。 hogeユーザが作成したファイルはhoge/hoge なので、hogeグループ に属するapacheユーザは編集可能です。しかし、apacheユーザが新 規作成したファイルはapache/apache になるので、apacheグループ に属さないhogeユーザは編集できません。 そこで、ディレクトリをhogeユーザで作成し、ディレクトリにsgid ビットを立てます。 $ chmod 2775 dir $ ls -l dir drwxrwsr-x 2 hoge hoge 4096 4月 7 13:35 dir これで、apacheユーザがdir上に作成したファイルはapache/apache ではなく、apache/hoge になるので、hogeユーザも編集できるよう になります。

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございました >user=apache,group=apache,groups=hoge >groupは一次グループ、groups2は二次グループ ・上記の「groups=hoge」と「groups2は二次グループ」の所が理解できません ・「groups2」ではなく「groupsは二次グループ」? ・あるいは、「user=apache,group=apache,groups2=hoge」?

その他の回答 (2)

  • 回答No.2

>・一般的には、に書かれている3つは、それぞれ個別に行うのでしょうか? はい。 >・例えば、「ディレクトリのグループにapacheユーザを追加する」=「ディレクトリの権限をapacheユーザが書き込めるよう変更する」でしょうか? それとも両者は同じ意味ではない? それぞれの作業の持つ意味は全く異なります。 前者のコマンドはusermod(下の質問のコマンド)、 後者のコマンドはchmodを使います。 >・ディレクトリのグループがhogeだった場合、下記コマンドで合っているでしょうか? usermod -G hoge apache 上記コマンドは「apacheというユーザをhogeというグループに追加する」作業になります。 それを意図しているなら合っています。 確認ですが、そもそもそのディレクトリにグループの書き込み権限はあるんですよね?

共感・感謝の気持ちを伝えよう!

  • 回答No.1

>・そもそもapacheユーザ権限は、一般的にどう設定するものなのでしょうか? rootみたいに最強にする? もともと親プロセスはroot権限で起動しているはずですが、それが作成する子プロセスをroot権限で動かすのは大変危険です。それを理解した上で、必要ならそうすることも無いとは言えませんが(ブラウザからシステム管理を行う場合等)。 従いまして、一般的には ・ディレクトリの権限をapacheユーザが書き込めるよう変更する ・ディレクトリのグループにapacheユーザを追加する ・SuExecを使用する で対応します。 それぞれのメリットデメリットについては検索して調べてみてください。 どれを選択するかはその他の条件にもよりますので一概には言えません。

共感・感謝の気持ちを伝えよう!

質問者からの補足

回答ありがとうございました。 ・一般的には、に書かれている3つは、それぞれ個別に行うのでしょうか? ・例えば、「ディレクトリのグループにapacheユーザを追加する」=「ディレクトリの権限をapacheユーザが書き込めるよう変更する」でしょうか? それとも両者は同じ意味ではない? ・ディレクトリのグループがhogeだった場合、下記コマンドで合っているでしょうか? usermod -G hoge apache

関連するQ&A

  • Apacheの実行権限について

    Apacheがユーザーディレクトリに、ディレクトリを作成したり画像を(アップロードして)作成したりする場合、以下のように設定していますができません。 httpd(子プロセス)の実行ユーザー/グループはそれぞれapacheです。 親プロセスはrootになっています。 以下のディレクトリは次のようになっています。 (ドキュメントルートはwordpressです) /var/www/html/projectName/wordpress/wp-content/uploads drwxrwxr-x(775) owner=yamada group=apache このように、group(apache)に書き込み権限を与えているのですが、uploads以下にディレクトリやファイルの作成ができません。このディレクトリのownerをapacheにするとできるようになります。 apacheユーザーはapacheグループに属しているので、書き込み権限(w)をもってディレクトリの作成やファイルの作成ができるはず、という認識だったのですがなぜかできません。私の認識が間違っているのでしょうか。

  • php実行権限以外でのディレクトリ(ファイル)作成方法

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

    • ベストアンサー
    • PHP
  • linux権限について

    CentOS5系を使用しています。 あるディレクトリ(下記のような権限を持つディレクトリ) の配下でのみrootと同様の権限を持つユーザを作成したいと思っています。 drwxr-xr-x 15 root root ディレクトリ名⇒Hoge グループの権限はrwxにしても良いと考えていますが、 useraddで新規ユーザを作成して usermod -Gでrootグループにユーザを追加してしまうと そのユーザは他のディレクトリでもrootと同様の権限を持てることとなってしまいます。 あくまでHogeディレクトリ配下でのみrootユーザと同様の権限を持たせたいと思っています。 どなたか知恵をお貸しください。

  • ユーザ権限でapacheの停止ができない。

    OSはfedora core6を使用しています。 tomcatとapacheをmod_jkで連携しています。 連携を問題なくできているのですが、Windowsからtelnetを使い、一般ユーザでログインし、 "apachectl stop"と入力してapacheを停止させようとすると httpd (pid ****?) not running とエラーが帰ってきます。 root権限では問題なく停止します。 (apache配下はchgrpとchmodで権限を得ています。) 現状は自動スクリプトを/etc/rc.d/init.d/配下にtomcatとhttpdを作り、端末起動時に動く設定にしています。 皆さんのお知恵をお借りしたく思います。 よろしくお願いします。

  • Linuxの権限管理

    こんにちは。 Windowsサーバの管理者をしています。 Linuxも興味があり、本を見たりなどしているのですが、権限管理について疑問が出てきたので質問させてください。 Windowsですと、あるフォルダに対して複数のアカウントを所有者(フルコントロール)権限を設定できますが、Linuxの場合はどうなりますか? 調べてみたところでは、グループを作ってそのグループに所有者権限を適用したいユーザーを入れてやれば解決するとは思うのですが、例えば、Linuxをファイルサーバとして公開するとして ユーザA~Fまでの6アカウントがある 共有ディレクトリとしてディレクトリ1~3まで用意 共有ディレクトリ1→ユーザーAとBに所有者権限 共有ディレクトリ2→ユーザーCとDに所有者権限 共有ディレクトリ3→ユーザーEとFに所有者権限 と所有者権限を設定したい場合は、 グループG1を作成してユーザーAとBを追加し、共有ディレクトリ1にグループG1を所有者権限設定 グループG2を作成してユーザーCとDを追加し、共有ディレクトリ2にグループG2を所有者権限設定 グループG3を作成してユーザーEとFを追加し、共有ディレクトリ3にグループG3を所有者権限設定 と、共有ディレクトリごとにグループを作らないと設定できないのでしょうか? 私が管理しているWindowsファイルサーバでは共有フォルダは山のようにあるのですが、Linuxでこれと同じような運用をするとなると膨大な数のグループを作成しないといけないのかな、と勝手にびっくりしていますが、どうなんでしょう?それか他にうまい方法でもあるのでしょうか? お教えいただけましたら幸いです。

  • apache + svn での実行ユーザ

    リポジトリーをsvn + apache + sslで構築しております。 構築作業を完了しチェックアウトおよびブラウザからの確認まではできるようになったのですが、コミット時に以下のエラーがはかれてしまいます。 svn: Commit failed (details follow): svn: Commit failed (details follow): svn: Can't create directory '/var/lib/svnprj/*****/db/transactions/1-1.txn': Permission denied svn: MKACTIVITY of '/svn/*****/!svn/act/90df1d5c-1a01-0010-8e67-11194141f511': 500 Internal Server Error (https://www.********.co.jp) 権限の問題でディレクトリを作る権限が実行ユーザにないのが原因と思いますが、該当の権限は以下のようになっておりました。 drwxr-sr-x 7 apache apache 4096 Jun 2 12:49 ***** svnをapache経由で操作した場合はapacheアカウントで実行すると 思っているのですが、ちがうのでしょうか。 --------- ちなみに該当のディレクトリを chmod -R 777 ***** にするとコミットすることが可能になりました。

  • root権限の実行コマンドを通常ユーザーで実行

    root権限に限らないのですが、他のユーザーの権限でしか実行できないコマンドを自分で実行する方法が知りたいのです。 と言っても、rootや他ユーザーのパスワードを知っているという前提です。 例えば、通常ユーザーで作業をしているときに、root権限で行う必要のあるコマンドを実行したいとします。 今は、suでログインしてから実行していますが、shellスクリプトで実行したいと思っています。 どういったshellスクリプトになりますでしょうか?

  • CentOS:他のユーザにソースを見られたくない

    CentOS初心者です。 私が構築しroot権限を持っているWEBシステム用のCentOSサーバがあります。 /var/www/html 以下にPHPスクリプトを置いているのですが、このスクリプトのソースを他のユーザに見られたくない場合どのようにすれば良いでしょうか? 現在はとりあえず /var/www/html 以下全ての所有者を apache に変更し、パーミッションを700にしています。 他にいい方法がありましたらお詳しい方教えて頂けると幸いです。 宜しくお願い致します。

  • Apacheのドキュメントルート配下のファイル、ディレクトリの所有者は

    Apacheのドキュメントルート配下のファイル、ディレクトリの所有者は、rootのままだと危険でしょうか? /var/www/html/以下を公開しています。所有者をとりあえず、apacheに変えましたが、通常所有者はどうすべきですか? パーミッションの関係でrootのままが便利な気がしますが。

  • Apacheでディレクトリにアクセス出来ない

    Linux初心者です。 Fadora10でApacheを動作させたいのですが、ディレクトリにアクセス権の設定がうまく出来ていないようで、アクセスすることが出来ません。 httpd.confに以下の記述をして、/httpRootをApache用のディレクトリにしたいと考えています。 Alias /test "/httpRoot" /httpRootのアクセス権を "ls -l"コマンドで確認したところ、"drwxrwxrwx"になっています。 当初root権限でディレクトリを作成したため、所有者がrootになっており、それが問題なのかも?、と思い、所有者は現在はrootではありません。 尚、/httpRootはsambaとvsftpdからも読み書きできるようにしたいと考えています。