プロが教える店舗&オフィスのセキュリティ対策術

テキストファイルにログを書き込む以下の処理があります。
aaa.pl
--------------------
open Log,">>aaa.txt";
print Log 'test';
close Log;

Web上(アパッチ)からこのaaa.plを実行すると
正常に処理されて、aaa.txtに書き込まれます。
(aaa.txtのオーナーはwww。属性は644)

それとは別に、/etc/aliasesに
特定のメールアカウントにメールが送られた時に
このaaa.plが実行されるように設定しているのですが

mail_address:"|/ccc/aaa.pl"
(パスは適当ですが、実際にはあっています)

こちらからaaa.plが処理させても、
aaa.txtに文字列が書き込まれなくて困っています。

open Log,">>aaa.txt";
chmod 666,"aaa.txt";
...

とPerl側でパーミッションを変更させようとしても
うまく変更されていません。処理もされません。

おそらくaliasesに設定したPerlの実行権限者が
ファイルの所有者(この場合www)と異なる為
書き込みもchmodもうまくいかないと思うのです。

aliasesで実行させるアカウントは
いったいどのようなアカウントなのでしょうか(binユーザーとか?)
また、これを回避するにはどのようにすればよろしいでしょうか?

どなたかご存知の方、どうぞよろしくお願い致します。

A 回答 (2件)

>読んでいるのはsendmailになります。


>となると、どのアカウントになるのでしょうか?

設定によっても変わりますが、おそらくbinだと思います。
(すいません。私はqmail派なのでsendmailはよくわかりません)

>aaa.txtが格納してあるフォルダのパーミッションが
>770になってます(これは訳ありで変更不可)

このパーミッションだとperlの実行自体行われていないかもしれません。
perlの実行されているuidを調べる場合、$<でも良いですが、今回の場合実際にperlが起動されているかどうかも不明なので、sleep (180)とかして別プロセスからps -axすると良いと思います。

>ということは、Perlプログラムは「その他」扱い
>になっているのでしょうか?(なぜ?)

もしかしたらそうかも。
(ディレクトリの所有者でも所有者のグループにも属していない場合、「その他」扱いになります)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
とても参考になりました。

お礼日時:2004/04/07 11:53

>aliasesで実行させるアカウントは


>いったいどのようなアカウントなのでしょうか(binユーザーとか?)

/etc/aliasesを何が読んでいるかで実行uidは変わります。
(sendmailはもちろんのこと、qmailでも読むように設定できたはずだし、postfixでも使ったはず)

>また、これを回避するにはどのようにすればよろしいでしょうか?

aaa.txtのパーミッションを666にすれば良いのでは?
もし、644で行いたい場合、/etc/aliases内でsu - www /ccc/aaa.plするとか。
(aliasesがrootで実行されてれば644でも問題ないはずだからこれはだめかも)

この回答への補足

ご返答ありがとうございます。

>/etc/aliasesを何が読んでいるかで実行uidは変わります。

読んでいるのはsendmailになります。
となると、どのアカウントになるのでしょうか?

>aaa.txtのパーミッションを666にすれば良いのでは?

パーミッション666に変えて試してみましたがダメでした。
aaa.txtは666ですが、
aaa.txtが格納してあるフォルダのパーミッションが
770になってます(これは訳ありで変更不可)

ということは、Perlプログラムは「その他」扱い
になっているのでしょうか?(なぜ?)

重ねての質問で申し訳ございませんが、
どうぞよろしくお願い致します。

補足日時:2004/03/31 19:41
    • good
    • 0

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