ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

新しいsudoを自分でビルドしてOS Xで使う

OS X Mountain Lion以前のsudoは古く、つい最近も多くのLinuxではすでに修正されている(ただしRHELおよびRHEL互換のLinuxディストリビューションでは修正されていない)のに、古いバージョンが使われ続けていて良くないみたいな話をききました。

いくら待ってもこのぜい弱性をアップルが塞いでくれなさそう(OS X 10.9では修正済みだけど...)なので、本家からソースを引っぱってきて使うまでの流れを調べたので、早速やってみることにしました。

以下はビルドから利用するまでの手順です。「ユーザーの.bash_profileに書くと他のユーザーが使えないじゃないか」とか「\sudo〜を実行されると、システムのsudoが使われるから意味ないじゃないか」という声がありそうですが、ここでは細かい話は置いときます。

■材料

  • sudoのソースファイル
  • Xcode
  • Command Line Tools

■手順

$ mkdir ~/build
(ビルド用ディレクトリを作成)
http://www.sudo.wsからダウンロードする(→ダウンロードフォルダにソースファイルが保存される)

$ mv ~/Downloads/sudo-1.8.7.tar.gz ~/build
(ソースファイルをビルド用ディレクトリに移動)
$ cd ~/build
tar zvxf sudo-1.8.7.tar.gz

(ソースファイルを展開)
$ cd sudo-1.8.7

$ sudo ./configure --prefix=/usr/local
(prefixでパッケージのインストール場所を指定してconfigureファイルを作成)
$ sudo make
(ビルド)
$ sudo make install
(インストール)

$ ls /usr/local/bin/ | grep sudo
sudo
sudoedit
sudoreplay
(実行ファイルが保存されていることを確認)

$ vi ~/.bash_profile
(aliasを記述してコマンドを上書きする)

alias sudo="/usr/local/bin/sudo"
alias sudoedit="/usr/local/bin/sudoedit"
alias sudoreplay="/usr/local/bin/sudoreplay"

$ source ~/.bash_profile
(aliasを反映)

$ sudo -V
(バージョンを確認)
Sudo version 1.8.7
Sudoers policy plugin version 1.8.7
Sudoers file grammar version 43
Sudoers I/O plugin version 1.8.7

■アンインストール

$ cd ~/build/sudo-1.8.7
$ sudo make uninstall

インストール後はsudo vi〜を実行するのをやめて、sudoedit 〜を使った方が良さそうですね。

■関連

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。