2016年9月15日

ブロードバンドタワー國武です。

小ネタです。ありがちと言えばありがちなんですが、意外と知らない人もいるみたいなのでご紹介。

例えば CentOS で SELinux を disable にしようとして、某氏にごめんなさいしながら

# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux

としても、SELinux は Disable できません。

$ ls -l /etc/sysconfig/selinux
lrwxrwxrwx. 1 root root 17 8月 4 17:59 /etc/sysconfig/selinux -> ../selinux/config

上記のように、/etc/selinux/config が実体ファイルであり、SELinux もこのファイルしか見てません。しかしsed を掛けてしまうと

$ ls -l /etc/sysconfig/selinux
-rw-r--r--. 1 root root 548 1月 6 11:14 /etc/sysconfig/selinux

のように、実体ファイルとなってしまいます。つまり

  • /etc/selinux/config
  • /etc/sysconfig/selinux

の間で差分ができてしまうということです。

ちなみに Linux の GNU sed には、

       --follow-symlinks

              follow symlinks when processing in place

なるオプションがあって、これをつけると、シンボリックリンク先のファイルを書き換えてくれますが、FreeBSD などに付いているsed にはこの類いのオプションがありません(もしあったら私の見落としです。指摘頂けると幸いです)

なにはともあれ、sed でファイルを書き換える際には、ご注意を。

つい先日 FreeBSD 上の sed で、/etc/aliases を書き換えたら、実はシンボリックリンクで /etc/mail/aliases を書き換えるのが正解だったというのをやってしまったので、自戒を込めて。

ちなみに SELinuxを disable にする例が多いのはなぜでしょう?ログ容量&書き出し時のオーバーヘッドといったことに問題がないのであれば、Permissive の方がいろいろ記録が残っていいのになぁと個人的には思ってます。

本ブログの情報につきましては、自社の検証に基づいた結果からの情報提供であり、
品質保証を目的としたものではございません。

投稿者: Koichi KUNITAKE

XenServerやLinux周りを触ってます。IPv6はボチボチ……