管理者権限でのファイル編集

  • 投稿日:
  • by
  • カテゴリ:

このサイトでもいくつか書いてきたが、 OSXをUnixっぽく使う場合には、よく設定ファイルを編集する必要が出てくる。 しかもこれらのファイルは重要なものなので、だいたい一般ユーザーには編集が許可されておらず 管理者権限でないと編集できない場合が多い。

その上、それらのファイルは不可視フォルダにあるファイルだったりするため、 普通のエディターの「開く」メニューでは見つけらなかったりして困りものである。

そしてこれらのことが、OSXが持つUNIX的な便利な機能を使おうとする際に、 敷居が高くなっている原因の一つとなっていた。

ということで、今回はこれをどうにかしてみようと思う。

管理者権限でファイルを編集する方法として、ターミナルを使う順に以下の3つを紹介する。 (本当はもっとあるが、ターミナルを使う度合いとしては大差ないので省略)

  1. ターミナル上でコマンドラインのエディター(vi , pico)を使って編集する
  2. ターミナルから管理者権限でエディターを起動する
  3. PseudoやSkeltonを使い管理者権限でエディターを起動する

1から順にターミナル依存度が減っていき、3になるとターミナルは全く使わない。

ターミナル上でコマンドラインのエディター(vi , pico)を使って編集

ターミナルで以下のように入力し、viやpicoといったコマンドラインで動くエディターを使えば 、 簡単に管理者権限でのファイル編集が可能だ。 ちなみに私はpicoは知らないので、もっぱらviを使う。 (参考:Viの使い方

ファイル名は絶対パス(フルパス)か相対パスで指定する。 意味がわからなかったら、「sudo vi 」まで入力して、そのターミナル上に編集したいファイルをドラッグすると、 勝手にパスが表示されるので便利。

しかしこの方法の弱点として、このコマンドラインのエディターたちはちょっと操作法にクセがあるので、 Jeditやmiといった普通のエディターを使っている人には敷居が高いという点がある。

ターミナルから管理者権限でエディターを起動する

次に2番。
コマンドラインから管理者権限で好きなエディターを起動し、ファイルを編集する。 コマンドラインのエディターを使わない分、一段敷居が下がる。

この方法は、ターミナルに以下のように入力する。
ここではJedit X と miと テキストエディット の例を並べておくので、 どれか好きな一つを使う。全部使ってもあまり意味はない。 アプリケーションを別のフォルダに置いている人は、 アプリケーションをターミナルにドラッグしてみたりして、対応する。 また他のエディタを使っている人も、類推してなんとかする。

(上記「?」は文字化けになっているが、バックスラッシュ(or 半角¥)に置き換えて下さい)

ファイル名は、1の場合と同様、ターミナル上に編集したいファイルをドラッグするとパスが表示されるので、 必要な人はこれを使うといいだろう。 この場合、編集したいファイルが不可視ファイルである場合は、 TinkerToolなどで不可視ファイルをFinderで表示できるようにすることで対応する必要あり。

開いた後は、普通に編集して普通に保存する。
管理者権限でないと編集できなかったり、更に不可視ファイルだったりするファイルは、 それだけ大事なファイルだということなので、オリジナルをいきなり編集するのではなく、 別名保存でファイルのコピーを残しておくことを強くオススメします。

(参考:macosxhints - A shell script to edit text files as root in the GUI

PseudoやSkeltonを使い管理者権限でエディターを起動する

3は「管理者権限でアプリケーションを起動するアプリケーション」を使う。

一つはMACFreak さんで紹介されていた Pseudo(share ware)、 もう一つはSkeleton Key で、どちらも管理者権限で動かしたいアプリケーションのアイコンを、 Pseudo or Skelton Key に Drug & Dropすると、 そのアプリケーションを管理者権限で開くことができるというものである。 ちなみに前者はshare ware(15$) , 後者は free ware。

さてアプリケーションを開いた後には編集したいファイルを開くのだが、 そのファイルが不可視ファイルである場合には、 Jedit X 以外は「開く」メニューからフォルダをクリックしていくことで見つけることはできない。 この場合、虫メガネの検索フィールドにパスを打ち込んで行く(例 /etc/httpd/http.conf)。 途中まで打ち込むと補完されて行くのがうれしい(Tigerのみ?)。

(参考: 超簡単 Mac OS XのローカルでCGI (SSIもPHPも)

結論:私はviでいいです。