やったるでぇ このページをアンテナに追加 RSSフィード

2009-12-11

[][][] SELinuxRuby から操作してみる。 00:40

Fedora に「libselinux-ruby」というパッケージがあります。

これを使うことで、SELinuxRuby からある程度操作することが可能になる。

と、いうことで試してみました。

未熟者なので言葉などおかしいところがあったら是非教えてやってください。。

環境

  • Fedora 12 x86_64
  • ruby-1.8.6.383-4.fc12.x86_64
  • libselinux-ruby-2.0.87-1.fc12.x86_64

インストール方法

インストールはいたって簡単。以下のコマンドを実行するだけです。

# yum -y install libselinux-ruby

中身はこれしかありません。man もありません。

# rpm -ql libselinux-ruby

/usr/lib64/ruby/site_ruby/1.8/x86_64-linux/selinux.so

man がない!

と、いうことで既に libselinux-ruby を使用しているソフトウェアを参考にします。

そのソフトウェアは「puppet」です。過去記事はこちら

関連しそうなソースを見ていくと、

libselinux に用意されているものはそれなりに使えるようです。

この辺りにあるものは一通り使えるはずです…。

# locate selinux | grep man3

使い方

ライブラリロード

libselinux-ruby を利用するためには、selinux.so をロードします。

これで、libselinux-ruby を利用することが可能になります。

require 'selinux'


(深く考えず)使ってみる

selinux.so をロードすると、Selinux という名前のモジュール(?)が作られます。

実際に使ってみました。

SELinux が有効であれば、enable と表示をし、ラベルの表示と設定を行います。

SELinux が無効な場合は、disabled と表示します。

#!/usr/bin/ruby

require "selinux"

if Selinux.is_selinux_enabled == 1
then
  puts "enable"

  # check security context
  puts "/root/.bash_history   security context is     " + Selinux.getfilecon("/root/.bash_history")[1]
  puts "/var/log/messages     security context is     " + Selinux.getfilecon("/var/log/messages")[1]
  puts "/root/work/README     security context is     " + Selinux.getfilecon("/root/work/README")[1]

  # set security context
  Selinux.setfilecon("/root/work/README", "system_u:object_r:httpd_sys_content_t:s0")

  puts "/root/work/README     security context is     " + Selinux.getfilecon("/root/work/README")[1]
else
  puts "disabled"
end

実行結果
# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted
#
# ./selinux.rb
enabled
/root/.bash_history   security context is     system_u:object_r:admin_home_t:s0
/var/log/messages     security context is     system_u:object_r:var_log_t:s0
/root/work/README     security context is     system_u:object_r:admin_home_t:s0
/root/work/README     security context is     system_u:object_r:httpd_sys_content_t:s0

終わり

とりあえず、使えることは分かりました。

引き続き、調査を行ってみることにします。

トラックバック - http://d.hatena.ne.jp/ishikawa84g/20091211/1260459603