ログインシェルを変更する -bash の脆弱性対策-
Mac OS X のログインシェル(ターミナルのデフォルトのシェル)を変更する方法を紹介します。
最近、GNU bash に脆弱性が見つかり、結構大きなニュースになっています。内容としては、bash の環境変数の処理に脆弱性があり、外部から環境変数の設定が可能である場合、悪意のあるユーザから意図していない任意のコードを実行される危険性があるようです。(参考ページ)
既に多くのOSプロジェクトでは脆弱性を修正したパッチを配布していますが、執筆現在のところ Mac OS X のアップデートはまだありません。とはいえ、海外のサイトによると Apple は準備ができ次第、パッチを配布するらしいですし、 もう少しの辛抱かなと思います。
※2014/9/30 追記 Apple が脆弱性を修正したアップデートを公開しました。アップデートはこちらからダウンロードできます。(Mavericks版)
アップデート方法は、ダウンロードした「BashUpdateMavericks.dmg」を展開し、中身の pkg ファイルを実行、起動するインストーラの案内に従って、インストールを行います。
Webサイトなどで外部に公開している場合や、公衆LANなどで Mac を検索可能な設定にしていない限り、そこまで影響のある脆弱性ではありませんが、いい機会なので脆弱性対策の一つとして、ログインシェルを変更する方法をまとめときます。
ちなみに、bash に脆弱性そのものの対策ではないため、あくまでやらないよりやったほうが良いレベルだとご理解お願いします。脆弱性を修正する方法としては、修正済みの bash を別途インストールし、既存の bash と入れ替える方法があります。ソースからコンパイルするのが面倒であれば、MacPorts や Home Brew を使って修正済みの bash をインストールすればよいかと思います。方法についてはこのサイトで詳しく紹介されています。
OS X のログインシェルを変更する
1. 変更できるシェルを確認する。
変更できるシェルはリストで管理されているため、変更の前に確認します。ちなみに、自分で別途用意したシェルを使いたい場合、このファイルの末尾に追加するば、ログインシェルとして使うことができるようになります。
#ログインシェルとして利用可能なシェルのリストを確認する less /etc/shells
私の環境では、bash, csh, ksh, tcsh, zsh が使用可能なようです。
# List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh
2.ログインシェルを変更する
下記のコマンドでログインシェルを変更します。 例として csh に変更します。
#ログインシェルを csh に変更 chpass -s /bin/csh
ユーザのパスワードが求められるので入力します。
Changing shell for user. Password for user:
3. 変更を確認する
念のため、変更をシステム環境設定から確認しときます。ログインシェルを変更したいユーザの詳細オプションからログインシェルの項目を確認します。ちなみに、この詳細オプションからでもログインシェルを変更できます。
詳細オプションの表示方法
「システム環境設定」→「ユーザとグループ」→「左下の南京錠のアイコンをクリックし、ロックを解除」→
「ログインシェルを変更したいユーザを右クリック」→「詳細オプション」