PHPで質問です。


cp -p -Rでファイルを複製していくプログラムを作っているのですが
コピー先の所有者をapache以外にしたく、chmodで変更しようとしているのですが
変更が上手くいきません。
何故でしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/06/09 20:00:40
  • 終了:2010/06/16 20:05:02

回答(8件)

id:Bombastus No.1

ホーエンハイム回答回数409ベストアンサー獲得回数522010/06/09 20:09:40

ポイント19pt

ご質問は、chmod関数についてでしょうか。

PHPのセーフモードにより、ご希望の結果になっていない可能性があります。


system関数を使い、chmodコマンドを実行してみてください。

id:makocan

最初は、systemで行っていのですが

ダメでした。

2010/06/09 20:54:09
id:doropon No.2

回答回数94ベストアンサー獲得回数162010/06/09 20:17:07

ポイント19pt

chown かと。

chown -R apache *

groupも指定する場合。

ggggがgroup名です。

chown -R apache:gggg *



http://q.hatena.ne.jp/1276081237

id:makocan

すみません。

その通りです。

ただ、上記では出来ませんでした。

system('chown -R test ディレクトリ名 *');

で行ったのですが、testではなく

apacheになります。。。

2010/06/09 20:53:46
id:kick_m No.3

kick_m回答回数1372ベストアンサー獲得回数542010/06/09 20:36:38

ポイント18pt

一般ユーザーはふつう上位の所有者を変更できないです。http://www

id:makocan

すみません。

作成したユーザーが変更を試みているのですが

それでもダメなものなのでしょうか?

2010/06/09 20:50:16
id:koriki-kozou No.4

koriki-kozou回答回数480ベストアンサー獲得回数792010/06/09 21:18:14

ポイント18pt

http://jp2.php.net/manual/ja/function.chown.php

http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230729/

ファイルやディレクトリの変更前の所有者がapacheユーザー以外であると考えられる


構図としては

(1)phpやphpから呼び出したsystemコマンドは全てapacheユーザーの元で稼動している

対して

(2)FTPソフトなどで接続して作成したディレクトリやファイルの所有者はFTPで接続したユーザー

他ユーザーの所有物に対してオーナー変更などはできないので

(3)apache経由でのオーナー変更はできない

ということになっている


オーナー変更したければディレクトリやファイルを作成したユーザーでFTP接続してオーナー変更するしかない

id:makocan

FTP接続では、システム上、良い状態ではないのです。。。

2010/06/10 10:07:04
id:y-kawaz No.5

y-kawaz回答回数1420ベストアンサー獲得回数2252010/06/09 22:16:42

ポイント18pt

>作成したユーザーが変更を試みているのですがそれでもダメなものなのでしょうか?

ダメです。

chownの実行にはroot権限が必要なのでapacheユーザでは出来ません。


どうしてそれが必要というのであれば、sudoを使えば特定ユーザに特定コマンドのみを別ユーザ権限で実行できるように設定できますので調べてみてください。

もしくはやっつけ仕事でよければ、rootのcronで定期的にchownを実行するなども考えられます。

http://www.google.co.jp/search?q=sudo

id:makocan

なるほど。それもいいかもしれませんね。

2010/06/10 10:06:41
id:doropon No.6

回答回数94ベストアンサー獲得回数162010/06/10 02:16:12

ポイント18pt

あ、すいません。

systemでですね。

apacheの起動ユーザにしかできない、apacheを起動しているユーザです。

大元はrootで上がりますが子プロセスはhttpd.confに書いてあるユーザで動いています。

たぶん、仰っているところからhttpdはapacheというユーザで動いているのではと思います。

sudoを使ってapacheユーザに権限を与えることはできますが、お勧めはしないです。

あとは、suEXECでできるような気がします。すいません、やったこと無いのでハッキリとしたことが言えなくてすいません。

先に気がつけばよかったのですが、申し訳ない。

セキュリティには気をつけておかないといけないかと。

こちらsuEXECです。

http://httpd.apache.org/docs/2.2/suexec.html

id:makocan

なるほど!

試してみます!

2010/06/10 10:07:15

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 niwa-mikiho 508 416 38 2010-06-12 16:13:10
2 さかもと 48 25 0 2010-06-14 18:37:04

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません