• 締切済み

実行スクリプトと所有者について

お世話になっております。 現在Ubuntu9.04とその他のスクリプトは最新のモノでちょこちょことスクリプトを実行しています。 以前より正常に機能していたのですが、ある時期からperl、phpから実行されるスクリプトで新規でファイルを生成したり書き込んだりという場合にその実行したユーザー権限からapacheのwww-dataの権限になってしまいます。 特に問題なのがMovable TypeなどのCMSを実行した際に書き出されるindex.htmlまでがwww-dataの権限になってしまい、FTPでダウンロードすることも編集することもできなくなってしまいました。 何かしらの設定を変えた記憶はないのですが、通常のようにスクリプトを実行したユーザーと同様のユーザー権限(オーナー)でファイルを書き出すにはどうしたらよいでしょうか?

  • Tinte
  • お礼率40% (40/98)
  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

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

やりかたは色々あると思いますが以下のどちらかが妥当では? (1)www-dataのパーミッションを777にする、もしくは774にして グループ管理する (2)作成したあとパーミッションや所有者を変更するスクリプトを書いておく

Tinte
質問者

お礼

ありがとうございます。 散々いろいろと探し回った挙句に、suEXECというapacheのモジュールで解決することがわかりました。

関連する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を使う以外の方法で実現可能であれば、それでも構いません。 質問が冗長になってしまって申し訳ありませんが、サーバ構築の経験者様からのアドバイスを頂ければと思い質問させて頂きました。何卒よろしくお願い致します。

  • スクリプト実行言語にPerlを指定する方法

    ubuntu で (1)apache2 をインストール (2)peal をインストール しました。 その後、スクリプト実行言語にPerlを指定する方法がよくわからなく困っています。 ネットを見ながらやっていますが、スクリプト実行言語にPerlを指定する方法がわかれば先に進めます。どうやればいいのでしょうか?

    • ベストアンサー
    • Perl
  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。

  • 権限の違うシェルスクリプトの実行

    3つのシェルスクリプトがあります。 ●root権限で実行  aaa.csh ●ユーザ指定権限で実行 bbb.csh ●root権限で実行 ccc.csh この3つのシェルスクリプトはaaa.csh →bbb.csh →ccc.cshの順番でバッチ処理として cronに設定したいのですが、 権限が違うのでroot権限のcrontabとユーザ指定のcrontabに それぞれ設定しなくてはいけません。 あまりスマートではないかと思い、 何かよい方法はないかと質問させて頂きました。 3つのシェルスクリプト1つシェルスクリプトにまとめてroot権限のcrontabに設定してしまう方法とかどうでしょうか? ちなみにスクリプトの処理の内容は単純なファイルコピーなどです。 意味分かりますでしょうか? よろしくお願いします。

  • cronでのPerlスクリプト実行

    少し前に同様の質問をしましたが、やはり解決していませんでした。 #!/usr/bin/perl open(OUT,">/home/test/test.log"); print OUT "OK"; close(OUT); このスクリプトをcrontabに以下のように記述しました。 0 0 * * * /home/test/test.pl > /dev/null 2>&1 パーミッションは省略します。 このようにすると、正常にtest.logが出力されました。 しかし、本当に実行したいスクリプトを同様にしたところ、 正常に動作しませんでした。cronログには記録されます。 実際のスクリプトは長いのでここには掲載できませんが、 主な処理はおおよそ次のようなことをしています。 ・pmとplモジュールがあり、plからpmを呼び出している。 ・plもpmも自作のユーザ関数の組み合わせ ・ファイルはtestユーザが所有し、実行権限は777。  (動作確認後、徐々に落としていきます) ・plでは、use encoding 'utf8'。 ・スクリプトにオプションを付けて、引数を読み込む。 ・loggerでsyslogへ結果を出力。 ・子プロセスを生成して処理の一端を行わせている。 ・opendir、readdirなどを使用。 ・xxxxxx.datファイルを読み書きしている。 ・CPANにあったメール送受信モジュールを使用している。 ・ファイルをbz2圧縮している。 などです。 コマンドラインから実行すると確実に正常に動作します。 気になるのはPerlスクリプトの内容でモジュールを使うときは、 パスが通っていてもフルパス指定しないといけないのでしょうか? しかし、フルパスと言ってもせいぜいsystem()で実行するコマンドを フルパスにするくらいしか思いつきません。 うまく実行できない理由として考えられる可能性があることを 教えてもらえませんか? 根本的な解決としては、cronでの実行とコマンドラインからの実行は 何が違うのかが明確になれば対処できるのかもしれません。 よろしくお願いします。

  • CGIを実行した時に作ったファイルの所有者に関して

    Proftpdとapacheを用いてWebサーバを運用していますがCGIやPHPによって作られたファイルの所有者がapacheになってしまいFTPからファイルが削除できません。 hoge.hoge.comはhogeでCGIを実行し aa.hoge.comはaaでCGIを実行することはできないのでしょうか? バーチャルホストでCGIを実行するときは何か別に記述が必要なのでしょうか? ちなみにFTPDは User   nobody Group   nobody apacheは User apache Group apache このように設定してあります。

  • scriptの実行するとき

    linux初心者ですが教えてください。 linuxでscriptを作成して自分で実行するときですが ファイル名.sh で実行できる時と sh ファイル名.sh としないと動かないときがありますが なぜでしょうか? 因みにredhatで実行権限は付けてます。

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

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

  • 無料のCMSで静的生成できるものを探しています。

    現在提供してもらっているホームページスペースは、PerlやPHP等のスクリプトが利用できませんし、FTPでのアップロードもできません(ウェブ上のマネージャからアップロード)。 これまではテキストエディタ等でシコシコとHTMLを記述してアップロードしていたのですが、以前ウェブ上で利用したことのあるCMSの簡単さが忘れられないため、これからはローカルでコンテンツを管理し、必要に応じて静的生成し、その生成されたファイルを前述のマネージャからアップロードしてサイトを構築したいと考えています。 そこで、そのような事が可能な商用でも無料のCMS、またはCMSのようなソフトウェアをご存知の方がいらっしゃいましたら、ぜひご教示願います。 なお、現在使用中のローカルのOSはWindows 2000及びUbuntu Linuxで、CMSはPerl等のさほど導入に手間を取らない環境を必要とするものを希望します(Perlに拘ってはいません。)。 また、諸事情で冒頭のホームページスペースを変えることができない状況にあることを申し添えます。

    • ベストアンサー
    • HTML
  • 頭にperlとつけないと実行できない

    solaris8・perl5.6.1において、作成したperlのスクリプトを実行する時に、 頭にperlをつけて $ perl ファイル名 としないとスクリプトが実行できません。 実行ユーザーにパスはとおっています。 普通に $ ファイル名 で実行するにはどうしたら良いかアドバイス頂けないでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう