忘備録

日々の調べ物をまとめる。アウトプットする。基本自分用。

【Python】URLエンコードされたテキストファイルをデコードしてファイル出力

URLエンコードされた文字列が吐かれたログファイルをデコードすることがあったので、お勉強がてら作ってみた。

環境

Python 2.7.10

ソース

f_cnv.py

#!/usr/bin/python
# -*- coding: utf-8 -*-

# 文字コードの指定:http://yono.cc/python/python_basics/japanese.html
# コメント:http://python301.blog123.fc2.com/blog-entry-9.html

import sys
import urllib

# 命名規約:http://nekowarau.seesaa.net/article/426647551.html
def url_decode(input_path, output_path):
    
    # if文:http://www.pythonweb.jp/tutorial/if/index4.html
    # 論理演算子:http://www.pythonweb.jp/tutorial/if/index6.html
    if input_path == "" and output_path =="":
        sys.exit ("error: The number of parameters has to be 2" + "\n" + "info: First param is input file path, second param is output file path")

    print "input file is " + input_path + ", " + "output file is " + output_path

    # 数値=>文字列:http://www.pythonweb.jp/tutorial/string/index9.html
    # インデックス付きfor:http://www.gesource.jp/programming/python/code/0022.html
    """
    strParam = ""
    for i, e in enumerate(param):
        strParam = strParam + " param[" + str(i) + "]" + "=" + e

    print "info: param is" + strParam
    """

    # ファイル入力:http://www.yukun.info/blog/2008/06/python-file.html#readlines_8211_1
    rf = open(input_path)
    lines = rf.readlines() 
    rf.close()

    # ファイル出力:http://www.mwsoft.jp/programming/python/file.html
    wf  = open(output_path, "w")

    for line in lines:
        # urlエンコード・デコード:http://python.g.hatena.ne.jp/mhrs/20060609/p1
        decodedLine = urllib.unquote_plus(line);
        wf.write(decodedLine)
    print

    wf.close()

# メイン関数的な:http://qiita.com/shunsuke227ono/items/a043bfa9998e7033de3a
if __name__ == "__main__":
    
    # コマンドライン引数:http://www.python-izm.com/contents/basis/command_line_arguments.shtml
    param = sys.argv

    # 配列のサイズ:http://www.pythonweb.jp/tutorial/list/index5.html
    if len(param) != 3:
        # 終了メソッド:http://d.hatena.ne.jp/kakurasan/20110512/p1
        sys.exit ("error: The number of parameters has to be 2" + "\n" + "info: First param is input file path, second param is output file path")
    
    url_decode(param[1], param[2])

使い方

第一引数に入力ファイル、第二引数に出力ファイルのパスを渡します。

スクリプトとして実行

例)encode.txtをデコードしてdecode.txtとして出力

$ ./f_env.py /home/hoge/Documents/encode.txt /home/hoge/Documents/decode.txt

モジュールとして実行

例)上記と同じ処理を対話型シェルで実行

$ python
>>> import f_env
>>> f_cnv.url_decode("/home/hoge/Documents/encode.txt", "/home/hoge/Documents/decode.txt")

.pycファイル

上記のモジュールとして実行で呼び出すと「f_env.pyc」というファイルが作られていた。

こいつはなんぞと思いググってみた。

.pycファイルを作成させない方法メモ - かせきのうさぎさん

Python で書かれたモジュールを import すると自動的に .pycファイルが作成される。このファイルはコンパイルして得られたバイトコードを保存したものだ。つまり一種のキャッシュである。モジュールは他のファイルからも import される可能性が高いので、こうしておけばコンパイルする時間を節約できる。

ということらしい。

【CentOS6】java8 + Tomcat7をインストール

今回はyumを利用します。

yumを利用するとパスをごにょごにょしたり、起動スクリプト自作しなくてよかったりメリットあるので利用します。

yumに頼った所為でハマったのですが。。。

自分の手で色々やってインストールするなら↓が詳しくて良いかも。

LinuxサーバへのTomcat 7導入 (Tomcatインストール)

環境

  • サーバOS: CentOS6.7
  • webサーバ: Apache2.2

手順

javaのインストール

java8関連のパッケージはベースリポジトリにあるのでyumでインストール。

$ yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * rpmforge: ftp.kddilabs.jp
 * updates: centosv4.centos.org
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package java-1.8.0-openjdk.x86_64 1:1.8.0.71-1.b15.el6_7 will be インストール
--> 依存性の処理をしています: java-1.8.0-openjdk-headless = 1:1.8.0.71-1.b15.el6_7 のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: xorg-x11-fonts-Type1 のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libjvm.so(SUNWprivate_1.1)(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libjava.so(SUNWprivate_1.1)(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libasound.so.2(ALSA_0.9.0rc4)(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libasound.so.2(ALSA_0.9)(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libjvm.so()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libjava.so()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libgif.so.4()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libawt.so()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libasound.so.2()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: libXtst.so.6()(64bit) のパッケージ: 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64
---> Package java-1.8.0-openjdk-devel.x86_64 1:1.8.0.71-1.b15.el6_7 will be インストール
--> トランザクションの確認を実行しています。
---> Package alsa-lib.x86_64 0:1.0.22-3.el6 will be インストール
---> Package giflib.x86_64 0:4.1.6-3.1.el6 will be インストール
--> 依存性の処理をしています: libSM.so.6()(64bit) のパッケージ: giflib-4.1.6-3.1.el6.x86_64
--> 依存性の処理をしています: libICE.so.6()(64bit) のパッケージ: giflib-4.1.6-3.1.el6.x86_64
---> Package java-1.8.0-openjdk-headless.x86_64 1:1.8.0.71-1.b15.el6_7 will be インストール
--> 依存性の処理をしています: tzdata-java >= 2014f-1 のパッケージ: 1:java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64
--> 依存性の処理をしています: jpackage-utils のパッケージ: 1:java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64
---> Package libXtst.x86_64 0:1.2.2-2.1.el6 will be インストール
---> Package xorg-x11-fonts-Type1.noarch 0:7.2-11.el6 will be インストール
--> 依存性の処理をしています: ttmkfdir のパッケージ: xorg-x11-fonts-Type1-7.2-11.el6.noarch
--> 依存性の処理をしています: ttmkfdir のパッケージ: xorg-x11-fonts-Type1-7.2-11.el6.noarch
--> 依存性の処理をしています: mkfontdir のパッケージ: xorg-x11-fonts-Type1-7.2-11.el6.noarch
--> 依存性の処理をしています: mkfontdir のパッケージ: xorg-x11-fonts-Type1-7.2-11.el6.noarch
--> トランザクションの確認を実行しています。
---> Package jpackage-utils.noarch 0:1.7.5-3.14.el6 will be インストール
---> Package libICE.x86_64 0:1.0.6-1.el6 will be インストール
---> Package libSM.x86_64 0:1.2.1-2.el6 will be インストール
---> Package ttmkfdir.x86_64 0:3.0.9-32.1.el6 will be インストール
---> Package tzdata-java.noarch 0:2016a-2.el6 will be インストール
---> Package xorg-x11-font-utils.x86_64 1:7.2-11.el6 will be インストール
--> 依存性の処理をしています: libfontenc.so.1()(64bit) のパッケージ: 1:xorg-x11-font-utils-7.2-11.el6.x86_64
--> 依存性の処理をしています: libXfont.so.1()(64bit) のパッケージ: 1:xorg-x11-font-utils-7.2-11.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package libXfont.x86_64 0:1.4.5-5.el6_7 will be インストール
---> Package libfontenc.x86_64 0:1.0.5-2.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

=======================================================================================================================
 パッケージ                             アーキテクチャ    バージョン                          リポジトリー        容量
=======================================================================================================================
インストールしています:
 java-1.8.0-openjdk                     x86_64            1:1.8.0.71-1.b15.el6_7              updates            190 k
 java-1.8.0-openjdk-devel               x86_64            1:1.8.0.71-1.b15.el6_7              updates             10 M
依存性関連でのインストールをします。:
 alsa-lib                               x86_64            1.0.22-3.el6                        base               370 k
 giflib                                 x86_64            4.1.6-3.1.el6                       base                37 k
 java-1.8.0-openjdk-headless            x86_64            1:1.8.0.71-1.b15.el6_7              updates             32 M
 jpackage-utils                         noarch            1.7.5-3.14.el6                      base                60 k
 libICE                                 x86_64            1.0.6-1.el6                         base                53 k
 libSM                                  x86_64            1.2.1-2.el6                         base                37 k
 libXfont                               x86_64            1.4.5-5.el6_7                       updates            137 k
 libXtst                                x86_64            1.2.2-2.1.el6                       base                19 k
 libfontenc                             x86_64            1.0.5-2.el6                         base                24 k
 ttmkfdir                               x86_64            3.0.9-32.1.el6                      base                43 k
 tzdata-java                            noarch            2016a-2.el6                         updates            177 k
 xorg-x11-font-utils                    x86_64            1:7.2-11.el6                        base                75 k
 xorg-x11-fonts-Type1                   noarch            7.2-11.el6                          base               520 k

トランザクションの要約
=======================================================================================================================
インストール        15 パッケージ

総ダウンロード容量: 43 M
インストール済み容量: 146 M
パッケージをダウンロードしています:
(1/15): alsa-lib-1.0.22-3.el6.x86_64.rpm                                                        | 370 kB     00:00     
(2/15): giflib-4.1.6-3.1.el6.x86_64.rpm                                                         |  37 kB     00:00     
(3/15): java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64.rpm                                      | 190 kB     00:01     
(4/15): java-1.8.0-openjdk-devel-1.8.0.71-1.b15.el6_7.x86_64.rpm                                |  10 MB     01:27     
(5/15): java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64.rpm                             |  32 MB     03:50     
(6/15): jpackage-utils-1.7.5-3.14.el6.noarch.rpm                                                |  60 kB     00:00     
(7/15): libICE-1.0.6-1.el6.x86_64.rpm                                                           |  53 kB     00:00     
(8/15): libSM-1.2.1-2.el6.x86_64.rpm                                                            |  37 kB     00:00     
(9/15): libXfont-1.4.5-5.el6_7.x86_64.rpm                                                       | 137 kB     00:01     
(10/15): libXtst-1.2.2-2.1.el6.x86_64.rpm                                                       |  19 kB     00:00     
(11/15): libfontenc-1.0.5-2.el6.x86_64.rpm                                                      |  24 kB     00:00     
(12/15): ttmkfdir-3.0.9-32.1.el6.x86_64.rpm                                                     |  43 kB     00:00     
(13/15): tzdata-java-2016a-2.el6.noarch.rpm                                                     | 177 kB     00:01     
(14/15): xorg-x11-font-utils-7.2-11.el6.x86_64.rpm                                              |  75 kB     00:00     
(15/15): xorg-x11-fonts-Type1-7.2-11.el6.noarch.rpm                                             | 520 kB     00:00     
-----------------------------------------------------------------------------------------------------------------------
合計                                                                                   136 kB/s |  43 MB     05:27     
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : libfontenc-1.0.5-2.el6.x86_64                                                         1/15 
  インストールしています  : libICE-1.0.6-1.el6.x86_64                                                             2/15 
  インストールしています  : libSM-1.2.1-2.el6.x86_64                                                              3/15 
  インストールしています  : giflib-4.1.6-3.1.el6.x86_64                                                           4/15 
  インストールしています  : libXfont-1.4.5-5.el6_7.x86_64                                                         5/15 
  インストールしています  : 1:xorg-x11-font-utils-7.2-11.el6.x86_64                                               6/15 
  インストールしています  : libXtst-1.2.2-2.1.el6.x86_64                                                          7/15 
  インストールしています  : alsa-lib-1.0.22-3.el6.x86_64                                                          8/15 
  インストールしています  : tzdata-java-2016a-2.el6.noarch                                                        9/15 
  インストールしています  : jpackage-utils-1.7.5-3.14.el6.noarch                                                 10/15 
  インストールしています  : ttmkfdir-3.0.9-32.1.el6.x86_64                                                       11/15 
  インストールしています  : xorg-x11-fonts-Type1-7.2-11.el6.noarch                                               12/15 
  インストールしています  : 1:java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64                            13/15 
  インストールしています  : 1:java-1.8.0-openjdk-devel-1.8.0.71-1.b15.el6_7.x86_64                               14/15 
  インストールしています  : 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64                                     15/15 
  Verifying               : ttmkfdir-3.0.9-32.1.el6.x86_64                                                        1/15 
  Verifying               : libXfont-1.4.5-5.el6_7.x86_64                                                         2/15 
  Verifying               : jpackage-utils-1.7.5-3.14.el6.noarch                                                  3/15 
  Verifying               : libICE-1.0.6-1.el6.x86_64                                                             4/15 
  Verifying               : libfontenc-1.0.5-2.el6.x86_64                                                         5/15 
  Verifying               : tzdata-java-2016a-2.el6.noarch                                                        6/15 
  Verifying               : alsa-lib-1.0.22-3.el6.x86_64                                                          7/15 
  Verifying               : 1:xorg-x11-font-utils-7.2-11.el6.x86_64                                               8/15 
  Verifying               : 1:java-1.8.0-openjdk-devel-1.8.0.71-1.b15.el6_7.x86_64                                9/15 
  Verifying               : libSM-1.2.1-2.el6.x86_64                                                             10/15 
  Verifying               : libXtst-1.2.2-2.1.el6.x86_64                                                         11/15 
  Verifying               : xorg-x11-fonts-Type1-7.2-11.el6.noarch                                               12/15 
  Verifying               : 1:java-1.8.0-openjdk-1.8.0.71-1.b15.el6_7.x86_64                                     13/15 
  Verifying               : 1:java-1.8.0-openjdk-headless-1.8.0.71-1.b15.el6_7.x86_64                            14/15 
  Verifying               : giflib-4.1.6-3.1.el6.x86_64                                                          15/15 

インストール:
  java-1.8.0-openjdk.x86_64 1:1.8.0.71-1.b15.el6_7        java-1.8.0-openjdk-devel.x86_64 1:1.8.0.71-1.b15.el6_7       

依存性関連をインストールしました:
  alsa-lib.x86_64 0:1.0.22-3.el6                                      giflib.x86_64 0:4.1.6-3.1.el6                    
  java-1.8.0-openjdk-headless.x86_64 1:1.8.0.71-1.b15.el6_7           jpackage-utils.noarch 0:1.7.5-3.14.el6           
  libICE.x86_64 0:1.0.6-1.el6                                         libSM.x86_64 0:1.2.1-2.el6                       
  libXfont.x86_64 0:1.4.5-5.el6_7                                     libXtst.x86_64 0:1.2.2-2.1.el6                   
  libfontenc.x86_64 0:1.0.5-2.el6                                     ttmkfdir.x86_64 0:3.0.9-32.1.el6                 
  tzdata-java.noarch 0:2016a-2.el6                                    xorg-x11-font-utils.x86_64 1:7.2-11.el6          
  xorg-x11-fonts-Type1.noarch 0:7.2-11.el6                           

完了しました!

確認

$ java -version
openjdk version "1.8.0_71"
OpenJDK Runtime Environment (build 1.8.0_71-b15)
OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode)

Tomcatのインストール

残念ながらCentOS6のリポジトリにTomcat7はないので(バージョン6はある)、サードパーティリポジトリから入手する。

# ないんです><
$ yum search tomcat7
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * rpmforge: ftp.kddilabs.jp
 * updates: centosx4.centos.org
警告: 一致するものが見つかりません: tomcat7
見つかりませんでした

jpackageリポジトリの取得

Tomcat7はjava関連のパッケージを提供してるjpackageリポジトリから取得することにします。

:: JPackage Project | Home ::

rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm
http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm を取得中
エラー: 依存性の欠如:
    yum-priorities は jpackage-release-6-3.jpp6.noarch に必要とされています

yum-prioritiesを入れないとダメみたいです。

$ yum install -y yum-priorities
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * rpmforge: ftp.kddilabs.jp
 * updates: centosv4.centos.org
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package yum-plugin-priorities.noarch 0:1.1.30-30.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

============================================================================================================================
 パッケージ                             アーキテクチャ          バージョン                      リポジトリー           容量
============================================================================================================================
インストールしています:
 yum-plugin-priorities                  noarch                  1.1.30-30.el6                   base                   25 k

トランザクションの要約
============================================================================================================================
インストール         1 パッケージ

総ダウンロード容量: 25 k
インストール済み容量: 28 k
パッケージをダウンロードしています:
yum-plugin-priorities-1.1.30-30.el6.noarch.rpm                                                       |  25 kB     00:00     
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : yum-plugin-priorities-1.1.30-30.el6.noarch                                                  1/1 
  Verifying               : yum-plugin-priorities-1.1.30-30.el6.noarch                                                  1/1 

インストール:
  yum-plugin-priorities.noarch 0:1.1.30-30.el6                                                                              

完了しました!

気を取り直してリポジトリを取得。

$ rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm
http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm を取得中
準備中...                ########################################### [100%]
   1:jpackage-release       ########################################### [100%]

確認

$ cat /etc/yum.repos.d/jpackage.repo
[jpackage]
name=JPackage 6 generic
mirrorlist=http://www.jpackage.org/mirrorlist.php?dist=generic&type=free&release=6.0
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-jpackage
priority=10

インストール

念のため、tomcat7がリポジトリにあるか確認

$ yum search tomcat7
読み込んだプラグイン:fastestmirror, priorities
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * jpackage: mirrors.dotsrc.org
 * rpmforge: ftp.kddilabs.jp
 * updates: centosd6.centos.org
jpackage                                                                                             | 1.9 kB     00:00     
jpackage/primary_db                                                                                  | 1.7 MB     00:06     
238 packages excluded due to repository priority protections
=================================================== N/S Matched: tomcat7 ===================================================
tomcat7.noarch : Apache Servlet/JSP Engine, RI for Servlet 3.0/JSP 2.2 API
tomcat7-admin-webapps.noarch : The host-manager and manager web applications for Apache Tomcat
tomcat7-docs-webapp.noarch : The docs web application for Apache Tomcat
tomcat7-el-2.2-api.noarch : Expression Language v2.2 API
tomcat7-javadoc.noarch : Javadoc generated documentation for Apache Tomcat
tomcat7-jsp-2.2-api.noarch : Apache Tomcat JSP API implementation classes
tomcat7-lib.noarch : Libraries needed to run the Tomcat Web container
tomcat7-servlet-3.0-api.noarch : Apache Tomcat Servlet API implementation classes
tomcat7-webapps.noarch : The ROOT and examples web applications for Apache Tomcat

  Name and summary matches only, use "search all" for everything.

大丈夫ですね!

前置きが長くなりましたが、ようやくtomcatをインストール。

# せっかくなんで管理ページも入れておく
$ yum -y install tomcat7-webapps tomcat7-admin-webapps
読み込んだプラグイン:fastestmirror, priorities
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * jpackage: mirror.ibcp.fr
 * rpmforge: ftp.kddilabs.jp
 * updates: centosd6.centos.org
238 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
#〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(中略)〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
トランザクションの要約
============================================================================================================================
インストール        41 パッケージ

合計容量: 35 M
インストール済み容量: 91 M
パッケージをダウンロードしています:


パッケージ tomcat7-7.0.54-2.jpp6.noarch.rpm は署名されていません

。。。と思ったら、署名されていないとか言われてインストールできません。

--nogpgcheckオプションをつけて再実行。

$ yum install -y --nogpgcheck tomcat7-webapps tomcat7-admin-webapps
読み込んだプラグイン:fastestmirror, priorities
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * jpackage: mirrors.dotsrc.org
 * rpmforge: ftp.kddilabs.jp
 * updates: centosv4.centos.org
238 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package tomcat7-admin-webapps.noarch 0:7.0.54-2.jpp6 will be インストール
--> 依存性の処理をしています: tomcat7 = 7.0.54-2.jpp6 のパッケージ: tomcat7-admin-webapps-7.0.54-2.jpp6.noarch
---> Package tomcat7-webapps.noarch 0:7.0.54-2.jpp6 will be インストール
--> 依存性の処理をしています: jakarta-taglibs-standard >= 1.1 のパッケージ: tomcat7-webapps-7.0.54-2.jpp6.noarch
--> トランザクションの確認を実行しています。
---> Package apache-taglibs-standard.noarch 0:1.1.2-8.jpp6 will be インストール
--> 依存性の処理をしています: xalan-j2 >= 2.6.0 のパッケージ: apache-taglibs-standard-1.1.2-8.jpp6.noarch
--> 依存性の処理をしています: jsp_2_1_api のパッケージ: apache-taglibs-standard-1.1.2-8.jpp6.noarch
--> 依存性の処理をしています: servlet_2_5_api のパッケージ: apache-taglibs-standard-1.1.2-8.jpp6.noarch
---> Package tomcat7.noarch 0:7.0.54-2.jpp6 will be インストール
--> 依存性の処理をしています: tomcat7-lib = 7.0.54-2.jpp6 のパッケージ: tomcat7-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: apache-commons-daemon のパッケージ: tomcat7-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: /lib/lsb/init-functions のパッケージ: tomcat7-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: apache-commons-logging のパッケージ: tomcat7-7.0.54-2.jpp6.noarch
--> トランザクションの確認を実行しています。
---> Package apache-commons-daemon.noarch 1:1.0.15-1.jpp6 will be インストール
---> Package apache-commons-logging.noarch 0:1.1.3-2.jpp6 will be インストール
---> Package redhat-lsb-core.x86_64 0:4.0-7.el6.centos will be インストール
--> 依存性の処理をしています: perl-Test-Simple のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: perl-Test-Harness のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: perl-ExtUtils-MakeMaker のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: perl-CGI のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: /usr/bin/time のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: /usr/bin/pax のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: /usr/bin/patch のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: /usr/bin/msgfmt のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: /usr/bin/man のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: /usr/bin/bc のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: /usr/bin/batch のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: /usr/bin/at のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
--> 依存性の処理をしています: /bin/gettext のパッケージ: redhat-lsb-core-4.0-7.el6.centos.x86_64
---> Package tomcat6-jsp-2.1-api.noarch 0:6.0.33-2.jpp6 will be インストール
---> Package tomcat6-servlet-2.5-api.noarch 0:6.0.33-2.jpp6 will be インストール
---> Package tomcat7-lib.noarch 0:7.0.54-2.jpp6 will be インストール
--> 依存性の処理をしています: tomcat7-servlet-3.0-api = 7.0.54-2.jpp6 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: tomcat7-jsp-2.2-api = 7.0.54-2.jpp6 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: tomcat7-el-2.2-api = 7.0.54-2.jpp6 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: /usr/share/java/ecj3.jar のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: apache-commons-dbcp-tomcat5 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: apache-commons-pool-tomcat5 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: ecj3 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch
--> 依存性の処理をしています: apache-commons-collections-tomcat5 のパッケージ: tomcat7-lib-7.0.54-2.jpp6.noarch
---> Package xalan-j2.noarch 0:2.7.1-8.jbossorg_1.jpp6 will be インストール
--> 依存性の処理をしています: jaxp_parser_impl のパッケージ: xalan-j2-2.7.1-8.jbossorg_1.jpp6.noarch
--> トランザクションの確認を実行しています。
---> Package apache-commons-collections-tomcat5.noarch 0:3.2.1-6.jpp6 will be インストール
---> Package apache-commons-dbcp-tomcat5.noarch 0:1.3.0-0.r830852.4.jpp6 will be インストール
---> Package apache-commons-pool-tomcat5.noarch 0:1.5.7-1.jpp6 will be インストール
---> Package at.x86_64 0:3.1.10-48.el6 will be インストール
---> Package bc.x86_64 0:1.06.95-1.el6 will be インストール
---> Package ecj3.noarch 1:3.7-1.jpp6 will be インストール
---> Package gettext.x86_64 0:0.17-18.el6 will be インストール
--> 依存性の処理をしています: cvs のパッケージ: gettext-0.17-18.el6.x86_64
---> Package java-1.5.0-gcj.x86_64 0:1.5.0.0-29.1.el6 will be インストール
--> 依存性の処理をしています: libgcj >= 4.1.2-5 のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
--> 依存性の処理をしています: sinjdoc のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
--> 依存性の処理をしています: /usr/lib64/security/classpath.security のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
--> 依存性の処理をしています: /usr/bin/gij のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
--> 依存性の処理をしています: /usr/bin/gij のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
--> 依存性の処理をしています: /usr/bin/gcj-dbtool のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
--> 依存性の処理をしています: /usr/bin/gcj-dbtool のパッケージ: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
---> Package man.x86_64 0:1.6f-32.el6 will be インストール
--> 依存性の処理をしています: lzma のパッケージ: man-1.6f-32.el6.x86_64
---> Package patch.x86_64 0:2.6-6.el6 will be インストール
---> Package pax.x86_64 0:3.4-10.1.el6 will be インストール
---> Package perl-CGI.x86_64 0:3.51-141.el6_7.1 will be インストール
---> Package perl-ExtUtils-MakeMaker.x86_64 0:6.55-141.el6_7.1 will be インストール
--> 依存性の処理をしています: perl-devel のパッケージ: perl-ExtUtils-MakeMaker-6.55-141.el6_7.1.x86_64
---> Package perl-Test-Harness.x86_64 0:3.17-141.el6_7.1 will be インストール
---> Package perl-Test-Simple.x86_64 0:0.92-141.el6_7.1 will be インストール
---> Package time.x86_64 0:1.7-38.el6 will be インストール
---> Package tomcat7-el-2.2-api.noarch 0:7.0.54-2.jpp6 will be インストール
---> Package tomcat7-jsp-2.2-api.noarch 0:7.0.54-2.jpp6 will be インストール
---> Package tomcat7-servlet-3.0-api.noarch 0:7.0.54-2.jpp6 will be インストール
--> トランザクションの確認を実行しています。
---> Package cvs.x86_64 0:1.11.23-16.el6 will be インストール
---> Package libgcj.x86_64 0:4.4.7-16.el6 will be インストール
--> 依存性の処理をしています: zip >= 2.1 のパッケージ: libgcj-4.4.7-16.el6.x86_64
--> 依存性の処理をしています: libart_lgpl >= 2.1.0 のパッケージ: libgcj-4.4.7-16.el6.x86_64
---> Package perl-devel.x86_64 4:5.10.1-141.el6_7.1 will be インストール
--> 依存性の処理をしています: perl(ExtUtils::ParseXS) のパッケージ: 4:perl-devel-5.10.1-141.el6_7.1.x86_64
--> 依存性の処理をしています: gdbm-devel のパッケージ: 4:perl-devel-5.10.1-141.el6_7.1.x86_64
---> Package sinjdoc.x86_64 0:0.5-9.1.el6 will be インストール
--> 依存性の処理をしています: java_cup >= 0.10 のパッケージ: sinjdoc-0.5-9.1.el6.x86_64
---> Package xz-lzma-compat.x86_64 0:4.999.9-0.5.beta.20091007git.el6 will be インストール
--> 依存性の処理をしています: xz = 4.999.9-0.5.beta.20091007git.el6 のパッケージ: xz-lzma-compat-4.999.9-0.5.beta.20091007git.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package gdbm-devel.x86_64 0:1.8.0-38.el6 will be インストール
---> Package java-cup.noarch 2:0.11-0.a.3.jpp6 will be インストール
---> Package libart_lgpl.x86_64 0:2.3.20-5.1.el6 will be インストール
---> Package perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-141.el6_7.1 will be インストール
---> Package xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6 will be インストール
---> Package zip.x86_64 0:3.0-1.el6_7.1 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

============================================================================================================================
 パッケージ                                 アーキテクチャ バージョン                                リポジトリー      容量
============================================================================================================================
インストールしています:
 tomcat7-admin-webapps                      noarch         7.0.54-2.jpp6                             jpackage          41 k
 tomcat7-webapps                            noarch         7.0.54-2.jpp6                             jpackage         737 k
依存性関連でのインストールをします。:
 apache-commons-collections-tomcat5         noarch         3.2.1-6.jpp6                              jpackage          29 k
 apache-commons-daemon                      noarch         1:1.0.15-1.jpp6                           jpackage          52 k
 apache-commons-dbcp-tomcat5                noarch         1.3.0-0.r830852.4.jpp6                    jpackage         158 k
 apache-commons-logging                     noarch         1.1.3-2.jpp6                              jpackage          78 k
 apache-commons-pool-tomcat5                noarch         1.5.7-1.jpp6                              jpackage          78 k
 apache-taglibs-standard                    noarch         1.1.2-8.jpp6                              jpackage         299 k
 at                                         x86_64         3.1.10-48.el6                             base              61 k
 bc                                         x86_64         1.06.95-1.el6                             base             110 k
 cvs                                        x86_64         1.11.23-16.el6                            base             712 k
 ecj3                                       noarch         1:3.7-1.jpp6                              jpackage         1.0 M
 gdbm-devel                                 x86_64         1.8.0-38.el6                              base              25 k
 gettext                                    x86_64         0.17-18.el6                               base             1.8 M
 java-1.5.0-gcj                             x86_64         1.5.0.0-29.1.el6                          base             139 k
 java-cup                                   noarch         2:0.11-0.a.3.jpp6                         jpackage         104 k
 libart_lgpl                                x86_64         2.3.20-5.1.el6                            base              65 k
 libgcj                                     x86_64         4.4.7-16.el6                              base              19 M
 man                                        x86_64         1.6f-32.el6                               base             263 k
 patch                                      x86_64         2.6-6.el6                                 base              90 k
 pax                                        x86_64         3.4-10.1.el6                              base              69 k
 perl-CGI                                   x86_64         3.51-141.el6_7.1                          updates          209 k
 perl-ExtUtils-MakeMaker                    x86_64         6.55-141.el6_7.1                          updates          294 k
 perl-ExtUtils-ParseXS                      x86_64         1:2.2003.0-141.el6_7.1                    updates           46 k
 perl-Test-Harness                          x86_64         3.17-141.el6_7.1                          updates          232 k
 perl-Test-Simple                           x86_64         0.92-141.el6_7.1                          updates          113 k
 perl-devel                                 x86_64         4:5.10.1-141.el6_7.1                      updates          424 k
 redhat-lsb-core                            x86_64         4.0-7.el6.centos                          base              25 k
 sinjdoc                                    x86_64         0.5-9.1.el6                               base             705 k
 time                                       x86_64         1.7-38.el6                                base              26 k
 tomcat6-jsp-2.1-api                        noarch         6.0.33-2.jpp6                             jpackage          75 k
 tomcat6-servlet-2.5-api                    noarch         6.0.33-2.jpp6                             jpackage          89 k
 tomcat7                                    noarch         7.0.54-2.jpp6                             jpackage         103 k
 tomcat7-el-2.2-api                         noarch         7.0.54-2.jpp6                             jpackage          54 k
 tomcat7-jsp-2.2-api                        noarch         7.0.54-2.jpp6                             jpackage          82 k
 tomcat7-lib                                noarch         7.0.54-2.jpp6                             jpackage         4.9 M
 tomcat7-servlet-3.0-api                    noarch         7.0.54-2.jpp6                             jpackage         186 k
 xalan-j2                                   noarch         2.7.1-8.jbossorg_1.jpp6                   jpackage         3.1 M
 xz                                         x86_64         4.999.9-0.5.beta.20091007git.el6          base             137 k
 xz-lzma-compat                             x86_64         4.999.9-0.5.beta.20091007git.el6          base              16 k
 zip                                        x86_64         3.0-1.el6_7.1                             updates          259 k

トランザクションの要約
============================================================================================================================
インストール        41 パッケージ

合計容量: 35 M
インストール済み容量: 91 M
パッケージをダウンロードしています:
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
警告: RPMDB は yum 以外で変更されました。
  インストールしています  : tomcat6-servlet-2.5-api-6.0.33-2.jpp6.noarch                                               1/41 
  インストールしています  : tomcat7-servlet-3.0-api-7.0.54-2.jpp6.noarch                                               2/41 
  インストールしています  : tomcat7-jsp-2.2-api-7.0.54-2.jpp6.noarch                                                   3/41 
  インストールしています  : tomcat6-jsp-2.1-api-6.0.33-2.jpp6.noarch                                                   4/41 
  インストールしています  : cvs-1.11.23-16.el6.x86_64                                                                  5/41 
  インストールしています  : gettext-0.17-18.el6.x86_64                                                                 6/41 
  インストールしています  : bc-1.06.95-1.el6.x86_64                                                                    7/41 
  インストールしています  : patch-2.6-6.el6.x86_64                                                                     8/41 
  インストールしています  : 1:apache-commons-daemon-1.0.15-1.jpp6.noarch                                               9/41 
  インストールしています  : perl-CGI-3.51-141.el6_7.1.x86_64                                                          10/41 
  インストールしています  : apache-commons-collections-tomcat5-3.2.1-6.jpp6.noarch                                    11/41 
  インストールしています  : apache-commons-logging-1.1.3-2.jpp6.noarch                                                12/41 
  インストールしています  : 2:java-cup-0.11-0.a.3.jpp6.noarch                                                         13/41 
  インストールしています  : tomcat7-el-2.2-api-7.0.54-2.jpp6.noarch                                                   14/41 
  インストールしています  : zip-3.0-1.el6_7.1.x86_64                                                                  15/41 
  インストールしています  : apache-commons-dbcp-tomcat5-1.3.0-0.r830852.4.jpp6.noarch                                 16/41 
  インストールしています  : apache-commons-pool-tomcat5-1.5.7-1.jpp6.noarch                                           17/41 
  インストールしています  : xz-4.999.9-0.5.beta.20091007git.el6.x86_64                                                18/41 
  インストールしています  : xz-lzma-compat-4.999.9-0.5.beta.20091007git.el6.x86_64                                    19/41 
  インストールしています  : man-1.6f-32.el6.x86_64                                                                    20/41 
  インストールしています  : libart_lgpl-2.3.20-5.1.el6.x86_64                                                         21/41 
  インストールしています  : libgcj-4.4.7-16.el6.x86_64                                                                22/41 
  インストールしています  : java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64                                                    23/41 
  インストールしています  : sinjdoc-0.5-9.1.el6.x86_64                                                                24/41 
  インストールしています  : 1:ecj3-3.7-1.jpp6.noarch                                                                  25/41 
  インストールしています  : tomcat7-lib-7.0.54-2.jpp6.noarch                                                          26/41 
  インストールしています  : xalan-j2-2.7.1-8.jbossorg_1.jpp6.noarch                                                   27/41 
  インストールしています  : apache-taglibs-standard-1.1.2-8.jpp6.noarch                                               28/41 
  インストールしています  : pax-3.4-10.1.el6.x86_64                                                                   29/41 
  インストールしています  : gdbm-devel-1.8.0-38.el6.x86_64                                                            30/41 
  インストールしています  : 1:perl-ExtUtils-ParseXS-2.2003.0-141.el6_7.1.x86_64                                       31/41 
  インストールしています  : perl-ExtUtils-MakeMaker-6.55-141.el6_7.1.x86_64                                           32/41 
  インストールしています  : 4:perl-devel-5.10.1-141.el6_7.1.x86_64                                                    33/41 
  インストールしています  : perl-Test-Harness-3.17-141.el6_7.1.x86_64                                                 34/41 
  インストールしています  : perl-Test-Simple-0.92-141.el6_7.1.x86_64                                                  35/41 
  インストールしています  : at-3.1.10-48.el6.x86_64                                                                   36/41 
  インストールしています  : time-1.7-38.el6.x86_64                                                                    37/41 
  インストールしています  : redhat-lsb-core-4.0-7.el6.centos.x86_64                                                   38/41 
  インストールしています  : tomcat7-7.0.54-2.jpp6.noarch                                                              39/41 
  インストールしています  : tomcat7-admin-webapps-7.0.54-2.jpp6.noarch                                                40/41 
  インストールしています  : tomcat7-webapps-7.0.54-2.jpp6.noarch                                                      41/41 
  Verifying               : time-1.7-38.el6.x86_64                                                                     1/41 
  Verifying               : at-3.1.10-48.el6.x86_64                                                                    2/41 
  Verifying               : tomcat7-7.0.54-2.jpp6.noarch                                                               3/41 
  Verifying               : redhat-lsb-core-4.0-7.el6.centos.x86_64                                                    4/41 
  Verifying               : gdbm-devel-1.8.0-38.el6.x86_64                                                             5/41 
  Verifying               : 4:perl-devel-5.10.1-141.el6_7.1.x86_64                                                     6/41 
  Verifying               : pax-3.4-10.1.el6.x86_64                                                                    7/41 
  Verifying               : tomcat7-jsp-2.2-api-7.0.54-2.jpp6.noarch                                                   8/41 
  Verifying               : tomcat7-servlet-3.0-api-7.0.54-2.jpp6.noarch                                               9/41 
  Verifying               : libart_lgpl-2.3.20-5.1.el6.x86_64                                                         10/41 
  Verifying               : xz-4.999.9-0.5.beta.20091007git.el6.x86_64                                                11/41 
  Verifying               : sinjdoc-0.5-9.1.el6.x86_64                                                                12/41 
  Verifying               : tomcat7-admin-webapps-7.0.54-2.jpp6.noarch                                                13/41 
  Verifying               : tomcat6-servlet-2.5-api-6.0.33-2.jpp6.noarch                                              14/41 
  Verifying               : apache-commons-pool-tomcat5-1.5.7-1.jpp6.noarch                                           15/41 
  Verifying               : 1:ecj3-3.7-1.jpp6.noarch                                                                  16/41 
  Verifying               : man-1.6f-32.el6.x86_64                                                                    17/41 
  Verifying               : perl-Test-Simple-0.92-141.el6_7.1.x86_64                                                  18/41 
  Verifying               : apache-commons-dbcp-tomcat5-1.3.0-0.r830852.4.jpp6.noarch                                 19/41 
  Verifying               : libgcj-4.4.7-16.el6.x86_64                                                                20/41 
  Verifying               : zip-3.0-1.el6_7.1.x86_64                                                                  21/41 
  Verifying               : java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64                                                    22/41 
  Verifying               : tomcat7-el-2.2-api-7.0.54-2.jpp6.noarch                                                   23/41 
  Verifying               : tomcat6-jsp-2.1-api-6.0.33-2.jpp6.noarch                                                  24/41 
  Verifying               : xz-lzma-compat-4.999.9-0.5.beta.20091007git.el6.x86_64                                    25/41 
  Verifying               : perl-ExtUtils-MakeMaker-6.55-141.el6_7.1.x86_64                                           26/41 
  Verifying               : 2:java-cup-0.11-0.a.3.jpp6.noarch                                                         27/41 
  Verifying               : apache-commons-logging-1.1.3-2.jpp6.noarch                                                28/41 
  Verifying               : apache-commons-collections-tomcat5-3.2.1-6.jpp6.noarch                                    29/41 
  Verifying               : tomcat7-lib-7.0.54-2.jpp6.noarch                                                          30/41 
  Verifying               : perl-CGI-3.51-141.el6_7.1.x86_64                                                          31/41 
  Verifying               : gettext-0.17-18.el6.x86_64                                                                32/41 
  Verifying               : apache-taglibs-standard-1.1.2-8.jpp6.noarch                                               33/41 
  Verifying               : 1:apache-commons-daemon-1.0.15-1.jpp6.noarch                                              34/41 
  Verifying               : 1:perl-ExtUtils-ParseXS-2.2003.0-141.el6_7.1.x86_64                                       35/41 
  Verifying               : xalan-j2-2.7.1-8.jbossorg_1.jpp6.noarch                                                   36/41 
  Verifying               : patch-2.6-6.el6.x86_64                                                                    37/41 
  Verifying               : bc-1.06.95-1.el6.x86_64                                                                   38/41 
  Verifying               : cvs-1.11.23-16.el6.x86_64                                                                 39/41 
  Verifying               : tomcat7-webapps-7.0.54-2.jpp6.noarch                                                      40/41 
  Verifying               : perl-Test-Harness-3.17-141.el6_7.1.x86_64                                                 41/41 

インストール:
  tomcat7-admin-webapps.noarch 0:7.0.54-2.jpp6                    tomcat7-webapps.noarch 0:7.0.54-2.jpp6                   

依存性関連をインストールしました:
  apache-commons-collections-tomcat5.noarch 0:3.2.1-6.jpp6       apache-commons-daemon.noarch 1:1.0.15-1.jpp6               
  apache-commons-dbcp-tomcat5.noarch 0:1.3.0-0.r830852.4.jpp6    apache-commons-logging.noarch 0:1.1.3-2.jpp6               
  apache-commons-pool-tomcat5.noarch 0:1.5.7-1.jpp6              apache-taglibs-standard.noarch 0:1.1.2-8.jpp6              
  at.x86_64 0:3.1.10-48.el6                                      bc.x86_64 0:1.06.95-1.el6                                  
  cvs.x86_64 0:1.11.23-16.el6                                    ecj3.noarch 1:3.7-1.jpp6                                   
  gdbm-devel.x86_64 0:1.8.0-38.el6                               gettext.x86_64 0:0.17-18.el6                               
  java-1.5.0-gcj.x86_64 0:1.5.0.0-29.1.el6                       java-cup.noarch 2:0.11-0.a.3.jpp6                          
  libart_lgpl.x86_64 0:2.3.20-5.1.el6                            libgcj.x86_64 0:4.4.7-16.el6                               
  man.x86_64 0:1.6f-32.el6                                       patch.x86_64 0:2.6-6.el6                                   
  pax.x86_64 0:3.4-10.1.el6                                      perl-CGI.x86_64 0:3.51-141.el6_7.1                         
  perl-ExtUtils-MakeMaker.x86_64 0:6.55-141.el6_7.1              perl-ExtUtils-ParseXS.x86_64 1:2.2003.0-141.el6_7.1        
  perl-Test-Harness.x86_64 0:3.17-141.el6_7.1                    perl-Test-Simple.x86_64 0:0.92-141.el6_7.1                 
  perl-devel.x86_64 4:5.10.1-141.el6_7.1                         redhat-lsb-core.x86_64 0:4.0-7.el6.centos                  
  sinjdoc.x86_64 0:0.5-9.1.el6                                   time.x86_64 0:1.7-38.el6                                   
  tomcat6-jsp-2.1-api.noarch 0:6.0.33-2.jpp6                     tomcat6-servlet-2.5-api.noarch 0:6.0.33-2.jpp6             
  tomcat7.noarch 0:7.0.54-2.jpp6                                 tomcat7-el-2.2-api.noarch 0:7.0.54-2.jpp6                  
  tomcat7-jsp-2.2-api.noarch 0:7.0.54-2.jpp6                     tomcat7-lib.noarch 0:7.0.54-2.jpp6                         
  tomcat7-servlet-3.0-api.noarch 0:7.0.54-2.jpp6                 xalan-j2.noarch 0:2.7.1-8.jbossorg_1.jpp6                  
  xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6                   xz-lzma-compat.x86_64 0:4.999.9-0.5.beta.20091007git.el6   
  zip.x86_64 0:3.0-1.el6_7.1                                    

完了しました!

今度はうまくインストールされました。

Apacheとの連携

↓ちなみにApacheのインストールついては別記事上げてます

【CentOS6】Apache2.2インストール&設定 - 忘備録

モジュールの追加

/etc/httpd/conf/httpd.conf

# 無効(コメントアウト)になっていないことを確認
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

プロキシ設定

まずはApache側。

httpd.confに書いても良いみたいですが、自分はバーチャルホストを設定しているため、そちらの設定ファイルに記述しました。

/etc/httpd/conf.d/vhosts/example.conf

<VirtualHost *:80>
  ServerName example.co.jp
#〜〜〜〜〜〜(中略)〜〜〜〜〜〜〜〜
  # サーバのルートに対する接続を、8009ポートに転送するという設定
  <Location />
     ProxyPass ajp://localhost:8009/
  </Location>
</VirtualHost>

続いてTomcat側。

/etc/tomcat7/server.xml

    <!-- 無効(コメントアウト)になっていないこと確認 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Tomcatの起動と自動起動設定

# 起動
$ service tomcat7 start
Starting tomcat7:                                          [  OK  ]
# 自動起動設定の確認
$ chkconfig | grep tomcat7
tomcat7         0:off  1:off  2:off  3:off  4:off  5:off  6:off
# 自動起動をON
$ chkconfig tomcat7 on
# 確認
$ chkconfig | grep tomcat7
tomcat7         0:off  1:off  2:on   3:on   4:on   5:on   6:off

本来ここまでくれば、tomcatにアクセスできるのですが、あることをしないと今回の手順ではコンパイルエラーで動きません。

/var/log/tomcat7/catalina.out

3 03, 2016 11:37:27 午後 org.apache.jasper.compiler.JDTCompiler$1 findType
重大: Compilation error
org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
    at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(Unknown Source)
    at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:231)
    at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:187)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromVariantTypeSignature(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeArgumentsFromSignature(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getTypeFromTypeSignature(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethod(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.createMethods(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.cachePartsFrom(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.createBinaryTypeFrom(Unknown Source)
    at org.eclipse.jdt.internal.compiler.Compiler.accept(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getPackage(Unknown Source)
    at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.internalResolveLeafType(Unknown Source)
    at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.internalResolveType(Unknown Source)
    at org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference.resolveType(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.resolveTypeFor(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.fields(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding.faultInTypesForFieldsAndMethods(Unknown Source)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(Unknown Source)
    at org.eclipse.jdt.internal.compiler.Compiler.process(Unknown Source)
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Unknown Source)
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:466)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:657)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:193)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

調べてるうちに↓の記事に行き着き

CentOS6にJDK8・Tomcat7の環境を構築した時に詰まった話 | hacknote

いろいろ調べてみたところ、 Tomcat 7.0.54ではecjのバージョンを4系にする必要があるようでした。

出ているエラーの内容は違うようでしたが、原因は同じみたいで上記サイトを参考に対応したら動きました。

対応例

$ cd  /usr/share/java/tomcat7
$  ls -la | grep ecj
lrwxrwxrwx. 1 root root      24  33 21:45 2016 [ecj3].jar -> /usr/share/java/ecj3.jar
-rw-r--r--. 1 root root 1155139  730 16:59 2014 ecj3-7.0.54.jar
lrwxrwxrwx. 1 root root      15  33 21:45 2016 ecj3.jar -> ecj3-7.0.54.jar
# 消すのは怖いので古いecjを退避
$ mkdir bk
$ mv [ecj3].jar bk
$ mv ecj3-7.0.54.jar bk
$ mv ecj3.jar  bk
# ecj4.4を入手
$ wget http://central.maven.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.jar
--2016-03-03 23:27:15--  http://central.maven.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.jar
central.maven.org をDNSに問いあわせています... 23.235.47.209
central.maven.org|23.235.47.209|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 2298872 (2.2M) [application/java-archive]
`ecj-4.4.jar' に保存中

100%[==================================================================================>] 2,298,872    208K/s 時間 9.3s    

2016-03-03 23:27:25 (242 KB/s) - `ecj-4.4.jar' へ保存完了 [2298872/2298872]

tomcatを再起動してサーバにアクセスしてみます。

f:id:mktktmr:20160309062427p:plain

やっとこうまくいきました。

たぶん無理くりtomcat7入れたせいで依存関係が正しく解決できてないみたいです。

起動スクリプトのバージョン確認もうまくいきませんでした。

$ service tomcat7 version
Error: Could not find or load main class org.apache.catalina.util.ServerInfo

とりあえず動いたので、これについては後日調査します。

Tomcatマネージャの設定

Tomcatの管理ページへの認証設定を記述。

/etc/tomcat7/tomcat-users.xml

<tomcat-users>
  <role rolename="manager-gui"/>
  <user username="tomcat" password="password" roles="manager-gui"/>
</tomcat-users>

http://domain/manager/ にアクセスしてみます。

f:id:mktktmr:20160309062044p:plain

tomcat-users.xmlに設定したusernameとpasswordで認証をします。

f:id:mktktmr:20160309061503p:plain

管理ページにアクセスできます。

管理ページではGUIベースでデプロイやステータスのチェックなどができます。

ロールについて

Tomcat7管理ページのロールには以下のものがあります。

ロール 概要
manager-gui allows access to the HTML GUI and the status pages
manager-status allows access to the status pages only
manager-script allows access to the text interface and the status pages
manager-jmx allows access to the JMX proxy and the status pages
admin-gui allows access to the HTML GUI
admin-script allows access to the text interface

参考

ベリーキュート Blog » Blog Archive » Tomcat 7 インストールと設定

Apache側の設定 - Tomcatとの連携(mod_proxy_ajp) - Apache入門

CentOS6にJDK8・Tomcat7の環境を構築した時に詰まった話 | hacknote

:: JPackage Project | Home ::

Apache側の設定 - Tomcatとの連携(mod_proxy_ajp) - Apache入門

インフラエンジニアのメモ : Tomcat7のManager(管理画面)にアクセスできない

【CentOS6】ログ監視ツール

logwatch

logwatchは定期的にログのサマリーをメールで送ってくれるツールです。

導入することで、日々大量に吐かれるログから必要な情報だけをサマリーしてくれるため、ログの監視がぐっと楽になると思います。

インストール

$  yum search logwatch
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink                                                                                                                                       | 4.7 kB     00:00     
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * rpmforge: ftp.kddilabs.jp
 * updates: ftp.iij.ad.jp
base                                                                                                                                                | 3.7 kB     00:00     
epel                                                                                                                                                | 4.3 kB     00:00     
epel/primary_db                                                                                                                                     | 5.8 MB     00:03     
extras                                                                                                                                              | 3.4 kB     00:00     
rpmforge                                                                                                                                            | 1.9 kB     00:00     
updates                                                                                                                                             | 3.4 kB     00:00     
========================================================================== N/S Matched: logwatch ==========================================================================
dmraid-events-logwatch.x86_64 : dmraid logwatch-based email reporting
hostapd-logwatch.x86_64 : Logwatch scripts for hostapd
fwlogwatch.x86_64 : Firewall log analyzer, report generator and realtime response agent
logwatch.noarch : A log file analysis program

  Name and summary matches only, use "search all" for everything.
$ yum install -y log watch
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: mirrors.hustunique.com
 * extras: ftp.iij.ad.jp
 * rpmforge: ftp.kddilabs.jp
 * updates: ftp.iij.ad.jp
パッケージ log は利用できません。
パッケージ watch は利用できません。
エラー: 何もしません
$ yum install -y logwatch
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: mirrors.hustunique.com
 * extras: ftp.iij.ad.jp
 * rpmforge: ftp.kddilabs.jp
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package logwatch.noarch 0:7.3.6-52.el6 will be インストール
--> 依存性の処理をしています: perl(strict) のパッケージ: logwatch-7.3.6-52.el6.noarch
--> 依存性の処理をしています: perl(POSIX) のパッケージ: logwatch-7.3.6-52.el6.noarch
--> 依存性の処理をしています: perl(Getopt::Long) のパッケージ: logwatch-7.3.6-52.el6.noarch
--> 依存性の処理をしています: perl(File::Temp) のパッケージ: logwatch-7.3.6-52.el6.noarch
--> 依存性の処理をしています: perl(Exporter) のパッケージ: logwatch-7.3.6-52.el6.noarch
--> 依存性の処理をしています: perl(Date::Manip) のパッケージ: logwatch-7.3.6-52.el6.noarch
--> 依存性の処理をしています: /usr/bin/perl のパッケージ: logwatch-7.3.6-52.el6.noarch
--> トランザクションの確認を実行しています。
---> Package perl.x86_64 4:5.10.1-141.el6_7.1 will be インストール
--> 依存性の処理をしています: perl-libs = 4:5.10.1-141.el6_7.1 のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64
--> 依存性の処理をしています: perl-libs のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64
--> 依存性の処理をしています: perl(version) のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64
--> 依存性の処理をしています: perl(Pod::Simple) のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64
--> 依存性の処理をしています: perl(Module::Pluggable) のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64
--> 依存性の処理をしています: libperl.so()(64bit) のパッケージ: 4:perl-5.10.1-141.el6_7.1.x86_64
---> Package perl-Date-Manip.noarch 0:6.24-1.el6 will be インストール
--> 依存性の処理をしています: perl(YAML::Syck) のパッケージ: perl-Date-Manip-6.24-1.el6.noarch
--> トランザクションの確認を実行しています。
---> Package perl-Module-Pluggable.x86_64 1:3.90-141.el6_7.1 will be インストール
---> Package perl-Pod-Simple.x86_64 1:3.13-141.el6_7.1 will be インストール
--> 依存性の処理をしています: perl(Pod::Escapes) >= 1.04 のパッケージ: 1:perl-Pod-Simple-3.13-141.el6_7.1.x86_64
---> Package perl-YAML-Syck.x86_64 0:1.07-4.el6 will be インストール
---> Package perl-libs.x86_64 4:5.10.1-141.el6_7.1 will be インストール
---> Package perl-version.x86_64 3:0.77-141.el6_7.1 will be インストール
--> トランザクションの確認を実行しています。
---> Package perl-Pod-Escapes.x86_64 1:1.04-141.el6_7.1 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

===========================================================================================================================================================================
 パッケージ                                      アーキテクチャ                   バージョン                                       リポジトリー                       容量
===========================================================================================================================================================================
インストールしています:
 logwatch                                        noarch                           7.3.6-52.el6                                     base                              302 k
依存性関連でのインストールをします。:
 perl                                            x86_64                           4:5.10.1-141.el6_7.1                             updates                            10 M
 perl-Date-Manip                                 noarch                           6.24-1.el6                                       base                              1.4 M
 perl-Module-Pluggable                           x86_64                           1:3.90-141.el6_7.1                               updates                            40 k
 perl-Pod-Escapes                                x86_64                           1:1.04-141.el6_7.1                               updates                            33 k
 perl-Pod-Simple                                 x86_64                           1:3.13-141.el6_7.1                               updates                           213 k
 perl-YAML-Syck                                  x86_64                           1.07-4.el6                                       base                               75 k
 perl-libs                                       x86_64                           4:5.10.1-141.el6_7.1                             updates                           579 k
 perl-version                                    x86_64                           3:0.77-141.el6_7.1                               updates                            52 k

トランザクションの要約
===========================================================================================================================================================================
インストール         9 パッケージ

総ダウンロード容量: 13 M
インストール済み容量: 47 M
パッケージをダウンロードしています:
(1/9): logwatch-7.3.6-52.el6.noarch.rpm                                                                                                             | 302 kB     00:00     
(2/9): perl-5.10.1-141.el6_7.1.x86_64.rpm                                                                                                           |  10 MB     00:03     
(3/9): perl-Date-Manip-6.24-1.el6.noarch.rpm                                                                                                        | 1.4 MB     00:01     
(4/9): perl-Module-Pluggable-3.90-141.el6_7.1.x86_64.rpm                                                                                            |  40 kB     00:00     
(5/9): perl-Pod-Escapes-1.04-141.el6_7.1.x86_64.rpm                                                                                                 |  33 kB     00:00     
(6/9): perl-Pod-Simple-3.13-141.el6_7.1.x86_64.rpm                                                                                                  | 213 kB     00:00     
(7/9): perl-YAML-Syck-1.07-4.el6.x86_64.rpm                                                                                                         |  75 kB     00:00     
(8/9): perl-libs-5.10.1-141.el6_7.1.x86_64.rpm                                                                                                      | 579 kB     00:00     
(9/9): perl-version-0.77-141.el6_7.1.x86_64.rpm                                                                                                     |  52 kB     00:00     
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                       1.4 MB/s |  13 MB     00:09     
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : 1:perl-Pod-Escapes-1.04-141.el6_7.1.x86_64                                                                                                 1/9 
  インストールしています  : 1:perl-Module-Pluggable-3.90-141.el6_7.1.x86_64                                                                                            2/9 
  インストールしています  : 3:perl-version-0.77-141.el6_7.1.x86_64                                                                                                     3/9 
  インストールしています  : 4:perl-libs-5.10.1-141.el6_7.1.x86_64                                                                                                      4/9 
  インストールしています  : 1:perl-Pod-Simple-3.13-141.el6_7.1.x86_64                                                                                                  5/9 
  インストールしています  : 4:perl-5.10.1-141.el6_7.1.x86_64                                                                                                           6/9 
  インストールしています  : perl-YAML-Syck-1.07-4.el6.x86_64                                                                                                           7/9 
  インストールしています  : perl-Date-Manip-6.24-1.el6.noarch                                                                                                          8/9 
  インストールしています  : logwatch-7.3.6-52.el6.noarch                                                                                                               9/9 
  Verifying               : 1:perl-Pod-Simple-3.13-141.el6_7.1.x86_64                                                                                                  1/9 
  Verifying               : 1:perl-Pod-Escapes-1.04-141.el6_7.1.x86_64                                                                                                 2/9 
  Verifying               : perl-Date-Manip-6.24-1.el6.noarch                                                                                                          3/9 
  Verifying               : logwatch-7.3.6-52.el6.noarch                                                                                                               4/9 
  Verifying               : 1:perl-Module-Pluggable-3.90-141.el6_7.1.x86_64                                                                                            5/9 
  Verifying               : perl-YAML-Syck-1.07-4.el6.x86_64                                                                                                           6/9 
  Verifying               : 3:perl-version-0.77-141.el6_7.1.x86_64                                                                                                     7/9 
  Verifying               : 4:perl-libs-5.10.1-141.el6_7.1.x86_64                                                                                                      8/9 
  Verifying               : 4:perl-5.10.1-141.el6_7.1.x86_64                                                                                                           9/9 

インストール:
  logwatch.noarch 0:7.3.6-52.el6                                                                                                                                           

依存性関連をインストールしました:
  perl.x86_64 4:5.10.1-141.el6_7.1          perl-Date-Manip.noarch 0:6.24-1.el6 perl-Module-Pluggable.x86_64 1:3.90-141.el6_7.1 perl-Pod-Escapes.x86_64 1:1.04-141.el6_7.1
  perl-Pod-Simple.x86_64 1:3.13-141.el6_7.1 perl-YAML-Syck.x86_64 0:1.07-4.el6  perl-libs.x86_64 4:5.10.1-141.el6_7.1           perl-version.x86_64 3:0.77-141.el6_7.1    

完了しました!

設定

デフォルトの設定ファイルは

/usr/share/logwatch/default.conf/logwatch.conf

で、独自に設定を変えたい場合は以下ファイルを変更する。

/etc/logwatch/conf/logwatch.conf

ちなみに、デフォルトから変更したい項目だけ記述しておけば良いです。

自分の場合は以下を変えました。

# デフォルトだとrootだが、gmail宛に飛ばすように変更
MailTo = sample@gmail.com

# デフォルトのメールクライアントのsendmailからmailxに変更
mailer = "mailx -t"

基本的な運用はcronでの日次実行(logwatchインストール時に/etc/cron.daily/0logwatchが作成される)になる。

なお、テストなどのために即時実行したい場合はlogwatchコマンドを叩けばよい。

$ logwatch 
You have old files in your logwatch tmpdir (/var/cache/logwatch):
    logwatch.dbppTw6E
    logwatch.sAUaElla
The directories listed above were most likely created by a
logwatch run that failed to complete successfully.  If so, you
may delete these directories.

Ignoring header field "MIME-Version: 1.0"
Ignoring header field "Content-Transfer-Encoding: 7bit"
Ignoring header field "Content-Type: text/plain; charset="iso-8859-1""

そして、以下のようなサマリがメールで飛んでくる。

 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Fri Feb 26 03:27:03 2016
        Date Range Processed: yesterday
                              ( 2016-Feb-25 )
                              Period is day.
      Detail Level of Output: 0
              Type of Output: unformatted
           Logfiles for Host: localhost.localdomain
  ################################################################## 
 
 --------------------- clam-update Begin ------------------------ 

 Last ClamAV update process started at Thu Feb 25 03:43:01 2016
 
 Last Status:
    main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
    Downloading daily-21407.cdiff [100%]
    Downloading daily-21408.cdiff [100%]
    Downloading daily-21409.cdiff [100%]
    Downloading daily-21410.cdiff [100%]
    daily.cld updated (version: 21410, sigs: 1854558, f-level: 63, builder: neo)
    bytecode.cvd is up to date (version: 271, sigs: 47, f-level: 63, builder: anvilleg)
    Database updated (4278830 signatures) from database.clamav.net (IP: 27.96.54.66)
 
 ---------------------- clam-update End ------------------------- 

 
 --------------------- pam_unix Begin ------------------------ 

 sshd:
    Authentication Failures:
       unknown (xxxxxxxxxxx.xxx.ftth.sample.com): 1 Time(s)
    Invalid Users:
       Unknown Account: 1 Time(s)
 
 su-l:
    Sessions Opened:
       hoge -> root: 5 Time(s)
 
 
 ---------------------- pam_unix End ------------------------- 

 
 --------------------- Postfix Begin ------------------------ 

    5.380M  Bytes accepted                         5,641,489
    8.114K  Bytes delivered                            8,309
 ========   ================================================
 
       22   Accepted                                 100.00%
 --------   ------------------------------------------------
       22   Total                                    100.00%
 ========   ================================================
 
        1   Removed from queue    
        3   Delivered             
       21   Deferred              
      310   Deferrals             
 
     1220   Connection failure (outbound) 
 
 
 
 ---------------------- Postfix End ------------------------- 

 
 --------------------- SSHD Begin ------------------------ 

 
 Illegal users from:
    XXX.XXX.XXX.XXX (xxxxxxxxxxx.xxx.ftth.sample.com): 1 time
 
 Users logging in through sshd:
    hoge:
       XXX.XXX.XXX.XXX (xxxxxxxxxxx.xxx.ftth.sample.com): 4 times
       XXX.XXX.XXX.XXX (xxxxxxxxxxx.xxx.ftth.sample.com): 1 time
 
 
 Received disconnect:
    11: disconnected by user : 5 Time(s)
 
 ---------------------- SSHD End ------------------------- 

 
 --------------------- yum Begin ------------------------ 

 
 Packages Installed:
    1:perl-Pod-Simple-3.13-141.el6_7.1.x86_64
    4:perl-libs-5.10.1-141.el6_7.1.x86_64
    perl-YAML-Syck-1.07-4.el6.x86_64
    1:perl-Module-Pluggable-3.90-141.el6_7.1.x86_64
    logwatch-7.3.6-52.el6.noarch
    1:perl-Pod-Escapes-1.04-141.el6_7.1.x86_64
    4:perl-5.10.1-141.el6_7.1.x86_64
    perl-Date-Manip-6.24-1.el6.noarch
    3:perl-version-0.77-141.el6_7.1.x86_64
 
 ---------------------- yum End ------------------------- 

 
 --------------------- Disk Space Begin ------------------------ 

 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/VolGroup-lv_root
                        50G  1.3G   46G   3% /
 /dev/sda1             477M   57M  395M  13% /boot
 /dev/mapper/VolGroup-lv_home
                       240G   60M  228G   1% /home
 
 
 ---------------------- Disk Space End ------------------------- 

 
 ###################### Logwatch End ######################### 

特に、Linuxのpam認証に関する「pam_unix」やssh認証に関する「SSHD」セキュリティに関する重要な情報なので、有用ですね。

参考

第29回 「logwatch によるログの収集」

Logwatchでサーバ監視レポート - エーエイチレフ linuxサーバー技術情報

swatch

任意のログをリアルタイムにチェックしたり、メッセージのパターンを検知してメールを投げたりできるツールです。

インストール

前提として、EPELリポジトリの登録が必要です。

【CentOS6】サードパーティリポジトリの追加 - 忘備録

yum install -y swatch
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
epel/metalink                                                                          | 5.1 kB     00:00     
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * rpmforge: ftp.kddilabs.jp
 * updates: ftp.iij.ad.jp
base                                                                                   | 3.7 kB     00:00     
epel                                                                                   | 4.3 kB     00:00     
extras                                                                                 | 3.4 kB     00:00     
rpmforge                                                                               | 1.9 kB     00:00     
updates                                                                                | 3.4 kB     00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package swatch.noarch 0:3.2.3-7.el6 will be インストール
--> 依存性の処理をしています: perl(Time::HiRes) のパッケージ: swatch-3.2.3-7.el6.noarch
--> 依存性の処理をしています: perl(Date::Parse) のパッケージ: swatch-3.2.3-7.el6.noarch
--> 依存性の処理をしています: perl(Date::Format) のパッケージ: swatch-3.2.3-7.el6.noarch
--> 依存性の処理をしています: perl(Date::Calc) のパッケージ: swatch-3.2.3-7.el6.noarch
--> トランザクションの確認を実行しています。
---> Package perl-Date-Calc.noarch 0:6.3-2.el6 will be インストール
--> 依存性の処理をしています: perl(Bit::Vector) >= 7.1 のパッケージ: perl-Date-Calc-6.3-2.el6.noarch
--> 依存性の処理をしています: perl(Carp::Clan) のパッケージ: perl-Date-Calc-6.3-2.el6.noarch
--> 依存性の処理をしています: perl(Bit::Vector) のパッケージ: perl-Date-Calc-6.3-2.el6.noarch
---> Package perl-Time-HiRes.x86_64 4:1.9721-141.el6_7.1 will be インストール
---> Package perl-TimeDate.noarch 1:1.16-13.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package perl-Bit-Vector.x86_64 0:7.1-2.el6 will be インストール
---> Package perl-Carp-Clan.noarch 0:6.03-2.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

==============================================================================================================
 パッケージ                  アーキテクチャ     バージョン                          リポジトリー         容量
==============================================================================================================
インストールしています:
 swatch                      noarch             3.2.3-7.el6                         epel                 49 k
依存性関連でのインストールをします。:
 perl-Bit-Vector             x86_64             7.1-2.el6                           base                169 k
 perl-Carp-Clan              noarch             6.03-2.el6                          base                 25 k
 perl-Date-Calc              noarch             6.3-2.el6                           base                210 k
 perl-Time-HiRes             x86_64             4:1.9721-141.el6_7.1                updates              49 k
 perl-TimeDate               noarch             1:1.16-13.el6                       base                 37 k

トランザクションの要約
==============================================================================================================
インストール         6 パッケージ

総ダウンロード容量: 539 k
インストール済み容量: 1.4 M
パッケージをダウンロードしています:
(1/6): perl-Bit-Vector-7.1-2.el6.x86_64.rpm                                            | 169 kB     00:00     
(2/6): perl-Carp-Clan-6.03-2.el6.noarch.rpm                                            |  25 kB     00:00     
(3/6): perl-Date-Calc-6.3-2.el6.noarch.rpm                                             | 210 kB     00:00     
(4/6): perl-Time-HiRes-1.9721-141.el6_7.1.x86_64.rpm                                   |  49 kB     00:00     
(5/6): perl-TimeDate-1.16-13.el6.noarch.rpm                                            |  37 kB     00:01     
(6/6): swatch-3.2.3-7.el6.noarch.rpm                                                   |  49 kB     00:00     
--------------------------------------------------------------------------------------------------------------
合計                                                                          144 kB/s | 539 kB     00:03     
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : perl-Carp-Clan-6.03-2.el6.noarch                                              1/6 
  インストールしています  : perl-Bit-Vector-7.1-2.el6.x86_64                                              2/6 
  インストールしています  : perl-Date-Calc-6.3-2.el6.noarch                                               3/6 
  インストールしています  : 4:perl-Time-HiRes-1.9721-141.el6_7.1.x86_64                                   4/6 
  インストールしています  : 1:perl-TimeDate-1.16-13.el6.noarch                                            5/6 
  インストールしています  : swatch-3.2.3-7.el6.noarch                                                     6/6 
  Verifying               : perl-Carp-Clan-6.03-2.el6.noarch                                              1/6 
  Verifying               : perl-Bit-Vector-7.1-2.el6.x86_64                                              2/6 
  Verifying               : perl-Date-Calc-6.3-2.el6.noarch                                               3/6 
  Verifying               : swatch-3.2.3-7.el6.noarch                                                     4/6 
  Verifying               : 1:perl-TimeDate-1.16-13.el6.noarch                                            5/6 
  Verifying               : 4:perl-Time-HiRes-1.9721-141.el6_7.1.x86_64                                   6/6 

インストール:
  swatch.noarch 0:3.2.3-7.el6                                                                                 

依存性関連をインストールしました:
  perl-Bit-Vector.x86_64 0:7.1-2.el6                perl-Carp-Clan.noarch 0:6.03-2.el6                        
  perl-Date-Calc.noarch 0:6.3-2.el6                 perl-Time-HiRes.x86_64 4:1.9721-141.el6_7.1               
  perl-TimeDate.noarch 1:1.16-13.el6               

完了しました!

デーモン起動スクリプト

毎回手動でswatchを起動するのは手間なので、起動スクリプトを作成します。

[2016.02.29] スクリプトに不具合があったので修正しました。詳しくはソースのコメントを参照

/etc/rc.d/init.d/swatch

#!/bin/sh
#
# swatch
#
# chkconfig: 2345 90 35
# description: swatch start/stop script
#
. /etc/rc.d/init.d/functions

#[ ! -d /var/log/swatch ] && mkdir -p /var/log/swatch

PATH=/bin:/sbin:/usr/bin:/usr/sbin

start() {
  ls /var/run/swatch_*.pid 1> /dev/null 2>&1
  if [ $? -ne 0 ]; then
    pno=0
    RET=0
    conflist=`ls /etc/swatch/conf/*.conf`
    if [ $? -ne 0 ]; then
        exit 1
    fi
    for conf in $conflist
    do
      log=`basename $conf | cut -d\. -f1`

      logPath=`find /var/log/ -type f -regex ".*/$log"`
      [ ! -n "$logPath" ] && logPath=`find /var/log/ -type f -regex ".*/$log.log"`

      if [ -n "$logPath" ]; then
        pno=`expr $pno + 1`
        # [2016.02.29] --script-dirオプションを追加しました。
        # この指定がないとスクリプト停止時に.swatch_script.*ファイルが削除されず、ホームディレクトリに溜まっていってしまいます。
        swatch -c $conf -t "$logPath" --daemon \
        --script-dir=/tmp/ \
        --pid-file /var/run/swatch_$pno.pid 1>> /var/log/swatch.log 2>& 1
        RET=$?
        [ $RET != 0 ] && return $RET
      else
        echo -n "error: not found log file"
        exit 1
      fi
    done

    if [ $pno -gt 0 ]; then
      echo
      [ $RET = 0 ] && touch /var/lock/subsys/swatch
    fi

    echo -n "Starting swatch"
    return $RET
  else
    echo -n "swatch already started"
  fi
}

stop() {
  ls /var/run/swatch_*.pid 1> /dev/null 2>&1
  if [ $? -eq 0 ]; then
    echo -n "Stopping swatch"
    for pid in /var/run/swatch_*.pid
    do
      kill $(cat $pid)
      rm -f $pid
    done
    echo
    rm -f /var/lock/subsys/swatch /tmp/.swatch_script.*
  else
    echo -n "swatch is not starting"
  fi
}

status() {
  ls /var/run/swatch_*.pid 1> /dev/null 2>&1
  if [ $? -eq 0 ]; then
    echo -n "swatch (pid"
    for pid in /var/run/swatch_*.pid
    do
      echo -n " `cat $pid`"
    done
    echo ") is running"
  else
    echo -n "swatch is stopped"
  fi
}

case "$1" in
  start)  start;;
  stop)    stop;;
  restart)stop && start;;
  status)  status;;
  *)      echo "Usage: swatch {start|stop|restart|status}" && exit 1;;
esac

exit $RET

スクリプトの概要は以下です。

  • /etc/swatch/conf/ 配下にある「*.conf」ファイルをswatchの-cオプションの引数にする
  • /var/log/{上記の設定ファイルの拡張子(.conf)を抜いたもの} をswatchの-tオプションの引数にする
  • /var/log/{上記の設定ファイルの拡張子(.conf)を抜いたもの}がない場合、{左記に.logを加えたもの} をswatchの-tオプションの引数にする
  • 「echo」アクションの出力先を /var/log/swatch.log にする

文だとイマイチ分からないので例を挙げると

/etc/swatch/conf/secure.conf と /etc/swatch/conf/yum.conf という設定ファイルがあった場合、

swatch -c secure.conf -t secure

swatch -c yum.conf -t yum.log

が実行されます。

実行と自動起動設定

とりあえず実行

$ service swatch start

んで、自動起動するスクリプトとして実行するには、

起動スクリプトとして登録して。。。

$ chkconfig --add swatch

OS起動時にスクリプトが起動するように設定しておきます。

$ chkconfig swatch on

確認

$ chkconfig | grep swatch
swatch          0:off  1:off  2:on   3:on   4:on   5:on   6:off

設定

swatchの設定ファイルは監視するログファイルごとに、以下ディレクトリに作る

/etc/swatch/conf/

/etc/swatch/conf/secure.conf

##login
watchfor   /su(pam_unix)|session opened for user root/i
        echo
        pipe "mail -s 'TELNET_Session_Opend_Log (root)' sample@gmail.com"

##ftp
watchfor   /ftp.*session opened/i
        echo
        pipe "mail -s 'FTP_Session_Opend_Log' sample@gmail.com"

##ssh
watchfor   /sshd.*session opened/i
        echo
        pipe "mail -s SSH_Session_Opend_Log sample@gmail.com"

swatchの設定ファイルの書式は以下です。

watchfor /パターン/
    アクション

設定されたパターンが監視対象のログファイルに出力されると、アクションが実行されます。

ちなみにパターンはPerl正規表現で「/パターン/i」と i をつけることで大文字・小文字を無視することができます。

アクションには以下のように、いくらか種類があります。

アクション 概要
echo 検索パターンにマッチした行を標準出力に渡す。
mail 検索パターンにマッチした行をメール通知する。
pipe 検索パターンにマッチした行をパイプを通して外部コマンドに渡す。
threshold 連続してマッチした行の表示を指定回数になるまで表示しないようにする。
throttle 連続してマッチした行の検出を一定時間抑止する。

mailというメールで通知するためのアクションが用意されているのですが、例で挙げているsecure.confのアクションはpipeを使っており、ログ出力をmailコマンドに渡しています。

なぜこんな面倒をしているかというと、mailアクションでは内部的にsendmailが利用されていて、sendmailだと都合が悪いため(理由は割愛)mailコマンドを利用するようにしています。

参考

サーバのログを監視するSwatchの導入方法と使い方を解説 | OXY NOTES

Swatchによるリアルタイムログ監視システムを構築する【前編】 | 情シスハック

Linuxexpert - Swatchパターン&ルール記述例-Tips/Swatchパターン&ルール記述例-PukiWiki

ドットコマンドと直接スクリプトを実行した時の違い - Webエンジニアの技術メモ 〜PHP、SQL、Linuxなど〜

/var/lock/subsys/について - さよならインターネット

[swatch: ログ監視] Debian Linux Server

。。。今回初めて起動スクリプトを独自に書いたんで、とても勉強になりました。

半分コピペですが

【CentOS6】サードパーティリポジトリの追加

よく使われると思われるEPELとRPMforgeリポジトリの追加方法をメモしておく

EPELリポジトリの追加

# 電子署名の公開鍵取得
$ rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
# EPELリポジトリの取得
# -i: インストール
# -v (-iに対するオプション): 操作対象のパッケージ名
# -h (-iに対するオプション): 進捗状況(#によるインジケータ)の表示
$ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm を取得中
準備中...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

RPMforgeリポジトリの追加

# 電子署名の公開鍵取得
$ rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
# RPMforgeリポジトリの取得
# -i: インストール
# -v (-iに対するオプション): 操作対象のパッケージ名
# -h (-iに対するオプション): 進捗状況(#によるインジケータ)の表示
$ rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm を取得中
準備中...                ########################################### [100%]
   1:rpmforge-release           ########################################### [100%]

その他リポジトリについて

AdditionalResources/Repositories - CentOS Wiki

参考

@IT:rpmコマンドで警告が表示される

【CentOS6】ログファイルについて調べてみた

本気でサーバを勉強し始めたので、ログについて学ぶことにしました。

rsyslogについて

CentOS6ではrsyslogdというデーモンによって大概のログファイルが管理されています。

設定ファイルは /etc/rsyslog.conf にあり、この設定を変更することでログの主力先やログレベルなどを変更することができます。

この記事に書いてあることは、rsyslog.confがデフォルトの場合のお話であります。

/var/log/ 以下にあるファイル

rsyslogdはデフォルトの設定で /var/log/ 配下にログを吐きます。

また、rsyslogdを使わずに独自にログを吐き出すパッケージも大概このディレクト配下にログを吐くようになっていると思います。

audit/audit.log

カーネルに対して発行されるシステム・コールのすべてを監視するauditdのログ。
SELinuxポリシーに対する違反などを記録している。

anaconda.~

  • anaconda.ifcfg.log
  • anaconda.log
  • anaconda.program.log
  • anaconda.storage.log
  • anaconda.syslog
  • anaconda.xlog
  • anaconda.yum.log

RHELFedoraインストーラであるanacodaのログファイルたち。

ちなみに、インストールに関するログは上記のほかに、/root/install.log や /root/install.log.syslog がある。

/root/install.log

インストールされたソフトウェア・パッケージのリストが含まれる。

/root/install.log.syslog

インストールで生成されたsyslogメッセージが含まれる。

boot.log

サービスの起動/停止に関するログ。

btmp

ログイン(失敗)に関するログ。
バイナリ。
lastbコマンドを利用してみることができる。

clamav/clamd.log

clamavのウィルススキャン実行ログ。

ちなみにclamavディレクト及びその配下にあるファイルは、clamavによって管理されているので、インストールしていなかったり、clamavの設定次第では存在しないはずです。

clamav/freshclam.log

clamavのデータベース更新ログ。

cron

cronの実行ログ。

cron-yyyymmdd

ローテートされたcron。

dmesg

システム起動時からファイルシステムがマウントされる時点までの間にカーネルが出力したメッセージが記録されているファイル。

dmesg.old

ローテートされたdmesg。

dracut.log

initrdを作成するためのツールdracutのログ。

lastlog

ユーザごとの最後のログイン情報を記録している。
バイナリファイル。
lastlogコマンドで見ることができる。

maillog

メールサブシステムのログ。

maillog-yyyymmdd

ローテートされたmessagesログ。

messages

システムの汎用ログ。

messages-yyyymmdd

ローテートされたmeesagesログ。

secure

認証関連のログ。

secure-20160222

ローテートされたsecureログ。

spooler

uucp と news の crit 以上 が出力されるログ。

spooler-20160222

ローテートされたspooler。

tallylog

ユーザーごとのログイン失敗回数を記録する。

wtmp

ログインに関するログ。
バイナリ。
lastコマンドもしくはwhoコマンドでみる事ができる。

yum.log

yumによるパッケージ操作のログ。

参考

Audit について学んでみる - いますぐ実践! Linuxシステム管理 / Vol.222

Linux auditdでアクセス拒否されたファイルを探し出す|Engineering のまにまに

rsyslogd (syslogd) 設定

Linux、「/var/log/btmp」とはなんぞや?|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~

必読!ログファイルとディレクトリ | Think IT(シンクイット)

Anaconda/Logging - FedoraProject

2.3 インストール・ログ

initrd - Wikipedia

【Linux】ファイルシステムについて

SUID

Set User IDの略。

SUIDを付与されたファイルやディレクトリは誰が実行しても所有者の権限で実行される。

例えば、passwdコマンドは/etc/shadowに書き込みを行うが、/etc/shadowのパーミッションは以下のようになっている。

例)/etc/shadowファイルのパーミッション

$  ls -l /etc/shadow
----------. 1 root root 776  222 18:25 2016 /etc/shadow

このパーミッションだと、通常rootユーザ以外は書き込みができないはずであるが、passwdコマンドには以下のようにSUIDが与えられているので、一般ユーザが実行しても/etc/shadowに書き込みができる。

例)passwdコマンドのパーミッション

$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768  222 20:48 2012 /usr/bin/passwd

SUIDの付与の仕方

chmod 4xxx file

もしくは、chmod u+s file でセットできる。

例)絶対モードでSUIDを付与

$ chmod 4777 fir
$ ls -l hoge
-rwsrwxrwx.   1 root root     0  223 20:39 2016 fir

ちなみにシェルスクリプトに設定しても効果はない模様。

一般ユーザにルート権限でシェルを実行する方法について − Linux Square − @IT

スクリプトのSUIDビットというのは危なっかしいので無視されるもののようです。

こんなのもあったけど、CentOS6ではできなかった

[Solaris] シェルスクリプトのオーナーをrootにしてsetuidビットをセットしたがroot権限で動作しない - Life with IT

ただし以下のようにスクリプトの最初にオプションを付けることによってこの制限を外すことができる。
Bourneシェルの場合
#!/bin/sh -p

SGID

Set Group IDの略。

SUIDが付与されている場合、所有者の権限で実行されるのに対し、こちらはグループの権限で実行される。

ディレクトリに付与するとそのディレクトリで作成されたファイルは全て同じグループとなるので、複数ユーザで共有するディレクトリに設定するとよい。

SGIDの付与の仕方

chmod 2xxx dir

もしくは、chmod g+s dir でセットできる。

例)絶対モードでSGIDを付与

$ chmod 2777 dir
$ ls -l hoge
drwxrwsrwx.   2 root root  4096  223 20:03 2016 dir

スティッキービット(Sticky bit)

スティッキービットを付与されたファイルやディレクトリは所有者以外が削除できなくなる。

通常はディレクトリに設定する。

スティッキービットの付与の仕方

chmod 1xxx file

もしくは、chmod o+t file でセットできる。

$ chmod 1777 dir
$ ls -l
drwxr-xr-t.   2 root root  4096  223 20:08 2016 dir

ちなみに、その他ユーザに実行権限を与えていないと大文字でフラグが立つ。

$ chmod 1006 testdir
$ ls -l testdir
d------rwT.   2 root root  4096  223 20:06 2016 testdir
# その他ユーザに実行権限さえあれば大文字にならない
$ chmod 1001 testdir
$ ls -l testdir
d--------t.   2 root root  4096  223 20:06 2016 testdir

これによって何が嬉しいのかよく分からないので、エロい人教えてください。

【余談】chmodについて

chmodの絶対モード(数字で設定するやつ)って覚えにくいなーとか思ってたんですが、最近になってあの数字が、パーミッションのビットを表してることを教えてもらった。

7(10)
-> 111(2)
=> rwx

6(10)
-> 110
=> rw-

4(10)
-> 100
=> r--

$ chmod 764 file
$ ls -l file
-rwxrw-r--.  1 root root     0  223 20:14 2016 file

なるほど、分かればシンボリックモード(u+x みたいなやつ)より扱いやすいですね。

てか、もっと早く教えてよ

えっ、自分で気づけって?

デフォルトのパーミッション

作成したファイルやディレクトリのデフォルトのパーミッションはumaskによって決まる。

ファイルは「666」から、ディレクトリは「777」からumaskを差し引いたものがデフォルトのパーミッションになる。

たとえば、umaskが0022の場合

ファイルのパーミッション
644 (= 666 - (0)022) => -rw-r--r--

ディレクトリのパーミッション
755 (= 777 - (0)022) => drwxr-xr-x

となる

umaskの確認

umaskコマンドを引数なしで実行すると確認できる。

また -Sオプションを付けるとシンボリックモードで確認できる。

$ umask 
0022
$ umask -S
u=rwx,g=rx,o=rx

umaskの設定

umaskコマンドに引数を与えて設定。

また、シンボリックモードでも設定可能。

$ umask 0002
# 確認
$ umask
0002
# シンボリックモードで設定
$ umask u=rwx,g=rx,o=rx
# 確認
$ umask
0022

ちなみに、umaskの設定はユーザ毎となる。

以下はそのうち更新する。。。

ACL

ファイルの暗号化(GnuPG

ファイルシステムの暗号化

【CentOS6】サーバをセキュアにするために〜その1〜

ブートローダの設定

更新中。。。

システムの自動更新

自動的にソフトウェアを更新してくれるyum-cronを入れておくとよい

yum-cronのインストール

$ yum install -y yum-cron
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package yum-cron.noarch 0:3.2.29-69.el6.centos will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 パッケージ      アーキテクチャ
                               バージョン                     リポジトリー
                                                                           容量
================================================================================
インストールしています:
 yum-cron        noarch        3.2.29-69.el6.centos           base         44 k

トランザクションの要約
================================================================================
インストール         1 パッケージ

総ダウンロード容量: 44 k
インストール済み容量: 28 k
パッケージをダウンロードしています:
yum-cron-3.2.29-69.el6.centos.noarch.rpm                 |  44 kB     00:00     
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : yum-cron-3.2.29-69.el6.centos.noarch            1/1 
  Verifying               : yum-cron-3.2.29-69.el6.centos.noarch            1/1 

インストール:
  yum-cron.noarch 0:3.2.29-69.el6.centos                                        

完了しました!
$

yum-cronの設定

yum-cronの設定は以下ファイルに定義されている

/etc/sysconfig/yum-cron

# if MAILTO is set and the mail command is available, the mail command 
# is used to deliver yum output

# by default MAILTO is unset, so crond mails the output by itself
# example:  MAILTO=root
MAILTO=root

今回はデフォルトからMAILTOだけ変更する

yum-cronの起動と自動起動設定

# yum-cronの起動
$ service yum-cron start
夜間 yum 更新の有効化中:                                   [  OK  ]
# 確認
$ service yum-cron status
夜間 yum 更新が有効です。
# yum-cronの自動起動
$ chkconfig yum-cron on
# 確認
$ chkconfig | grep yum-cron
yum-cron        0:off  1:off  2:on   3:on   4:on   5:on   6:off

ユーザの管理

sudo

sudoの設定はvisudoコマンド(※)にて行う

※/etc/sudoersは直接編集できない

sudoersファイルの書式

ユーザ名 ホスト名=(実行ユーザ名) [NOPASSWORD:]コマンド

例)hogeユーザにshutdownコマンドを許可する

hoge ALL=(ALL) /sbin/shutdown

例)hogeユーザに全てのコマンド許可する

hoge ALL=(ALL) ALL

パスワード管理

更新中。。。

アンチウィルスソフトの導入

今回はオープンソースclam AntiVirus(以降clamavとします)を利用します。

インストール

インストールの前提としてEPELリポジトリを追加が必要です。

mktktmr.hatenablog.jp

インストール

$ yum -y install clamd
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * epel: ftp.riken.jp
 * extras: ftp.riken.jp
 * rpmforge: ftp.kddilabs.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package clamd.x86_64 0:0.99-3.el6 will be インストール
--> 依存性の処理をしています: clamav = 0.99-3.el6 のパッケージ: clamd-0.99-3.el6.x86_64
--> 依存性の処理をしています: libclamav.so.7(CLAMAV_PUBLIC)(64bit) のパッケージ: clamd-0.99-3.el6.x86_64
--> 依存性の処理をしています: libclamav.so.7(CLAMAV_PRIVATE)(64bit) のパッケージ: clamd-0.99-3.el6.x86_64
--> 依存性の処理をしています: libclamav.so.7()(64bit) のパッケージ: clamd-0.99-3.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package clamav.x86_64 0:0.99-3.el6 will be インストール
--> 依存性の処理をしています: clamav-db = 0.99-3.el6 のパッケージ: clamav-0.99-3.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package clamav-db.x86_64 0:0.99-3.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

==========================================================================================================================================================================
 パッケージ                                アーキテクチャ                         バージョン                                   リポジトリー                          容量
==========================================================================================================================================================================
インストールしています:
 clamd                                     x86_64                                 0.99-3.el6                                   epel                                 165 k
依存性関連でのインストールをします。:
 clamav                                    x86_64                                 0.99-3.el6                                   epel                                 1.4 M
 clamav-db                                 x86_64                                 0.99-3.el6                                   epel                                 102 M

トランザクションの要約
==========================================================================================================================================================================
インストール         3 パッケージ

総ダウンロード容量: 104 M
インストール済み容量: 106 M
パッケージをダウンロードしています:
(1/3): clamav-0.99-3.el6.x86_64.rpm                                                                                                                | 1.4 MB     00:01     
(2/3): clamav-db-0.99-3.el6.x86_64.rpm                                                                                                                                         | 102 MB     00:30     
(3/3): clamd-0.99-3.el6.x86_64.rpm                                                                                                                                             | 165 kB     00:00     
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                  3.1 MB/s | 104 MB     00:33     
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : clamav-db-0.99-3.el6.x86_64                                                                                                                                           1/3 
  インストールしています  : clamav-0.99-3.el6.x86_64                                                                                                                                              2/3 
  インストールしています  : clamd-0.99-3.el6.x86_64                                                                                                                                               3/3 
  Verifying               : clamav-db-0.99-3.el6.x86_64                                                                                                                                           1/3 
  Verifying               : clamav-0.99-3.el6.x86_64                                                                                                                                              2/3 
  Verifying               : clamd-0.99-3.el6.x86_64                                                                                                                                               3/3 

インストール:
  clamd.x86_64 0:0.99-3.el6                                                                                                                                                                           

依存性関連をインストールしました:
  clamav.x86_64 0:0.99-3.el6                                                                       clamav-db.x86_64 0:0.99-3.el6                                                                      

完了しました!
# 確認
$ clamscan --version
ClamAV 0.99/21397/Mon Feb 22 06:37:19 2016

ウィルスデータベースの更新

手動で更新を行う場合は「freshclam」を叩く。

$ freshclam 
ClamAV update process started at Mon Feb 22 13:13:32 2016
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily-21397.cdiff [100%]
daily.cld updated (version: 21397, sigs: 1850960, f-level: 63, builder: neo)
bytecode.cvd is up to date (version: 271, sigs: 47, f-level: 63, builder: anvilleg)
Database updated (4275232 signatures) from database.clamav.net (IP: 203.178.137.175)

ただ、ウィルスデータベースの更新は、clamavをインストールした際、定期実行されるようになっているので、基本的に手動で行う必要はないです。

$ ls -ltr /etc/cron.daily/ 
#〜〜〜〜〜〜〜〜〜〜(省略)〜〜〜〜〜〜〜〜〜〜〜
-rwxr-xr-x. 1 root root  396 128 05:31 2015 freshclam

デーモンの設定

以下に設定ファイル

/etc/clamd.conf

変更箇所抜粋

# /etc/clamd.conf.defaultは変更前のclamd.conf
$ diff /etc/clamd.conf.default /etc/clamd.conf
165,166c165,168
< #ExcludePath ^/proc/
< #ExcludePath ^/sys/
---
> # 以下ディレクトリ配下のファイルにはアクセスできずエラーが大量に発生するためスキャン対象外とする
> ExcludePath ^/proc/
> ExcludePath ^/sys/
195c197,199
< User clam
---
> # 作業ユーザで実行するとパーミッション絡みで面倒なので妥協してrootで実行
> User root
290c294,296
< DetectBrokenExecutables yes
---
> # 破損ファイルの検出は誤検出が多いそうなので切っておく
> DetectBrokenExecutables no

デーモンの起動

$ service clamd start
Starting Clam AntiVirus Daemon:                            [  OK  ]
# 自動起動も有効にしておく
$ chkconfig clamd on
$ chkconfig | grep clamd
clamd           0:off  1:off  2:on   3:on   4:on   5:on   6:off

スキャン実行

感染したファイルがない場合

$ clamdscan /
/: OK

----------- SCAN SUMMARY -----------
Infected files: 0
Time: 215.179 sec (3 m 35 s)

以下サイトからテスト用擬似ウィルスファイルをダウンロードできるので、テストしてみる

$ curl -L -O http://www.eicar.org/download/eicar.com
# 確認
$ ls -l /home/hoge/eicar.com 
-rw-r--r--. 1 root root 68  222 17:25 2016 /home/hoeg/eicar.com
eicar.com

感染したファイルがある場合

$ clamdscan /
/home/hoge/eicar.com: Eicar-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Infected files: 1
Time: 12.276 sec (0 m 12 s)

なお、clamdscanは前回のスキャンから変更のあったファイルだけ差分でスキャンするため、2回目のスキャン時間は大幅に短縮される

見つかった感染ファイルを自動で削除する場合

# --removeオプションを付けると感染ファイルが見つかった際に自動的に削除してくれる
$ clamdscan --remove /
/home/hoge/eicar.com: Eicar-Test-Signature FOUND
/home/hoge/eicar.com: Removed.

----------- SCAN SUMMARY -----------
Infected files: 1
Time: 12.318 sec (0 m 12 s)
# 確認
$  ls -l /home/hoge/eicar.com 
ls: cannot access /home/hoge/eicar.com: そのようなファイルやディレクトリはありません

定期実行

ウィルススキャンを定期的に実行し、感染ファイルが見つかった場合メールを飛ばす簡単なスクリプトを作成します。

前提としてmailxでメールを飛ばせるものとします。

mailx参考:mktktmr.hatenablog.jp

ウィルススキャン実行スクリプト

clamdscan.sh

#!/bin/sh

MAILTO='hoge@sample.com'
MAIL_SUBJECT='Virus is detected'

SUMMARY=`clamdscan --stdout /`

if [ $? -eq 1 ]; then
  echo "$SUMMARY" | mail -s "$MAIL_SUBJECT" "$MAILTO"
fi

exit 0

実行権限つけて。。。

$ chmod 700 clamdscan.sh

適当な場所に移動

$ mv clamdscan.sh /root/bin/

cronで定期実行するようにする

$ crontab -e

毎週月曜日の3時に実行

0 3 * * 1 /root/bin/clamdscan.sh > /dev/null 2>&1

参考

ClamAV(Clam AntiVirus)の設定方法

Clam Antivirusに関するメモ

Stray Penguin - Linux Memo (Sudo)