sendmailでsetuidが1日経つとリセットされてしまう

このQ&Aのポイント
  • sendmailをsetuidしても、1日経つとリセットされてしまう問題が発生しています。
  • 現在、phpでsendmailを使用するためにはsetuidしないと送信できませんが、setuidの持続方法や他の方法について知りたいです。
  • 下記のアドバイスを受け取りましたが、具体的な設定方法や別の方法について教えてください。
回答を見る
  • ベストアンサー

sendmailでsetuidが1日経つとリセットされてしまう

sendmailをsetuidしても(chmod 4555)、次の日には元に戻ってしまっています(0555) 現在、phpでsendmailを使用するためには、setuidしないと送信できません。 FreeBSD 6.2 Apache/2.2.4 sendmail 8.13.6.20060614 別の質問で、a-saitoh様より下記のアドバイスをいただきました。 --------------------- > 1日経つと SUID が自動的にリセットされてしまうとのことですが、作業手順を間違えているのだと思います。 > setuid/setgidしているはずのファイル一覧と実際を比べて、予想外にsetuid/setgidされているファイルがあればモードを元に戻すと言う処理が1日に1回行われているのでしょう(cronに登録されているはず)。 > セキュリティチェックの元台帳を書き換えれば、よいはず。 > 具体的には、OSの種類ごとに違いますので、改めて質問をするとよいでしょう。 -------------------------------- どのように設定すればsetuidが持続できるでしょうか? また、setuid以外の方法はありますでしょうか?

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

  • ベストアンサー
  • qaaq
  • ベストアンサー率36% (146/404)
回答No.1

>次の日には元に戻ってしまっています FreeBSDでは、cronで毎日実行するスクリプト群は/etc/crontabに直接記述せず、 "periodic daily "から、下記のディレクトリのスクリプトが実行されます 調べてみてはどうでしょうか。 /etc/periodic/security /etc/periodic/daily ただ、根本的に「sendmailをsetuidしなければならない」という対処は、 OS標準のセキュリティ対策から外れる行為だと思うので、この方法のアドバイスは他の方にお任せします。 # /etc/mail/README にヒントがありそうです。 >setuid以外の方法はありますでしょうか? 質問文からは、「PHPによるメール送信をしたい」程度の情報しか無いのでアドバイスしようがありませんが、 sendmailをsetuidしない場合、何らかのエラーがメッセージでているはずです。 # /var/log/messages ,/var/log/maillog あたりを調べてみて下さい。

unique2004
質問者

お礼

アドバイスありがとうございます。 補足:/etc/mail/README には、sendmail 8.12はセキュリティーが強くなっているから、それで困るならどちらかを行ってください。 と、書いてあるように思えるのですが、英語は苦手なので、あっているかどうかは不安です。2000文字を超えるので、全文は載せれませんでした。どちらかというのは、下記2つです。 1. Designate an alternative host for the submission agent to contact by altering /etc/mail/freebsd.submit.mc (or setting SENDMAIL_SUBMIT_MC in /etc/make.conf to an alternate .mc file) and using 'make install-submit-cf' in /etc/mail/. Change the FEATURE(msp) line to FEATURE(msp, hostname) where hostname is the fully qualified hostname of the alternative host. Or: 2. Return to using a set-user-ID root sendmail binary by changing the ownership and permissions on the sendmail binary and removing the /etc/mail/submit.cf file: chown root /usr/libexec/sendmail/sendmail chmod 4755 /usr/libexec/sendmail/sendmail rm /etc/mail/submit.cf If you install from source, set the SENDMAIL_SET_USER_ID flag in /etc/make.conf. どう思われます? よろしくお願いいたします。

unique2004
質問者

補足

phpにてメール送信時に、 /var/log/messagesには、 sendmail[68865]:NOQUEUE:SYSERR(www): can not chdir(/var/spool/mqueue/): Permission denied /var/log/maillogには、 sendmail[68865]:File descriptors missing on startup: stdout; Bas file descriptor sendmail[68865]:gethostbyaddr(IPv6:2001:218:2001:3005:bf) failed:1 sendmail[68865]:NOQUEUE: SYSERR(www): can not chdir(/var/spool/mqueue/):Permission denied と、出ています。 chmod 4555 /usr/libexec/sendmail/sendmail では、メール送信できます。 chmod 0555 /usr/libexec/sendmail/sendmail では、メール送信できません。上記のエラーメッセージです。 どうすればいいでしょうか?? よろしくお願いします。

関連するQ&A

  • sendmailとpostfix、どちらがlogwatchのメール送信

    sendmailとpostfix、どちらがlogwatchのメール送信機能として設定しやすい? Amazonのクラウド環境(EC2)に 「logwatch-7.3.6」をインストールしました。 # tar zxvf logwatch-7.3.6.tar.gz ※「logwatch-7.3.6.tar.gz」はネット上からダウンロードしました。 /etc/crontab を設定し、 毎日/etc/cron.daily 配下のファイルが実行するようにはなっているので、 logwatchの基本的な設定は完成、成功していると思います。 ただ、一緒にインストールしたsendmailの設定の仕方がよく分かりません。 ネットで調べてみてもバージョンが古い情報が多いせいか、 記載されているファイルがなかったり・・・。 その中で、 postfixというソフトがsendmailより使いやすいと書かれた情報を見つけました。 postfixについてはこれから調べてみるところですが、 Linux環境/logwatchのメール送信機能として使うことは可能なのでしょうか? インストール方法は「apt-get install postfix」で良いのでしょうか? 環境はApache/2.2.9 (DebianLinux)です。 詳しい方、教えていただけましたらうれしいです。よろしくお願いします。

  • 特殊属性について

    OSはRedHat系のLinuxでWEBサーバーはapacheを使っています。 ftpでアップロードした自宅サーバーのファイルのディレクトリを ls -alコマンドで見てみると SGIDのビットが立っているディレクトリや cgiファイルがありました。通常755なのはずですが 2755です。 SUIDビット,SGIDビット,tビット?など特殊属性が必要な理由はあるのでしょうか? 詳しい方、お願いします。

  • FreeBSDのftpサーバー

    FreeBSD7にftpサーバーを立ち上げましたが、Windows xpからftp://192..IPアドレスを入れ、rootでログインしたが、.sshフォルダ、.profileなどのファイルしか見えない。サーバーに入れたのはapache、openSSHだけです。いろいろのところ調べて、特別の設定しないと、すべてのフォルダを見えるはずだが...  よろしく。

  • ファイルのグループを変えたら見れなくなった

    お世話になります。 環境:Debian etch Apache 1.3 SFTPクライアント: Filezilla あるディレクトリ配下のファイルのグループ・パーミッションをrootで # find . -gid 1001 -exec chgrp group2 {} \; と # find . -gid 1004 -exec chmod 664 {} \; とで 変更しましたら、SFTPクライアントやwebからブラウザで見れなくなりました(読めなくなりました)。 どのように元にもでしたら良いでしょうか? どなたかよろしくお願いします。

  • Web上からパーミッションの変更

    Web上から、majordomoの定義ファイルを変更しようと考えています。 管理は別のツールを使用するのですが、一部カスタマイズしたいところ があるので、独自に作ろうと思います。 対象のファイルは、下記のような設定になっています。 -rw-r--r-- 1 majordomo majordomo 108 8月 25 11:10 testml1 「chmod(646, "testml1")」という感じでパーミッションを変更したいの ですが、Webサーバ(apache)はnobodyで動作しているため、そのままでは 変更できません。 上記ファイルをあらかじめ変えておけば良いのではないかと思われるかも しれませんが、別の管理ツールを使用するとパーミッションが元に 戻ってしまうため、プログラム上で変更したいと考えています。

    • ベストアンサー
    • Perl
  • cronでメールを送信すると文字化けが起こります。

    一昨日にcronというものを知って、いろいろと弄り始めた初心者です。 cronで毎時1分にメールを送信させようと思いました。 cron1.sh というシェルスクリプト(?)で sendmail.php を実行させようとしています。 ---- cron1.sh ---- (保存形式は[UTF-8] 改行コードは[LF]) #!/bin/sh #PHP export LANG=ja_JP.jis /usr/local/bin/php /virtual/example/public_html/example.com/mail/sendmail.php exit ----------------- ---- sendmail.php ---- (保存形式は[UTF-8] 改行コードは[CR+LF]) <? $strMailFrom = "example@example.com"; // $header = "Content-Type: text/plain;charset=iso-2022-jp\r\n"; $header = "From: ".$strMailFrom; mb_language("Japanese"); $address = 'example2@example.com'; $subject = '件名です'; $message = "本文です"; if(mb_send_mail($address, $subject, $message, $header)){ print("メール送信完了"); }else{ print("送信に失敗"); } ?> --------------------- ちなみに起動させることまでは上手く行ったのですが、cronを経由して送信させたメールは文字化けが起こってしまいます。 また、実行結果メールも文字化けになっています。 (メーラーは Outlook です。) ちなみに、sendmail.php から直接のメール送信では文字化けは起こりませんでした。 いくつか自力で調べてみたところ、環境変数に問題があるのかと思ったので、export LANG=ja_JP.jis の部分を、LANG=ja_JP.eucJP、LANG=ja_JP.sjis に変えてみたりしたのですが結果は変わらず。 ファイルの保存形式自体がダメなのか、もしくは何か根本的な部分がダメなのかわかりません。レンタルサーバーのため一時間に一度しかcronで起動させることができないので、なかなか問題解決に至りません。 よろしければ良いアドバイスをください。お願します。 PHPも先月学んだばかりで、最近になってはじめて文字コードや文字化けというものを意識するようになったばかりの初心者です。何か不足している情報などありましたら、補足させていただきます。

    • 締切済み
    • PHP
  • apacheでログを圧縮&再起動を掛けたい

    長い質問ですみません。随分試行錯誤した上でまだ悩んでいます。 無料プロバイダを個人運営でやっているものなんですが、 サーバーのログをhttp.confの設定でこんな感じで作成し、 CustomLog /var/log/apache/XXX.XXX.ne.jp-access.log combined これをCSV扱いしてCGIで読み取り、解析をしています。 自動的に一週間でログの切り替えを行っている様で最初はこれでよかったのですが、アクセスが増えるにつれcgiとログファイルが非常に重くなってきました。 そこで、以下のことをしようと思っています。 cronを使えば良いのではないかと思いました。 1.一定のアクセスの少ない時刻にログ圧縮をかける (圧縮ファイルは上書きでよい。どっちみちそんなに遡っては見ないので) 2.apacheを再起動する (再起動かけないと新しいlogファイルが作成されない様なので) ちなみに手動では以下の方法で出来ました。 gzip /var/log/apache/XXX.XXX.ne.jp-access.log ps x kill プロセスID /usr/sbin/apache でも自動だと kill プロセスIDがダメなんです。 同じIDでapacheが起動してくれないので・・・。 1.apacheを一定時間に確実に再起動させる方法 2.それ以外の1日単位でログファイルの切り替えを行う方法 CGIが一定ファイルを読む仕掛けになってるので現在アクティブなファイルは 同じのままという条件で のどちらかを教えてください。 ちなみに、 http://www.rfs.co.jp/server/apache/06.html の方法はhttpd.pidがwhereisとかfind探しても見つからないという 理由により挫折してますのでこれはアドバイスしないでください。 見つける方法がわかればそれでもまあいいのですが。

  • root宛てメールの転送について

    sendmailの転送設定について困っていることがあるので質問させて頂きます。 あるサーバでCRONによりジョブが実行され、実行結果がroot宛にメールで配信されるようになっています。そのサーバ自体ではメールの参照を行わないため、メールは他のアドレスに転送したいと考えています。現状では /usr/bin/mail test@test.co.jp とやるとtest@test.co.jpに送信が可能です。次にroot宛のメールを転送しようと思い、/etc/mail/aliasesファイルの編集→newaliases にて転送設定を行いましたが、root宛に送信しても転送先へメールが転送されません。 aliasの設定に問題があるかと思い、以下のテストを行いましたが、設定したとおりの結果が返ってきています。 <テスト1> sendmail -C/etc/mail/sendmail.cf -v -bv root <テスト2>冗長モードでのメール配信 sendmail -C/etc/mail/sendmail.cf -v root  正常にroot宛メールがtest@test.co.jpに転送されて受信可能 しかしmailコマンドにてローカルからroot宛にメールを送信しても同様に目的のアドレスには転送されず、rootに配信されてしまいます。  /usr/bin/mail root  とやるとroot宛に送信してしまいtest@test.co.jpには送信できません。 このサーバ自体はメールの受信の必要はなく、root宛のメールを転送することができれば良いのですが、この先の対応方法が見つからず難儀しております。 情報に不足があり、状態が正確にお伝えできていないかも知れませんが、このような状態の解決のヒントをいただければと思っております。 よろしくお願い致します。 ■環境  OS :FreeBSD 4.7-RELEASE  sendmail :8.12.1(デーモン起動は行っていない)

  • /varの容量不足の解決策はないでしょうか

    FreeBSD7.2で構築したsendmailサーバを正・副の2台構成で運用しています。 正サーバのメールボックスを副サーバにコピーするため、 cronで正サーバのデータを圧縮し、副サーバで展開する処理を行っていますが、 展開処理が、以下のメッセージをrootにメール出力して、異常終了してしまいました。 *** Mail of at least 943079424 bytes could not be accepted *** at ss5gw.kensetsukankyo.co.jp due to lack of disk space for temp file. *** Currently, 921462 kilobytes are available for mail temp files. メールボックスはシンボリックリンクで/usr/homeに作成していて、容量は十分にあるのですが、 /varディレクトリ自体の容量は、1GB程度しか割り当てていません。 状況を見ると、展開処理の際に/varを一時的に利用しようとして、容量不足になっているように見えます。 既に運用しているサーバのため、ディレクトリの再割り当てをしての再インストールは、極力回避したいと考えています。 cronでの展開処理の際の一時利用ディレクトリを別ディレクトリに指定する等の回避方法がお分かりの方はお教えいただけると助かります。 当方は、サーバ運用を引き継いではいますが、unix系OSについては素人のため、回避策が見つけられません。 よろしくお願いいたします。

  • MAC OSXのTerminalにperlの出力が表示されない

    リャマ本で学び始めたばかりなのですが、プログラムの出力がTerminalに表示されずに困っています。 以前学校の授業でUNIX機を使ってhello worldをやったときはchmodして「perl ソース名」とすれば標準出力にhello worldと出た気がするのですが、MAC OSXでchmodして実行してもエラーも出ずに、改行されて通常の入力待ちカーソルが点滅するだけです。 試しにリダイレクトもしてみましたが、新しいファイルができただけでした。 ソースはhello world出すだけのアレなので間違いようがないと思います。 「osx perl」などのキーワードで教えて!gooやgoogleで検索してみましたが、プログラム講座のようなものはたくさんあるのですが、初歩的な環境構築の手ほどきが見つからず、とりあえず http://homepage.mac.com/dnagase/macosx/perlcgi.html ここを見て「これはApacheで実行したいときだからなんか違うなー」と思いつつも藁にもすがる思いで設定してみたりもしましたが変化はありませんでした。 おそらく鼻から火が出るくらいの恥ずかしい質問だとは思うのですが、こいつの解決法探しに一日費やしてしまったので恥も承知で聞いてみることにしました。よろしくおねがいします。

    • ベストアンサー
    • Perl