プロが教えるわが家の防犯対策術!

■環境
・Cent OS

■状況
・所有者hogeのディレクトリxに対して、スクリプト経由(apacheユーザ権限)でchmodしようとすると、エラーになります
・スクリプト経由(apacheユーザ権限)でディレクトリ作成しようとしても、エラーになります

■質問
・どうすれば良いでしょうか?
・所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

・ディレクトリ所有者がhogeであることが問題? apache所有にした方が良い?
・それとも、スクリプト実行を、apacheユーザ権限ではなく、所有者hogeにした方が良い? どうやって?

・そもそもapacheユーザ権限は、一般的にどう設定するものなのでしょうか? rootみたいに最強にする?

A 回答 (3件)

> 所有者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」?

補足日時:2014/04/20 22:47
    • good
    • 1

>・一般的には、に書かれている3つは、それぞれ個別に行うのでしょうか?



はい。

>・例えば、「ディレクトリのグループにapacheユーザを追加する」=「ディレクトリの権限をapacheユーザが書き込めるよう変更する」でしょうか? それとも両者は同じ意味ではない?

それぞれの作業の持つ意味は全く異なります。
前者のコマンドはusermod(下の質問のコマンド)、
後者のコマンドはchmodを使います。

>・ディレクトリのグループがhogeだった場合、下記コマンドで合っているでしょうか?
usermod -G hoge apache

上記コマンドは「apacheというユーザをhogeというグループに追加する」作業になります。
それを意図しているなら合っています。


確認ですが、そもそもそのディレクトリにグループの書き込み権限はあるんですよね?
    • good
    • 0

>・そもそもapacheユーザ権限は、一般的にどう設定するものなのでしょうか? rootみたいに最強にする?



もともと親プロセスはroot権限で起動しているはずですが、それが作成する子プロセスをroot権限で動かすのは大変危険です。それを理解した上で、必要ならそうすることも無いとは言えませんが(ブラウザからシステム管理を行う場合等)。

従いまして、一般的には
・ディレクトリの権限をapacheユーザが書き込めるよう変更する
・ディレクトリのグループにapacheユーザを追加する
・SuExecを使用する
で対応します。

それぞれのメリットデメリットについては検索して調べてみてください。
どれを選択するかはその他の条件にもよりますので一概には言えません。

この回答への補足

回答ありがとうございました。

・一般的には、に書かれている3つは、それぞれ個別に行うのでしょうか?

・例えば、「ディレクトリのグループにapacheユーザを追加する」=「ディレクトリの権限をapacheユーザが書き込めるよう変更する」でしょうか? それとも両者は同じ意味ではない?

・ディレクトリのグループがhogeだった場合、下記コマンドで合っているでしょうか?
usermod -G hoge apache

補足日時:2014/04/07 12:29
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!