質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.63%

ログローテーション時にservice httpd gracefulを成功させたい

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,974

H_K

score 12

前提・実現したいこと

下記の /etc/logrotate.d/httpd において postrotate ~ endscript に記述した
/sbin/service httpd graceful を成功させたいのですが、失敗します。

エラーメッセージを見ると、権限問題の模様です。
logrotateは、root権限で実行されないのでしょうか。

発生している問題・エラーメッセージ

/tmp/graceful.out

Gracefully restarting httpd: (13)Permission denied: AH00058: Error retrieving pid file /tmp/httpd.pid
AH00059: Remove it before continuing if it is corrupted.

該当のソースコード

/etc/logrotate.d/httpd

/var/log/httpd/access_log /var/log/httpd/error_log {
    daily
    missingok
    rotate 90
    delaycompress
    ifempty
    sharedscripts
    postrotate
        /sbin/service httpd graceful > /tmp/graceful.out 2>&1
    endscript
}

試したこと

手動でrootユーザにて service httpd graceful を実行すると、成功します。
(sudo においても、パスワード入力が必要ですが、成功します)

補足情報(言語/FW/ツール等のバージョンなど)

CentOS release 6.7 (Final) 
Server version: Apache/2.4.23 (Unix) 

$ pwd
/tmp
$ ll
-rw-r--r--. 1 root          root                  0 1110 10:10 2016 httpd.lock
-rw-r--r--. 1 root          root                  5 1110 10:10 2016 httpd.pid


前回「Apacheログがローテート後に更新されない」の件名で質問させていただきました。

補足情報2

SELinuxは有効です(Enforcing)。

/var/log/audit/audit.log に関しては、例えば以下の行がありました。

type=SYSCALL msg=audit(1477494121.309:502): arch=c000003e syscall=62 success=yes exit=0 a0=ddd a1=0 a2=0 a3=7fff7317ea50 items=0 ppid=9378 pid=9386 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=20 comm="httpd" exe="/opt/httpd-2.4.23/bin/httpd" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)

Apache httpd-2.4.23 のインストール方法は、tarball から make install です。

./configure \
 --prefix=/opt/httpd-2.4.23 \
 --with-mpm=prefork \
 --enable-mods-shared=all

/etc/init.d/httpd に関しては、
デフォルトの状態から、ファイルのパスを変更したのみです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • TaichiYanagiya

    2016/11/11 15:08

    もし、SELinux が有効(Enforcing)であれば、/var/log/audit/audit.log に /tmp/httpd.pid に関する エラーが出ていないでしょうか? Apache httpd-2.4.23 のインストール方法(tar ball から make install でしょうか?)、 /etc/init.d/httpd スクリプトの内容がわかると再現環境を作れるかもしれません。

    キャンセル

  • H_K

    2016/11/11 19:44

    補足情報2の項目を追加しました。

    キャンセル

回答 3

+1

logrotateは、root権限で実行されないのでしょうか。 

普通はroot権限のはずですが、OSによるかも知れません。/tmp/graceful.out のオーナーはrootですか?

rootで実行されているとすると、SELinuxにより制限されているのでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/15 10:13

    エラーログの権限は以下の通りです。
    -rw-r--r--. 1 root root 297 11月 15 04:02 2016 graceful.out

    ご指摘の通り、SELinuxの影響でした。
    ご回答ありがとうございました。

    キャンセル

checkベストアンサー

0

ユーザとグループのアクセス権限のような。。。
下記のようにコマンド入力されると、表示はどうなりますか?

# grep "User apache" /etc/httpd/conf/httpd.conf
User apache
# ps auxww | grep httpd
apache   21529  0.0  6.0 587148 61924 ?        S    Nov06   6:49 /usr/sbin/httpd
 ...
root     24314  0.0  0.1 356472  1456 ?        Ss   Nov02   0:43 /usr/sbin/httpd

SElinuxを有効のままで使われる場合は、下記が参考になるかと思います。

http://tech.feedforce.jp/selinux_and_logrotate.html
(申し訳ありませんが、そのままの答えではありません。)

無効にする場合は、SELINUX=の定義を変更してOS再起動

# vi /etc/selinux/config
SELINUX=disabled 

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/11 13:53

    回答ありがとうございます。
    ご教示いただいたコマンドの結果は以下の通りとなりました。

    1.$ grep "User apache" /opt/apache2/conf/httpd.conf
    User apache

    2.$ ps auxww | grep httpd
    root 3588 0.0 1.2 378280 24364 ? Ss Nov10 0:02 /opt/apache2/bin/httpd
    apache 16837 0.0 0.3 378280 7496 ? S 11:17 0:00 /opt/apache2/bin/httpd
    apache 16838 0.0 0.6 378976 12400 ? S 11:17 0:00 /opt/apache2/bin/httpd
    apache 16839 0.0 0.4 378280 7724 ? S 11:17 0:00 /opt/apache2/bin/httpd
    apache 16840 0.0 0.7 379524 14536 ? S 11:17 0:00 /opt/apache2/bin/httpd
    apache 16841 0.0 0.4 378280 7724 ? S 11:17 0:00 /opt/apache2/bin/httpd
    apache 16847 0.0 0.3 378280 7496 ? S 11:17 0:00 /opt/apache2/bin/httpd
    apache 16850 0.0 0.3 378280 7496 ? S 11:17 0:00 /opt/apache2/bin/httpd

    2.において、
    2行目以降の時間は、手動でservice httpd gracefulを実行した時間と一致しています。

    キャンセル

  • 2016/11/11 15:19

    可能であれば、selinux無効化
    # setenforce 0
    して試してみてくだい。

    キャンセル

  • 2016/11/15 10:18

    ご回答、ありがとうございます。
    ご教示いただいたURLの記事を参考に、SELinuxの影響である事を確認できました。
    検討の結果、SELinuxを無効にして運用し、解決とさせていただきます。

    キャンセル

0

切り分けとして、「/sbin/service httpd graceful > /tmp/graceful.out 2>&1」の部分を

sudo /sbin/service httpd graceful > /tmp/graceful.out 2>&1


で試してみてはいかがですか。

事前に/etc/sudoersを編集してapacheユーザに/sbin/serviceコマンドに対してNOPASSWDの設定をしておけばパスワードは聞かれませんので。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/15 10:13

    SELinuxの影響を確認できました。
    検討の結果、SELinuxを無効にして運用します。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.63%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る