【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
RHELやFedoraのインストーラである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
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 のまにまに
Linux、「/var/log/btmp」とはなんぞや?|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~
必読!ログファイルとディレクトリ | Think IT(シンクイット)
【Linux】ファイルシステムについて
SUID
Set User IDの略。
SUIDを付与されたファイルやディレクトリは誰が実行しても所有者の権限で実行される。
例えば、passwdコマンドは/etc/shadowに書き込みを行うが、/etc/shadowのパーミッションは以下のようになっている。
例)/etc/shadowファイルのパーミッション
$ ls -l /etc/shadow ----------. 1 root root 776 2月 22 18:25 2016 /etc/shadow
このパーミッションだと、通常rootユーザ以外は書き込みができないはずであるが、passwdコマンドには以下のようにSUIDが与えられているので、一般ユーザが実行しても/etc/shadowに書き込みができる。
例)passwdコマンドのパーミッション
$ ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 30768 2月 22 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 2月 23 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 2月 23 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 2月 23 20:08 2016 dir
ちなみに、その他ユーザに実行権限を与えていないと大文字でフラグが立つ。
$ chmod 1006 testdir $ ls -l testdir d------rwT. 2 root root 4096 2月 23 20:06 2016 testdir # その他ユーザに実行権限さえあれば大文字にならない $ chmod 1001 testdir $ ls -l testdir d--------t. 2 root root 4096 2月 23 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 2月 23 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リポジトリを追加が必要です。
インストール
$ 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 12月 8 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 2月 22 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
参考
【CentOS6】mailxでメールを送信
環境
サーバOS: CentOS 6.7
mailxのインストール
$ yum -y install mailx 読み込んだプラグイン:fastestmirror インストール処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.riken.jp * epel: mirror.premi.st * extras: ftp.riken.jp * rpmforge: ftp.riken.jp * updates: ftp.riken.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package mailx.x86_64 0:12.4-8.el6_6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ============================================================================================================================================================== パッケージ アーキテクチャ バージョン リポジトリー 容量 ============================================================================================================================================================== インストールしています: mailx x86_64 12.4-8.el6_6 base 235 k トランザクションの要約 ============================================================================================================================================================== インストール 1 パッケージ 総ダウンロード容量: 235 k インストール済み容量: 452 k パッケージをダウンロードしています: mailx-12.4-8.el6_6.x86_64.rpm | 235 kB 00:00 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : mailx-12.4-8.el6_6.x86_64 1/1 Verifying : mailx-12.4-8.el6_6.x86_64 1/1 インストール: mailx.x86_64 0:12.4-8.el6_6 完了しました!
smtpサーバを建てない場合(gmailのsmtpサーバを利用)
msmtpをインストールする。
$ yum -y install msmtp 読み込んだプラグイン: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 msmtp.x86_64 0:1.4.32-1.el6 will be インストール --> 依存性の処理をしています: libgsasl.so.7(LIBGSASL_1.1)(64bit) のパッケージ: msmtp-1.4.32-1.el6.x86_64 --> 依存性の処理をしています: libgnutls.so.26(GNUTLS_1_4)(64bit) のパッケージ: msmtp-1.4.32-1.el6.x86_64 --> 依存性の処理をしています: libgsasl.so.7()(64bit) のパッケージ: msmtp-1.4.32-1.el6.x86_64 --> 依存性の処理をしています: libgnutls.so.26()(64bit) のパッケージ: msmtp-1.4.32-1.el6.x86_64 --> 依存性の処理をしています: libgnome-keyring.so.0()(64bit) のパッケージ: msmtp-1.4.32-1.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package gnome-keyring.x86_64 0:2.28.2-8.el6_3 will be インストール --> 依存性の処理をしています: GConf2 のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: GConf2 のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libpangoft2-1.0.so.0()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libpangocairo-1.0.so.0()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libpango-1.0.so.0()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libgtk-x11-2.0.so.0()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libgdk_pixbuf-2.0.so.0()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libgdk-x11-2.0.so.0()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libgconf-2.so.4()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libfreetype.so.6()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libfontconfig.so.1()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libcairo.so.2()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 --> 依存性の処理をしています: libatk-1.0.so.0()(64bit) のパッケージ: gnome-keyring-2.28.2-8.el6_3.x86_64 ---> Package gnutls.x86_64 0:2.8.5-19.el6_7 will be インストール ---> Package libgsasl.x86_64 0:1.4.0-4.el6 will be インストール --> 依存性の処理をしています: libntlm.so.0()(64bit) のパッケージ: libgsasl-1.4.0-4.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package GConf2.x86_64 0:2.28.0-6.el6 will be インストール --> 依存性の処理をしています: sgml-common のパッケージ: GConf2-2.28.0-6.el6.x86_64 --> 依存性の処理をしています: dbus のパッケージ: GConf2-2.28.0-6.el6.x86_64 --> 依存性の処理をしています: libpolkit-gobject-1.so.0()(64bit) のパッケージ: GConf2-2.28.0-6.el6.x86_64 --> 依存性の処理をしています: libORBit-2.so.0()(64bit) のパッケージ: GConf2-2.28.0-6.el6.x86_64 ---> Package atk.x86_64 0:1.30.0-1.el6 will be インストール ---> Package cairo.x86_64 0:1.8.8-6.el6_6 will be インストール --> 依存性の処理をしています: libpng12.so.0(PNG12_0)(64bit) のパッケージ: cairo-1.8.8-6.el6_6.x86_64 --> 依存性の処理をしています: libpng12.so.0()(64bit) のパッケージ: cairo-1.8.8-6.el6_6.x86_64 --> 依存性の処理をしています: libpixman-1.so.0()(64bit) のパッケージ: cairo-1.8.8-6.el6_6.x86_64 --> 依存性の処理をしています: libXrender.so.1()(64bit) のパッケージ: cairo-1.8.8-6.el6_6.x86_64 --> 依存性の処理をしています: libX11.so.6()(64bit) のパッケージ: cairo-1.8.8-6.el6_6.x86_64 ---> Package fontconfig.x86_64 0:2.8.0-5.el6 will be インストール ---> Package freetype.x86_64 0:2.3.11-15.el6_6.1 will be インストール ---> Package gdk-pixbuf2.x86_64 0:2.24.1-6.el6_7 will be インストール --> 依存性の処理をしています: libjpeg.so.62(LIBJPEG_6.2)(64bit) のパッケージ: gdk-pixbuf2-2.24.1-6.el6_7.x86_64 --> 依存性の処理をしています: libtiff.so.3()(64bit) のパッケージ: gdk-pixbuf2-2.24.1-6.el6_7.x86_64 --> 依存性の処理をしています: libjpeg.so.62()(64bit) のパッケージ: gdk-pixbuf2-2.24.1-6.el6_7.x86_64 --> 依存性の処理をしています: libjasper.so.1()(64bit) のパッケージ: gdk-pixbuf2-2.24.1-6.el6_7.x86_64 ---> Package gtk2.x86_64 0:2.24.23-6.el6 will be インストール --> 依存性の処理をしています: libXrandr >= 1.2.99.4-2 のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: hicolor-icon-theme のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: libcups.so.2()(64bit) のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: libXrandr.so.2()(64bit) のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: libXinerama.so.1()(64bit) のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: libXi.so.6()(64bit) のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: libXfixes.so.3()(64bit) のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: libXext.so.6()(64bit) のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: libXdamage.so.1()(64bit) のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: libXcursor.so.1()(64bit) のパッケージ: gtk2-2.24.23-6.el6.x86_64 --> 依存性の処理をしています: libXcomposite.so.1()(64bit) のパッケージ: gtk2-2.24.23-6.el6.x86_64 ---> Package libntlm.x86_64 0:1.0-3.el6 will be インストール ---> Package pango.x86_64 0:1.28.1-10.el6 will be インストール --> 依存性の処理をしています: libthai >= 0.1.9 のパッケージ: pango-1.28.1-10.el6.x86_64 --> 依存性の処理をしています: libthai.so.0(LIBTHAI_0.1)(64bit) のパッケージ: pango-1.28.1-10.el6.x86_64 --> 依存性の処理をしています: libthai.so.0()(64bit) のパッケージ: pango-1.28.1-10.el6.x86_64 --> 依存性の処理をしています: libXft.so.2()(64bit) のパッケージ: pango-1.28.1-10.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package ORBit2.x86_64 0:2.14.17-5.el6 will be インストール --> 依存性の処理をしています: libIDL-2.so.0()(64bit) のパッケージ: ORBit2-2.14.17-5.el6.x86_64 ---> Package cups-libs.x86_64 1:1.4.2-72.el6 will be インストール --> 依存性の処理をしています: libavahi-common.so.3()(64bit) のパッケージ: 1:cups-libs-1.4.2-72.el6.x86_64 --> 依存性の処理をしています: libavahi-client.so.3()(64bit) のパッケージ: 1:cups-libs-1.4.2-72.el6.x86_64 ---> Package dbus.x86_64 1:1.2.24-8.el6_6 will be インストール ---> Package hicolor-icon-theme.noarch 0:0.11-1.1.el6 will be インストール ---> Package jasper-libs.x86_64 0:1.900.1-16.el6_6.3 will be インストール ---> Package libX11.x86_64 0:1.6.0-6.el6 will be インストール --> 依存性の処理をしています: libX11-common = 1.6.0-6.el6 のパッケージ: libX11-1.6.0-6.el6.x86_64 --> 依存性の処理をしています: libxcb.so.1()(64bit) のパッケージ: libX11-1.6.0-6.el6.x86_64 ---> Package libXcomposite.x86_64 0:0.4.3-4.el6 will be インストール ---> Package libXcursor.x86_64 0:1.1.14-2.1.el6 will be インストール ---> Package libXdamage.x86_64 0:1.1.3-4.el6 will be インストール ---> Package libXext.x86_64 0:1.3.2-2.1.el6 will be インストール ---> Package libXfixes.x86_64 0:5.0.1-2.1.el6 will be インストール ---> Package libXft.x86_64 0:2.3.1-2.el6 will be インストール ---> Package libXi.x86_64 0:1.7.2-2.2.el6 will be インストール ---> Package libXinerama.x86_64 0:1.1.3-2.1.el6 will be インストール ---> Package libXrandr.x86_64 0:1.4.1-2.1.el6 will be インストール ---> Package libXrender.x86_64 0:0.9.8-2.1.el6 will be インストール ---> Package libjpeg-turbo.x86_64 0:1.2.1-3.el6_5 will be インストール ---> Package libpng.x86_64 2:1.2.49-2.el6_7 will be インストール ---> Package libthai.x86_64 0:0.1.12-3.el6 will be インストール ---> Package libtiff.x86_64 0:3.9.4-10.el6_5 will be インストール ---> Package pixman.x86_64 0:0.32.4-4.el6 will be インストール ---> Package polkit.x86_64 0:0.96-11.el6 will be インストール --> 依存性の処理をしています: ConsoleKit のパッケージ: polkit-0.96-11.el6.x86_64 --> 依存性の処理をしています: libeggdbus-1.so.0()(64bit) のパッケージ: polkit-0.96-11.el6.x86_64 ---> Package sgml-common.noarch 0:0.6.3-33.el6 will be インストール --> トランザクションの確認を実行しています。 ---> Package ConsoleKit.x86_64 0:0.4.1-3.el6 will be インストール --> 依存性の処理をしています: libck-connector.so.0()(64bit) のパッケージ: ConsoleKit-0.4.1-3.el6.x86_64 ---> Package avahi-libs.x86_64 0:0.6.25-15.el6 will be インストール ---> Package eggdbus.x86_64 0:0.6-3.el6 will be インストール ---> Package libIDL.x86_64 0:0.8.13-2.1.el6 will be インストール ---> Package libX11-common.noarch 0:1.6.0-6.el6 will be インストール ---> Package libxcb.x86_64 0:1.9.1-3.el6 will be インストール --> 依存性の処理をしています: libXau.so.6()(64bit) のパッケージ: libxcb-1.9.1-3.el6.x86_64 --> トランザクションの確認を実行しています。 ---> Package ConsoleKit-libs.x86_64 0:0.4.1-3.el6 will be インストール ---> Package libXau.x86_64 0:1.0.6-4.el6 will be インストール --> 依存性解決を終了しました。 依存性を解決しました ============================================================================================================================================================== パッケージ アーキテクチャ バージョン リポジトリー 容量 ============================================================================================================================================================== インストールしています: msmtp x86_64 1.4.32-1.el6 epel 118 k 依存性関連でのインストールをします。: ConsoleKit x86_64 0.4.1-3.el6 base 82 k ConsoleKit-libs x86_64 0.4.1-3.el6 base 17 k GConf2 x86_64 2.28.0-6.el6 base 964 k ORBit2 x86_64 2.14.17-5.el6 base 168 k atk x86_64 1.30.0-1.el6 base 195 k avahi-libs x86_64 0.6.25-15.el6 base 55 k cairo x86_64 1.8.8-6.el6_6 base 309 k cups-libs x86_64 1:1.4.2-72.el6 base 321 k dbus x86_64 1:1.2.24-8.el6_6 base 207 k eggdbus x86_64 0.6-3.el6 base 91 k fontconfig x86_64 2.8.0-5.el6 base 186 k freetype x86_64 2.3.11-15.el6_6.1 base 361 k gdk-pixbuf2 x86_64 2.24.1-6.el6_7 updates 501 k gnome-keyring x86_64 2.28.2-8.el6_3 base 811 k gnutls x86_64 2.8.5-19.el6_7 updates 347 k gtk2 x86_64 2.24.23-6.el6 base 3.2 M hicolor-icon-theme noarch 0.11-1.1.el6 base 40 k jasper-libs x86_64 1.900.1-16.el6_6.3 base 137 k libIDL x86_64 0.8.13-2.1.el6 base 83 k libX11 x86_64 1.6.0-6.el6 base 586 k libX11-common noarch 1.6.0-6.el6 base 192 k libXau x86_64 1.0.6-4.el6 base 24 k libXcomposite x86_64 0.4.3-4.el6 base 20 k libXcursor x86_64 1.1.14-2.1.el6 base 28 k libXdamage x86_64 1.1.3-4.el6 base 18 k libXext x86_64 1.3.2-2.1.el6 base 35 k libXfixes x86_64 5.0.1-2.1.el6 base 17 k libXft x86_64 2.3.1-2.el6 base 55 k libXi x86_64 1.7.2-2.2.el6 base 37 k libXinerama x86_64 1.1.3-2.1.el6 base 13 k libXrandr x86_64 1.4.1-2.1.el6 base 23 k libXrender x86_64 0.9.8-2.1.el6 base 24 k libgsasl x86_64 1.4.0-4.el6 epel 113 k libjpeg-turbo x86_64 1.2.1-3.el6_5 base 174 k libntlm x86_64 1.0-3.el6 base 42 k libpng x86_64 2:1.2.49-2.el6_7 updates 182 k libthai x86_64 0.1.12-3.el6 base 183 k libtiff x86_64 3.9.4-10.el6_5 base 343 k libxcb x86_64 1.9.1-3.el6 base 110 k pango x86_64 1.28.1-10.el6 base 351 k pixman x86_64 0.32.4-4.el6 base 243 k polkit x86_64 0.96-11.el6 base 162 k sgml-common noarch 0.6.3-33.el6 base 43 k トランザクションの要約 ============================================================================================================================================================== インストール 44 パッケージ 総ダウンロード容量: 11 M インストール済み容量: 41 M パッケージをダウンロードしています: (1/44): ConsoleKit-0.4.1-3.el6.x86_64.rpm | 82 kB 00:00 (2/44): ConsoleKit-libs-0.4.1-3.el6.x86_64.rpm | 17 kB 00:00 (3/44): GConf2-2.28.0-6.el6.x86_64.rpm | 964 kB 00:00 (4/44): ORBit2-2.14.17-5.el6.x86_64.rpm | 168 kB 00:00 (5/44): atk-1.30.0-1.el6.x86_64.rpm | 195 kB 00:00 (6/44): avahi-libs-0.6.25-15.el6.x86_64.rpm | 55 kB 00:00 (7/44): cairo-1.8.8-6.el6_6.x86_64.rpm | 309 kB 00:00 (8/44): cups-libs-1.4.2-72.el6.x86_64.rpm | 321 kB 00:00 (9/44): dbus-1.2.24-8.el6_6.x86_64.rpm | 207 kB 00:00 (10/44): eggdbus-0.6-3.el6.x86_64.rpm | 91 kB 00:00 (11/44): fontconfig-2.8.0-5.el6.x86_64.rpm | 186 kB 00:00 (12/44): freetype-2.3.11-15.el6_6.1.x86_64.rpm | 361 kB 00:00 (13/44): gdk-pixbuf2-2.24.1-6.el6_7.x86_64.rpm | 501 kB 00:00 (14/44): gnome-keyring-2.28.2-8.el6_3.x86_64.rpm | 811 kB 00:00 (15/44): gnutls-2.8.5-19.el6_7.x86_64.rpm | 347 kB 00:00 (16/44): gtk2-2.24.23-6.el6.x86_64.rpm | 3.2 MB 00:01 (17/44): hicolor-icon-theme-0.11-1.1.el6.noarch.rpm | 40 kB 00:00 (18/44): jasper-libs-1.900.1-16.el6_6.3.x86_64.rpm | 137 kB 00:00 (19/44): libIDL-0.8.13-2.1.el6.x86_64.rpm | 83 kB 00:00 (20/44): libX11-1.6.0-6.el6.x86_64.rpm | 586 kB 00:00 (21/44): libX11-common-1.6.0-6.el6.noarch.rpm | 192 kB 00:00 (22/44): libXau-1.0.6-4.el6.x86_64.rpm | 24 kB 00:00 (23/44): libXcomposite-0.4.3-4.el6.x86_64.rpm | 20 kB 00:00 (24/44): libXcursor-1.1.14-2.1.el6.x86_64.rpm | 28 kB 00:00 (25/44): libXdamage-1.1.3-4.el6.x86_64.rpm | 18 kB 00:00 (26/44): libXext-1.3.2-2.1.el6.x86_64.rpm | 35 kB 00:00 (27/44): libXfixes-5.0.1-2.1.el6.x86_64.rpm | 17 kB 00:00 (28/44): libXft-2.3.1-2.el6.x86_64.rpm | 55 kB 00:00 (29/44): libXi-1.7.2-2.2.el6.x86_64.rpm | 37 kB 00:00 (30/44): libXinerama-1.1.3-2.1.el6.x86_64.rpm | 13 kB 00:00 (31/44): libXrandr-1.4.1-2.1.el6.x86_64.rpm | 23 kB 00:00 (32/44): libXrender-0.9.8-2.1.el6.x86_64.rpm | 24 kB 00:00 (33/44): libgsasl-1.4.0-4.el6.x86_64.rpm | 113 kB 00:00 (34/44): libjpeg-turbo-1.2.1-3.el6_5.x86_64.rpm | 174 kB 00:00 (35/44): libntlm-1.0-3.el6.x86_64.rpm | 42 kB 00:00 (36/44): libpng-1.2.49-2.el6_7.x86_64.rpm | 182 kB 00:00 (37/44): libthai-0.1.12-3.el6.x86_64.rpm | 183 kB 00:00 (38/44): libtiff-3.9.4-10.el6_5.x86_64.rpm | 343 kB 00:00 (39/44): libxcb-1.9.1-3.el6.x86_64.rpm | 110 kB 00:00 (40/44): msmtp-1.4.32-1.el6.x86_64.rpm | 118 kB 00:00 (41/44): pango-1.28.1-10.el6.x86_64.rpm | 351 kB 00:00 (42/44): pixman-0.32.4-4.el6.x86_64.rpm | 243 kB 00:00 (43/44): polkit-0.96-11.el6.x86_64.rpm | 162 kB 00:00 (44/44): sgml-common-0.6.3-33.el6.noarch.rpm | 43 kB 00:00 -------------------------------------------------------------------------------------------------------------------------------------------------------------- 合計 915 kB/s | 11 MB 00:12 rpm_check_debug を実行しています トランザクションのテストを実行しています トランザクションのテストを成功しました トランザクションを実行しています インストールしています : freetype-2.3.11-15.el6_6.1.x86_64 1/44 インストールしています : fontconfig-2.8.0-5.el6.x86_64 2/44 インストールしています : libjpeg-turbo-1.2.1-3.el6_5.x86_64 3/44 インストールしています : 1:dbus-1.2.24-8.el6_6.x86_64 4/44 インストールしています : 2:libpng-1.2.49-2.el6_7.x86_64 5/44 インストールしています : libtiff-3.9.4-10.el6_5.x86_64 6/44 インストールしています : atk-1.30.0-1.el6.x86_64 7/44 インストールしています : gnutls-2.8.5-19.el6_7.x86_64 8/44 インストールしています : ConsoleKit-libs-0.4.1-3.el6.x86_64 9/44 インストールしています : jasper-libs-1.900.1-16.el6_6.3.x86_64 10/44 インストールしています : pixman-0.32.4-4.el6.x86_64 11/44 インストールしています : libthai-0.1.12-3.el6.x86_64 12/44 インストールしています : libXau-1.0.6-4.el6.x86_64 13/44 インストールしています : libxcb-1.9.1-3.el6.x86_64 14/44 インストールしています : eggdbus-0.6-3.el6.x86_64 15/44 インストールしています : polkit-0.96-11.el6.x86_64 16/44 インストールしています : ConsoleKit-0.4.1-3.el6.x86_64 17/44 インストールしています : libX11-common-1.6.0-6.el6.noarch 18/44 インストールしています : libX11-1.6.0-6.el6.x86_64 19/44 インストールしています : libXrender-0.9.8-2.1.el6.x86_64 20/44 インストールしています : libXext-1.3.2-2.1.el6.x86_64 21/44 インストールしています : cairo-1.8.8-6.el6_6.x86_64 22/44 インストールしています : libXfixes-5.0.1-2.1.el6.x86_64 23/44 インストールしています : gdk-pixbuf2-2.24.1-6.el6_7.x86_64 24/44 インストールしています : libXdamage-1.1.3-4.el6.x86_64 25/44 インストールしています : libXcursor-1.1.14-2.1.el6.x86_64 26/44 インストールしています : libXinerama-1.1.3-2.1.el6.x86_64 27/44 インストールしています : libXrandr-1.4.1-2.1.el6.x86_64 28/44 インストールしています : libXi-1.7.2-2.2.el6.x86_64 29/44 インストールしています : libXft-2.3.1-2.el6.x86_64 30/44 インストールしています : pango-1.28.1-10.el6.x86_64 31/44 インストールしています : libXcomposite-0.4.3-4.el6.x86_64 32/44 インストールしています : avahi-libs-0.6.25-15.el6.x86_64 33/44 インストールしています : 1:cups-libs-1.4.2-72.el6.x86_64 34/44 インストールしています : libIDL-0.8.13-2.1.el6.x86_64 35/44 インストールしています : ORBit2-2.14.17-5.el6.x86_64 36/44 インストールしています : hicolor-icon-theme-0.11-1.1.el6.noarch 37/44 インストールしています : gtk2-2.24.23-6.el6.x86_64 38/44 インストールしています : libntlm-1.0-3.el6.x86_64 39/44 インストールしています : libgsasl-1.4.0-4.el6.x86_64 40/44 インストールしています : sgml-common-0.6.3-33.el6.noarch 41/44 インストールしています : GConf2-2.28.0-6.el6.x86_64 42/44 インストールしています : gnome-keyring-2.28.2-8.el6_3.x86_64 43/44 インストールしています : msmtp-1.4.32-1.el6.x86_64 44/44 Verifying : cairo-1.8.8-6.el6_6.x86_64 1/44 Verifying : libXrender-0.9.8-2.1.el6.x86_64 2/44 Verifying : sgml-common-0.6.3-33.el6.noarch 3/44 Verifying : libXdamage-1.1.3-4.el6.x86_64 4/44 Verifying : jasper-libs-1.900.1-16.el6_6.3.x86_64 5/44 Verifying : libxcb-1.9.1-3.el6.x86_64 6/44 Verifying : fontconfig-2.8.0-5.el6.x86_64 7/44 Verifying : libtiff-3.9.4-10.el6_5.x86_64 8/44 Verifying : ConsoleKit-0.4.1-3.el6.x86_64 9/44 Verifying : GConf2-2.28.0-6.el6.x86_64 10/44 Verifying : pango-1.28.1-10.el6.x86_64 11/44 Verifying : polkit-0.96-11.el6.x86_64 12/44 Verifying : 2:libpng-1.2.49-2.el6_7.x86_64 13/44 Verifying : libgsasl-1.4.0-4.el6.x86_64 14/44 Verifying : libntlm-1.0-3.el6.x86_64 15/44 Verifying : gnome-keyring-2.28.2-8.el6_3.x86_64 16/44 Verifying : hicolor-icon-theme-0.11-1.1.el6.noarch 17/44 Verifying : libIDL-0.8.13-2.1.el6.x86_64 18/44 Verifying : libX11-1.6.0-6.el6.x86_64 19/44 Verifying : ORBit2-2.14.17-5.el6.x86_64 20/44 Verifying : freetype-2.3.11-15.el6_6.1.x86_64 21/44 Verifying : 1:dbus-1.2.24-8.el6_6.x86_64 22/44 Verifying : libXft-2.3.1-2.el6.x86_64 23/44 Verifying : gnutls-2.8.5-19.el6_7.x86_64 24/44 Verifying : avahi-libs-0.6.25-15.el6.x86_64 25/44 Verifying : gdk-pixbuf2-2.24.1-6.el6_7.x86_64 26/44 Verifying : ConsoleKit-libs-0.4.1-3.el6.x86_64 27/44 Verifying : gtk2-2.24.23-6.el6.x86_64 28/44 Verifying : libXinerama-1.1.3-2.1.el6.x86_64 29/44 Verifying : msmtp-1.4.32-1.el6.x86_64 30/44 Verifying : libX11-common-1.6.0-6.el6.noarch 31/44 Verifying : eggdbus-0.6-3.el6.x86_64 32/44 Verifying : libXext-1.3.2-2.1.el6.x86_64 33/44 Verifying : libjpeg-turbo-1.2.1-3.el6_5.x86_64 34/44 Verifying : libXcursor-1.1.14-2.1.el6.x86_64 35/44 Verifying : libXrandr-1.4.1-2.1.el6.x86_64 36/44 Verifying : libXi-1.7.2-2.2.el6.x86_64 37/44 Verifying : 1:cups-libs-1.4.2-72.el6.x86_64 38/44 Verifying : libXau-1.0.6-4.el6.x86_64 39/44 Verifying : libthai-0.1.12-3.el6.x86_64 40/44 Verifying : pixman-0.32.4-4.el6.x86_64 41/44 Verifying : atk-1.30.0-1.el6.x86_64 42/44 Verifying : libXcomposite-0.4.3-4.el6.x86_64 43/44 Verifying : libXfixes-5.0.1-2.1.el6.x86_64 44/44 インストール: msmtp.x86_64 0:1.4.32-1.el6 依存性関連をインストールしました: ConsoleKit.x86_64 0:0.4.1-3.el6 ConsoleKit-libs.x86_64 0:0.4.1-3.el6 GConf2.x86_64 0:2.28.0-6.el6 ORBit2.x86_64 0:2.14.17-5.el6 atk.x86_64 0:1.30.0-1.el6 avahi-libs.x86_64 0:0.6.25-15.el6 cairo.x86_64 0:1.8.8-6.el6_6 cups-libs.x86_64 1:1.4.2-72.el6 dbus.x86_64 1:1.2.24-8.el6_6 eggdbus.x86_64 0:0.6-3.el6 fontconfig.x86_64 0:2.8.0-5.el6 freetype.x86_64 0:2.3.11-15.el6_6.1 gdk-pixbuf2.x86_64 0:2.24.1-6.el6_7 gnome-keyring.x86_64 0:2.28.2-8.el6_3 gnutls.x86_64 0:2.8.5-19.el6_7 gtk2.x86_64 0:2.24.23-6.el6 hicolor-icon-theme.noarch 0:0.11-1.1.el6 jasper-libs.x86_64 0:1.900.1-16.el6_6.3 libIDL.x86_64 0:0.8.13-2.1.el6 libX11.x86_64 0:1.6.0-6.el6 libX11-common.noarch 0:1.6.0-6.el6 libXau.x86_64 0:1.0.6-4.el6 libXcomposite.x86_64 0:0.4.3-4.el6 libXcursor.x86_64 0:1.1.14-2.1.el6 libXdamage.x86_64 0:1.1.3-4.el6 libXext.x86_64 0:1.3.2-2.1.el6 libXfixes.x86_64 0:5.0.1-2.1.el6 libXft.x86_64 0:2.3.1-2.el6 libXi.x86_64 0:1.7.2-2.2.el6 libXinerama.x86_64 0:1.1.3-2.1.el6 libXrandr.x86_64 0:1.4.1-2.1.el6 libXrender.x86_64 0:0.9.8-2.1.el6 libgsasl.x86_64 0:1.4.0-4.el6 libjpeg-turbo.x86_64 0:1.2.1-3.el6_5 libntlm.x86_64 0:1.0-3.el6 libpng.x86_64 2:1.2.49-2.el6_7 libthai.x86_64 0:0.1.12-3.el6 libtiff.x86_64 0:3.9.4-10.el6_5 libxcb.x86_64 0:1.9.1-3.el6 pango.x86_64 0:1.28.1-10.el6 pixman.x86_64 0:0.32.4-4.el6 polkit.x86_64 0:0.96-11.el6 sgml-common.noarch 0:0.6.3-33.el6 完了しました!
msmtpの設定
サンプルを参考に設定ファイルを作成。
$ cp /usr/share/doc/msmtp-1.4.32/msmtprc-user.example ~/.msmtprc $ vi ~/.msmtprc
最終的にこんな感じに。
# Example for a user configuration file # Set default values for all following accounts. defaults auth on tls on tls_trust_file /etc/ssl/certs/ca-bundle.crt logfile ~/.msmtp.log # gmail service account gmail host smtp.gmail.com # smtpサーバ port 587 # smtpサーバのポート from user@gmail.com # 送信元メールアドレス user user # 認証に利用されるユーザ password password # 認証に利用されるパスワード # Set a default account account default : gmail
mailxの設定
.mailrcの作成
$ vi ~/.mailrc
先ほど設定したmsmtpの設定を使うようにする。
# set smtp for mailx set sendmail="/usr/bin/msmtp"
送信テスト
送信してみる。
$ mail hoge@example.com Subject: テスト件名 テスト本文 . EOT
エラーが。。。
send-mail: authentication failed (method PLAIN) send-mail: server message: 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvp3 #〜〜〜〜〜〜〜〜〜〜〜〜〜〜(省略)〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 send-mail: server message: 534-5.7.14 ygIFjX33634n_LN73HnYlF-FZ-oE> Please log in via your web browser and send-mail: server message: 534-5.7.14 then try again. send-mail: server message: 534-5.7.14 Learn more at send-mail: server message: 534 5.7.14 https://support.google.com/mail/answer/78754 i15sm36542030pfi.55 - gsmtp send-mail: could not send mail (account default from /root/.msmtprc)
ググる。
phpmailer - Gmail SMTP debug: error "please log in via your web browser" - Stack Overflow
Head over to Account Security Settings (https://www.google.com/settings/security/lesssecureapps) and enable "Access for less secure apps", this allows you to use the google smtp for clients other than the official ones.
書いてあるとおりhttps://www.google.com/settings/security/lesssecureappsにアクセス。
ベストな方法ではないんだろうけど、他にやり方が見つからなかったのでこれにて対応。
参考
CentOS7 on AWS httpサーバ構築ではまったこと
環境
サーバ
EC2インスタンス概要
サーバソフト
作業クライアント
OS X 10.10.5
やったこと
詳しくは書かないが、一応メモとして
- apache実行ユーザの作成
- 不要なサービスの停止
- パッケージの最新化
- cronによるmydnsへIPの通知
- httpdのインストール
- httpdの設定
- httpd.confを弄る
- バーチャルホストの設定
- ディレクトリのオーナー・アクセス権限変更
- SELinuxの無効化
はまったこと
1. SSHで接続できない?
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(中略)〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED」というワーニングが出る。
設定ミスってEC2作り直したんだけど、そのせいで、なりすましだと勘違いされてしまったっぽい。
なんで、SSHの既知のホスト情報を一旦消すと良いみたい。
SSH接続で WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! って言われて接続を拒否られるとき(コメント)
過去の投稿にもありますが、ssh-keygen -R
で消せます。
$ ssh-keygen -R hoge.example.com
これで解決かと思ったんですが。。。
$ ssh -i key.pem ec2-user@hoge.example.com Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
次は認証エラーで繋げず。。。
ググってもなかなか原因が分からず、途方にくれているところ、たまたまAWSのコンソールを弄ってたら
。。。あっ
AMIがRHEL7の場合、初期ユーザが「ec2-user」だったので、CentOS7も同じだろうと思っていたら違いました。
CentOS7の場合は「centos」でした。
見つけたから良かったけど、これは分かりにくい。。。
2. ネットワークコマンドがない?
サーバの疎通を確認するためにdigやnslookupを叩きたいが、デフォルトでは入っていなかった。
$ dig -bash: dig: command not found $ nslookup -bash: nslookup: command not found
で、yumでインストールを試みるが。。。
# dig $ yum install dig Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp No package dig available. Error: Nothing to do # nslookup $ yum install nslookup Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp No package nslookup available. Error: Nothing to do
ない。
と思ったら、digやnslookupはbind-utilsパッケージにいるらしい
digも、hostも、nslookupも入ってない - Snufkinski Memo
CentOS 6をminimalインストールすると、デフォルトではDNS名前解決テスト用のdig,nslookup,hostコマンドがインストールされていません。
CentOS 6にdig,nslookup,hostコマンドをインストールしたい場合、bind-utilsをインストールします。
yum -y install bind-utils
3. httpサーバにアクセスできない?
httpdも動いているし。。。
$ systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2016-02-21 15:43:49 UTC; 33min ago #〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜(省略)〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
IPとドメインの紐付けもちゃんとできてるし。。。
nslookup -type=A hoge.example.com Server: XXX.XXX.XXX.XXX Address: XXX.XXX.XXX.XXX#ZZ Non-authoritative answer: Name: hoge.example.com Address: YYY.YYY.YYY.YYY
firewalldまでいれて80ポートも開けたんだよ!
。。。
いやいや、AWSなんだからセキュリティグループ弄れよって話でした。
Linux インスタンスの Amazon EC2 セキュリティグループ - Amazon Elastic Compute Cloud
とりあえず、おおきくハマったのは以上の3点。
つまらないことで、時間を消費してしまった。。。
Git Flow
Gitの構成管理・運用方法として知られているGit Flowについて学びたいと思います
参考
- 『GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)』
- A successful Git branching model » nvie.com
- git-flow cheatsheet
環境
準備
git flowをサポートしてくれるツール
その名も「git−flow」(直球)をインストールします
$ brew install git-flow ==> Downloading https://homebrew.bintray.com/bottles/git-flow-0.4.1.yosemite.bot ######################################################################## 100.0% ==> Pouring git-flow-0.4.1.yosemite.bottle.tar.gz ==> Caveats Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completion has been installed to: /usr/local/share/zsh/site-functions ==> Summary 🍺 /usr/local/Cellar/git-flow/0.4.1: 15 files, 106.6K # 確認 $ git flow version 0.4.1
git-flow初期化
git-flowを使って初期化を行います
# 開発対象のリポジトリをclone $ git clone https://github.com/mktktmr/ex_git-flow.git Cloning into 'ex_git-flow'... remote: Counting objects: 6, done. remote: Compressing objects: 100% (3/3), done. remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (6/6), done. Checking connectivity... done. $ cd ex_git-flow/ # 「git flow init」でgit flowに必要な初期化を行う # オプション-d は初期設定 $ git flow init -d Using default branch names. Which branch should be used for bringing forth production releases? - master Branch name for production releases: [master] Branch name for "next release" development: [develop] $ $ git branch -a * develop master remotes/origin/HEAD -> origin/master remotes/origin/master $ $ git push -u origin develop Total 0 (delta 0), reused 0 (delta 0) To https://github.com/mktktmr/ex_git-flow.git * [new branch] develop -> develop Branch develop set up to track remote branch develop from origin.
git flowにおけるブランチの役割
master
- リリース用
- プロダクトのバージョンでtagを切る
- 各開発者はこのブランチに対してcommitすることはない
develop
- 開発用
- このブランチに開発中の最新ソースがあるよう管理する
- featureブランチ(後述)をきる元のブランチとなる
- 各開発者はこのブランチに対してcommitすることはない
feature
- 作業用
- 各開発者はこのブランチにcommitをし、作業が終わったらfeatureにPullRequestを送る
release
- バージョン番号の付与などリリースに関する作業を行う
- リリース作業中に発見されたバグはこのブランチにコミットしてよい
- 仕様変更や機能変更は行わない
- releaseブランチでの作業が完了したらmasterブランチとdevelopブランチにmergeし、masterブランチではタグを切る
hotfix
- hotfixブランチはフローにおいて必須ではなく、以下のようなことが発生した場合、適宜作成する
- release後バグが見つかり、かつdevelopブランチのソースがmergeできる状態でない
- バグや障害の対応が早急に必要で次のリリースバージョンを待つことができない
ワークフロー
featureブランチでの作業
# ブランチを最新化(1つのブランチに対して複数の開発者がいる場合) $ git pull Already up-to-date. $ # git-flowでfeatureブランチ追加 $ git flow feature start add-user Switched to a new branch 'feature/add-user' Summary of actions: - A new branch 'feature/add-user' was created, based on 'develop' - You are now on branch 'feature/add-user' Now, start committing on your feature. When done, use: git flow feature finish add-user $ # 確認 $ git branch -a develop * feature/add-user master remotes/origin/HEAD -> origin/master remotes/origin/develop remotes/origin/master $ # featureブランチをリモートにpush $ git push origin feature/add-user Total 0 (delta 0), reused 0 (delta 0) To https://github.com/mktktmr/ex_git-flow.git * [new branch] feature/add-user -> feature/add-user $ # 実装(した体で) $ touch AddUser.java $ $ git add . $ git commit -m "Add AddUser.java" [feature/add-user aae3200] Add AddUser.java 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 AddUser.java $ # pushの前にブランチを最新化 $ git pull origin feature/add-user From https://github.com/mktktmr/ex_git-flow * branch feature/add-user -> FETCH_HEAD Already up-to-date. $ # pushの前にdevelopブランチとmergeしておく(他の開発者が更新してるかもしれない) $ git merge --no-ff origin develop Already up-to-date. $ # push $ git push origin feature/add-user Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 299 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/mktktmr/ex_git-flow.git 114038f..aae3200 feature/add-user -> feature/add-user # ここまできたらPull Requestを送る
デフォルトブランチについて
デフォルトブランチとは
GitHubにてリポジトリを選択した際に、最初に選択されるブランチ。
git flow ではdevelopブランチを起点にして作業をするため、git flowを採用するのなら 作業ミスを防ぐためデフォルトブランチをdevelopにすることが望ましい
デフォルトブランチの設定方法
デフォルトブランチの設定を変更したいリポジトリ開き、「setting」タブを選択
「Branches」を選択し、Default branchの項目のプルダウンからデフォルトにしたいブランチを選び、「Update」をクリックする
Pull Request後のフロー
- PRした内容をレビューをしてもらい、フィードバックをもらう
- テストが通ってない
- コーディング規約に反している
- コードが汚い
- リファクタリングの余地がある
- etc...
- レビューのフィードバックを反映させ、pushする
- 問題がなくなるまで、1〜2を繰り返す
- 管理者がdevelpブランチにマージする
Pull RequestからPR mergeまでの例
pull requestをする
フィードバックがある。。。
# フィードバックをもとに修正 $ vi AddUser.java $ git add . $ git commit -m "Done Refactoring" [feature/add-user b35e838] Done Refactoring 1 file changed, 5 insertions(+) $ # 修正内容をpush $ git push origin feature/add-user Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 365 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/mktktmr/ex_git-flow.git aae3200..b35e838 feature/add-user -> feature/add-user
フィードバックが反映され、問題がなければ、pull requestがマージされる
# pull request がマージされたらローカルのdevelpブランチを更新する $ git checkout develop Switched to branch 'develop' Your branch is up-to-date with 'origin/develop'. $ git pull remote: Counting objects: 1, done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (1/1), done. From https://github.com/mktktmr/ex_git-flow 1e91db3..5b91113 develop -> origin/develop Updating 1e91db3..5b91113 Fast-forward AddUser.java | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 AddUser.java
以上を繰り返し機能を追加していく。
featureブランチを切る粒度については今後の研究課題。。。
releaseブランチでの作業
featureブランチによる機能開発が全て終わり、マージが済んだらリリース作業用としてreleaseブランチを切る
このブランチで行うことはバグの修正のみであり、機能追加などはしてはいけない
# ブランチの確認 $ git branch * develop feature/add-user master $ # 最新の状態にしておく $ git pull Already up-to-date. # git-flowでreleaseブランチを作成する $ git flow release start "1.0.0" Switched to a new branch 'release/1.0.0' Summary of actions: - A new branch 'release/1.0.0' was created, based on 'develop' - You are now on branch 'release/1.0.0' Follow-up actions: - Bump the version number now! - Start committing last-minute fixes in preparing your release - When done, run: git flow release finish '1.0.0' $ # ブランチ確認 $ git branch develop feature/add-user master * release/1.0.0 $ # バグが見つかったので、修正する(という体) $ vi AddUser.java $ git commit -am "Bugfix" [release/1.0.0 8ea7af0] Bugfix 1 file changed, 1 insertion(+) $ # git-flowでrelease 作業のクローズする # git-flow release finishを実行すると以下の処理が走る # 1. releaseブランチがmasterブランチにマージされる # 2. タグの発行 # 3. releaseブランチがdevelopブランチにマージされる $ git flow release finish Missing argument <version> usage: git flow release [list] [-v] git flow release start [-F] <version> git flow release finish [-Fsumpk] <version> git flow release publish <name> git flow release track <name> $ git flow release finish "1.0.0" Switched to branch 'master' Your branch is up-to-date with 'origin/master'. Merge made by the 'recursive' strategy. AddUser.java | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 AddUser.java Switched to branch 'develop' Your branch is up-to-date with 'origin/develop'. Merge made by the 'recursive' strategy. AddUser.java | 1 + 1 file changed, 1 insertion(+) Deleted branch release/1.0.0 (was 8ea7af0). Summary of actions: - Latest objects have been fetched from 'origin' - Release branch has been merged into 'master' - The release was tagged '1.0.0' - Release branch has been back-merged into 'develop' - Release branch 'release/1.0.0' has been deleted $ # タグの確認 $ git tag 1.0.0 $ # ブランチ確認 $ git branch * develop feature/add-user master $ # developブランチのpush $ git push origin develop Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 434 bytes | 0 bytes/s, done. Total 4 (delta 2), reused 0 (delta 0) To https://github.com/mktktmr/ex_git-flow.git 5b91113..8f133fb develop -> develop $ # masterブランチのpush $ git checkout master Switched to branch 'master' Your branch is ahead of 'origin/master' by 5 commits. (use "git push" to publish your local commits) $ git push Counting objects: 1, done. Writing objects: 100% (1/1), 241 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) To https://github.com/mktktmr/ex_git-flow.git 1e91db3..5efe88e master -> master $ # タグをpush $ git push --tag Counting objects: 1, done. Writing objects: 100% (1/1), 175 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) To https://github.com/mktktmr/ex_git-flow.git * [new tag] 1.0.0 -> 1.0.0
hotfixブランチでの作業
# 1.0.0タグからhotfix/1.0.1ブランチを作成 $ git flow hotfix start '1.0.1' '1.0.0' Switched to a new branch 'hotfix/1.0.1' Summary of actions: - A new branch 'hotfix/1.0.1' was created, based on '1.0.0' - You are now on branch 'hotfix/1.0.1' Follow-up actions: - Bump the version number now! - Start committing your hot fixes - When done, run: git flow hotfix finish '1.0.1' # バグを修正する(体で) $ vi AddUser.java # 修正をコミット $ git commit -am "HotFix" [hotfix/1.0.1 4df2872] HotFix 1 file changed, 1 insertion(+) $ $ git push origin $ git branch develop feature/add-user * hotfix/1.0.1 master $ git push origin hotfix/1.0.1 Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 331 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) To https://github.com/mktktmr/ex_git-flow.git * [new branch] hotfix/1.0.1 -> hotfix/1.0.1
バグを修正し、hotfixブランチをpushしたらPRを送る
merge対象はmasterブランチとなることがポイント
特に問題もなく、PRが取り込まれたとする
タグの作成とリリース
タグを切ったら、hotfixとしての対応は終了だが、developブランチと差分が出て入るはずのなので、developブランチにもPRを送り、適宜mergeする
# ブランチを最新化 $ git pull remote: Counting objects: 1, done. remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (1/1), done. From https://github.com/mktktmr/ex_git-flow 8f133fb..f04db69 develop -> origin/develop * [new tag] 1.0.1 -> 1.0.1 Already up-to-date. # タグの確認 $ git tag 1.0.0 1.0.1 $ git checkout develop Switched to branch 'develop' Your branch is behind 'origin/develop' by 3 commits, and can be fast-forwarded. (use "git pull" to update your local branch) # ブランチの最新化 $ git pull origin develop From https://github.com/mktktmr/ex_git-flow * branch develop -> FETCH_HEAD Updating 8f133fb..f04db69 Fast-forward AddUser.java | 1 + 1 file changed, 1 insertion(+) # タグの確認 $ git tag 1.0.0 1.0.1
【Linux】セキュアなサーバを構築するための最低限の設定
サーバ立て直すことにしたのでメモ
環境
CentOS 6.7
前提
OSのインストールは最小構成(minimal)で行っているものとする
参考
『Linuxサーバーセキュリティ徹底入門 オープンソースによるサーバー防衛の基本』
作業用ユーザの作成
rootユーザでの作業はしないようにするため、作業用のユーザを作成
# ユーザ作成 $ adduser hoge # パスワード設定 $ passwd hoge Changing password for user hoge. New password: Retype: password: all authentication tokens updated successfully.
システムのアップデート
システムの状態を最新にする
$ yum -y update 読み込んだプラグイン:fastestmirror 更新処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp 依存性の解決をしています #〜〜〜〜〜〜〜(中略)〜〜〜〜〜〜〜〜〜 selinux-policy-targeted.noarch 0:3.7.19-279.el6_7.8 sqlite.x86_64 0:3.6.20-1.el6_7.2 sudo.x86_64 0:1.8.6p3-20.el6_7 tzdata.noarch 0:2016a-2.el6 udev.x86_64 0:147-2.63.el6_7.1 完了しました!
不要なサービスの停止
動作しているサービスの確認
$ chkconfig --list | grep 3:on auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off blk-availability 0:off 1:on 2:on 3:on 4:on 5:on 6:off crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off iscsi 0:off 1:off 2:off 3:on 4:on 5:on 6:off iscsid 0:off 1:off 2:off 3:on 4:on 5:on 6:off lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off mdmonitor 0:off 1:off 2:on 3:on 4:on 5:on 6:off netfs 0:off 1:off 2:off 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off udev-post 0:off 1:on 2:on 3:on 4:on 5:on 6:off
不要なサービスの停止
$ service ip6tables stop ip6tables: チェインをポリシー ACCEPT に設定中: filter [ OK ] ip6tables: ファイアウォールルールを消去中: [ OK ] ip6tables: モジュールを取り外し中: [ OK ] $ service netfs stop $ service postfix stop postfix を停止中: [ OK ]
ログインの制限
sshから直接rootユーザにログインできなくする
以下のファイルを編集
/etc/ssh/sshd_config
#PermitRootLogin yes
を
PermitRootLogin no
に変更
sshのポートを変更
ウェルノウンポートのままだと攻撃を受けやすいため変更しておく
以下のファイルを編集
/etc/ssh/sshd_config
Port 22
を
Port 20022
に変更
併せてiptablesの設定も変更しておく
以下のファイルを変更
/etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
を
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20022 -j ACCEPT
に変更
$ service sshd restart $ service iptables restart
ネットワークの確認
余計なポートが開いていないか確認
$ netstat -atun Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:20022 0.0.0.0:* LISTEN tcp 0 48 192.168.100.251:20022 192.168.100.100:64595 ESTABLISHED tcp 0 0 :::20022 :::* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:*
ファイアウォールの設定を確認
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:20022 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination
前回立てたサーバーはこれくらいのことしかしてなかった。
今回はもう少し突っ込んで、セキュリティ対策してみようと思う(するとは言っていない)