myfinderの技術や周辺的活動のblog

2010年1月24日日曜日

SELinuxにソフトウェアの動作を阻まれた場合の対応

SELinuxは真っ先に切られがちなものですが、予期しない動作、挙動を防ぐ意味でも切らずに運用すべきです。
が、SELinuxに動作が阻まれたとき、どうやってそれを知るか、ということと、どうやって許可するのかということについてはあまり情報がないです。
ここでは自分がやっている方法についてまとめます。

SELinuxのアクセス制限に阻まれたものは、/var/log/audit/audit.logに出力されるので、このログからポリシーを作って許可するのが楽でいいです。
阻まれているかどうかは上記ファイルをtailしてソフトウェアを動かせばわかります。

以下手順


# setenforce 0
# cat /var/log/audit/audit.log | audit2allow -m local > local.te
# checkmodule -M -m -o local.mod local.te
checkmodule: loading policy configuration from local.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 6) to local.mod
# semodule_package -o local.pp -m local.mod
# semodule -i local.pp
# setenforce 1


必要に応じてlocal.teの内容は書き換えています。

2010年1月23日土曜日

アカウントに閉じたPerl5の環境を作る(またはぐちょぐちょなPerl環境をなかったことにする話)

Perlは大抵の環境にはじめから入っているので大変便利なんだけども、Perlのバージョン含めていろいろとコントロールしたいニーズもあったりすると思います。

例えばRedHat系のLinuxだとyumとかで何かのパッケージを入れるときに、CPANモジュールもrpmで入ってしまったりなどして、システムのPerlべったりにものを作るとあとあと面倒なことになったりすることもあるかもしれません。
そんなときには、アカウントに閉じたPerlの環境を作ってしまうのがよいでしょう。

今回はCentOS5.3(x86_64)でのやり方。(CentOS5.3のPerlって5.8.8と古いので丁度いいかなと思う)
hogeというユーザでやる事を想定します。

1.とりあえずperlをビルドしたりする場所を作る

今回は「~/local/perl」とかにしときます。
まず、Perlのソースコードを落としてくるディレクトリを作っときます。
~/local/srcとかでいいでしょう。


$ mkdir -p ~/local/src


2.Perlのダウンロードとインストール


$ cd ~/local/src
$ wget http://www.cpan.org/src/perl-5.10.1.tar.gz
$ tar zxvf perl-5.10.1.tar.gz
$ cd perl-5.10.1
$ sh Configure -Dprefix=$HOME/local/perl-5.10.1 -Dusethreads -Dusemultiplicity -Duse64bitall
$ make
$ make test
$ make install
$ ln -s ~/local/perl-5.10.1 ~/local/perl


これで~/local/perl/bin/perlとか打てば呼べるようになります。

3.PATHに追加

インストールできたとはいえ、いちいち~/local/perl/bin/perlとか呼ぶのはめんどくさいです。
そういうときは環境変数PATHに~/local/perl/binを追加しときましょう。
下記行を~/.bashrcとかに入れとけばOKです。


export PATH="$HOME/local/perl/bin:$PATH"


とりあえずログアウトしてログインするか、sourceコマンドで環境変数に反映させときましょう。

4.おわりに

ここまでやっとくと、hogeユーザにおけるperl関係のコマンドは全部~/local/perl/binの方が優先して使われるようになります。
なので、cpanコマンドとかも/usr/bin/cpanとか明示しない限りは~/local/perl/bin/cpanが使われ、hogeユーザでインストールしたcpanモジュールは~/local/perl/libに入るようになります。

また、この辺は重要なポイントの一つですが、コマンドラインから使うPerlスクリプトを書くときにはshebang行に「#!/usr/bin/perl」とか書くと思いますが、今回のように独自にインストールした場合には「#!/usr/bin/env perl」と書いておくようにしましょう。
(#!/home/hoge/local/perl/bin/perlでもいいです)