追記

meta's blog - No Unix, No Life

筆者について - No Unix, No Life

とある元大学院生の UNIX 系日記。FreeBSDを通じてOSSに囁かな貢献を。
FreeBSD の ports メンテナ (net/xrdp)とか Opengate (fork) の開発とかやってます。
2012年3月末に退院しました。


2012-05-17 Bluetooth [長年日記]

[FreeBSD] FreeBSD で Apple Wireless Keyboard を使う

前回のFreeBSD で Bluetooth マウスを使う…(ryに引き続き Bluetooth キーボードを使います。

カーネルモジュールのロードは前回すでにやっているので省略。マウスの時と同様にデバイスアドレスを調べます。

# hccontrol -n ubt0hci inquiry

デバイスアドレスを /etc/bluetooth/hosts に書く。

b8:f6:b1:02:xx:xx applewirelesskbd

bthidd.conf に設定を書く。

# bthidcontrol -a applewirelesskbd query >> /etc/bluetooth/bthidd.conf

hcsecd.conf の設定を書く。pin の部分には任意の PIN を設定する。

device {
    bdaddr  b8:f6:b1:02:xx:xx;
    name    "Apple Wireless Keyboard";
    key     nokey;
    pin     "0000";
}

そして、bluetooth 関係のサービスを restart する。

# service bthidd restart
# service hcsecd restart

そして、

# l2ping -a applewirelesskbd

を実行しながら、hcsecd.conf に設定した PIN と同じものをタイプして最後に Enter キーを叩く。

これで無事繋がって Apple Wireless Keyboard で入力ができるようになった。でもこんなに自信がないのは久しぶり…。FreeBSD Handbook あたりを見ながらよろしくやってみよう。

Bluetooth キーボードが HAL から認識されていなくて、USB キーボードを挿していないと使えないのはマウスの時と同様でした。あとでちゃんと調べよう…。

FreeBSD で Apple Wireless Keyboard を使用する際の制限事項

以上の手順で Apple Wireless Keyboard が FreeBSD で使えるようになりましたが、いくつか制限事項がありました。

思いつくだけ挙げておきます。

  • CapsLock キーの LED が動作しない
    • CapsLock の状態に関わらず、CapsLock キーの LED は消灯したままです
  • Home/End や PageUp/PageDown が入力できない
    • Mac では できる Command+→ で End 相当の操作などができない
  • fn キーが使えない
    • fn キーにはキーコードが割り当てられていないので使う方法がなさそうです
  • F1-F12 キーは F1-F12 キーとして動作する
    • ホットキーとしては使えません

2012-05-14 Bluetooth [長年日記]

[FreeBSD] FreeBSD で Bluetooth マウスを使う…も USB マウスを挿していないと使えない

Mitzyuki's Blog :: FreeBSD で BlueTooth マウスを利用する あたりを参考にしました。

使うマウスは1000円くらいで買ったSoftBank SELECTION Bluetoothレーザーマウス MO01

Bluetooth を使うためにカーネルモジュールをロードする。

cat >> /boot/loader.conf <<EOF
netgrph_load="YES"
ng_ubt_load="YES"
vkbd_load="YES"
EOF

Bluetooth のデバイスアドレスを調べる。

# hccontrol -n ubt0hci inquiry

出力結果の BD_ADDR の部分がデバイスアドレスなのでこれを /etc/bluetooth/hcsecd.conf に書き足す。

# softbankmouse
device {
        bdaddr 00:a0:b0:e2:xx:xx;
        name    "softbankmouse";
        key nokey;
        pin nopin;
}

同じくデバイスアドレスを /etc/bluetooth/hosts に書く。

00:a0:b0:e2:xx:xx softbankmouse

その後も参考ページと同様に…。

# bthidcontrol -a softbankmouse query > /etc/bluetooth/bthidd.conf

で、これでは参考ページの丸写しなので補足。/etc/rc.conf に以下の3行を追加して Bluetooth 関係のデーモンを起動させる。

bluetooth_enable="YES"
bthidd_enable="YES"
hcsecd_enable="YES"

service(8) コマンドでサービスを起動。ubt0 の部分は環境に応じて適当に。

# service bluetooth start ubt0
# service bthidd start
# service hcsecd start

以上で繋がるはずです。繋がったかどうかは l2ping(8) コマンドで確かめます。

# l2ping -a softbankmouse
0 bytes from softbankmouse seq_no=0 time=588.802 ms result=0
0 bytes from softbankmouse seq_no=1 time=34.595 ms result=0
^C

softbankmouse の部分は /etc/bluetooth/hosts に書いた名前を。

これで無事 Bluetooth マウスが X11 上で使えるようになったんですが、なぜか USB マウスを引っこ抜くと Bluetooth マウスまで一緒に使えなくなりました。マウスとキーボードは HAL が面倒を見ているので hald が Bluetooth マウスを見つけられてないんだと思うんだけど…眠いのでまた今度。


2012-05-10 SSL/TLS [長年日記]

[Network][FreeBSD][Linux] openssl で HTTPS/POPS/IMAPS などのプロトコルの様子を見る

よく忘れるのでメモ。

通信内容を確認するためやテストのために telnet を使って HTTP や POP などのプロトコルを人間が手で喋ることはよくあると思います。こんなん。

$ telnet www.google.com 80
Trying 74.125.235.113...
Connected to www.l.google.com.
Escape character is '^]'.
GET /
HTTP/1.0 302 Found
Location: http://www.google.co.jp/
(略)
Connection closed by foreign host.

SSL を使っているときにはどうするかというと…。OpenSSL を使って次のようにコマンドを実行します。

$ openssl s_client -connect host:port

上の telnet の例と同じように Google に HTTPS でアクセスするには、

$ openssl s_client -connect www.google.com:443
(略)
GET /

telnet-ssl とかいうのもあるけどこっちの方が楽。

[通信] IIJmio の 945円 SIM (128kbps) は IIJ 網内なら速度制限がないというのは本当か

結論からいうと 嘘でした。というと語弊がありますが、IIJ 網内なら何でもかんでも速度無制限というわけではなく、DNS Lookup などのトラフィックに限るようです。

調べてみるきっかけになったのはこちら。まあやっぱりね、という感じです。 このスレの >>607 も DNS についてのみ言及したのでしょう。

IIJmio 高速モバイル/Dサービス 945円 SIM5枚目
http://anago.2ch.net/test/read.cgi/mobile/1335957944/607/
枚目

596 :いつでもどこでも名無しさん:2012/05/09(水) 22:45:08.82 ID:???0
   google dnsを使う

607 :いつでもどこでも名無しさん:2012/05/10(木) 01:01:56.87 ID:???0
   >>596
   せっかくIIJ網内ならスループット制限無しなのに、
   わざわざ制限対象になる外のDNS引きに行かなくてもいいだろ

実際に速度を測ってみました。

$ wget -O /dev/null ftp://ftp.iij.ad.jp/pub/FreeBSD/ls-lR.gz # 3.8KB/s
$ wget -O /dev/null ftp://ftp.allbsd.org/pub/FreeBSD/ls-lR.gz # 4.15KB/s

少なくとも FTP においては IIJ 網内だろうと網外だろうと速度は同じで 128kbps の制限がかかっていました。

そんだけ。

本日のツッコミ(全1件) [ツッコミを入れる]

Σ Yusuke [starttlsのオプションとかもあるよねぇ。うまく動かないバージョンもあった気がするけど。]


2012-05-08 SQLite2 → MySQL [長年日記]

[FreeBSD][Linux] Roundcube の使用するデータベースを SQLite から MySQL へ移行する

タイトルには Roundcube と書いてますが、それに限らず SQLite から MySQL へ移行する方法です。

今回 MySQL に移行するのは Roundcube で使っていた SQLite2 のデータベース。

このへんから拾ってきた Python スクリプトを使います。スクリプト自体は SQLite3 を想定しているようですが、SQLite2 の dump データに対しても問題なく使えました。

あとは dump, convert, import するだけ。

$ sqlite /usr/local/www/roundcube/db/sqlite.db | python sqlite3-to-mysql.py > roundcube.mysql
$ mysql -uroundcube -p roundcubemail < roundcube.mysql

ちなみに、元の SQLite2 のデータベースは 343MB ほど、SQLite2 で dump した時点で 216MB ほどありました。

使ったもの: sqlite3-to-mysql.py

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

Σ meta [これとか…? http://wiki.postgresql.org/wiki/Converting_from_ot..]

Σ Noppi@noppi.jp [おぉ、探せば出てくるものなんですね。ちょっとチェックしてみます。 ちなみに、E-mailアドレスを記入してもspa..]

Σ meta [それ名前欄なんだぜ…]


2012-04-27 HTMLメールを作成しない [長年日記]

[Windows][Linux][FreeBSD] Thunderbird で mailto: からメールを作成すると HTML メールになる

メールの作成に HTML は使わないように設定していてもブラウザから mailto: リンクを踏んで Thunderbird が呼び出されると、何故か HTML メールで作成になってしまう。

mail.html_compose

を false にセットする。

メールアカウントごとに個別に HTML メールを使うかどうかの設定をする手間も省けて便利。

参考: Thunderbirdでブラウザのmailto:からだと強制的にHTML形式になる


2012-04-10 インフラ [長年日記]

[雑記] ガス料金の中の「リース料」

ふとガス料金の明細を見ると「その他リース料」という名目で月々200円がガス料金に上乗せされてました。

ググってみると一般的にはガス警報器のリース料という場合が多いらしい。 そもそもガス警報器は賃貸物件の前の借主が部屋に残していったものでガス会社から借りたものではないし、200円を引くとは契約のときにヒトコトも説明されていない。

ガス警報器を見てみると、有効期限は2010年と書いてある。仮にこのガス警報器が、賃貸物件の前の持ち主がガス会社から借りていたものだとしても、有効期限の切れたものに月々200円も払ってやる筋合いはない。

今住んでいる部屋に住み始めてガスを使い始めたのが2月なので、有効期限の切れたガス警報器に200円を2ヶ月分取られていることになる。インフラ屋だからって客を馬鹿にしてる調子に乗ってるのか知らないけど、こんないい加減な話を認めるわけには行かないので、警報機を新しいものに交換させた上で、有効期限の切れた警報機を押し付けられた2ヶ月分のリース料400円を取り返してみる。

IMG_1659.JPG

本日のツッコミ(全1件) [ツッコミを入れる]

Σ 通りすがり [あれ、オチがない‥]


2012-04-06 ハイブリッド [長年日記]

[雑記] フル電動自転車で公道を走る

前回の記事 フル電動自転車を原動機付自転車として登録する でフル電動自転車を保安基準に適合させ、ナンバーを取得し、自賠責に加入し公道を走れるようになりました。実際に原動機付自転車として公道を走ってみたのでレビューしてみます。

マンションの管理人さんに怒られる

ナンバープレートが付いた以上原動機付自転車なので、マンションのバイク置き場に止めていたら「自転車をバイク置き場に止めないこと!!」と張り紙を貼られていました。

め「管理人のおいちゃん、おるかーー?」
管「おるでー」
め「これな、バイクだからここでいいんよ、原動機付自転車なんよ。免許いるんよ。
  ナンバープレートここやで、トントン(ナンバープレートを指で叩きながら)」

と説明しなければなりませんでした。

ヘルメットが必要

見た目が自転車でも、原動機付自転車として登録した以上ヘルメットをかぶる必要があります。

道路交通法 第七十一条の四
2 原動機付自転車の運転者は、乗車用ヘルメットをかぶらないで原動機付自転車を運転してはならない。

後ろから見ると、ナンバープレートが付いているので原付だとわかるのでいいんですが、前から見るとヘルメットをかぶって自転車に乗ってるようにしか見えないので少し恥ずかしいです。

歩道を走行できない

本当は自転車の歩道走行もダメです。特に最近は自転車の歩道走行を取り締まる方向になってきてるようですが、地方によってはまだまだ黙認されているところがあります。

いくら見た目はナンバープレートの付いただけの自転車でも、原動機付自転車になったので歩道走行は完全にアウトです。郵便配達・新聞配達のバイク(原付二種)が配達中に歩道を走っているのさえ黙認されているので、見た目が完全に自転車な原動機付自転車なら検挙されないとは思いますが法的にはダメなもんはダメです。

ということで、原付は車道を走らなければならないんですが 30km/h という建前でも実際は 4,50km/h 出る普通の原付で幹線道路を走ると危ないと言われているのに、本当に最高で 20km/h しか出ない電動自転車で幹線道路を走るのは無理です。モーターを人力でアシストしてやるともうちょっと速度は出ますが。

常に二段階右折をする必要がある

法的にという意味ではなく、ヘルメットの項で触れたように前から見るとただの自転車にしか見えないので、小回り右折をしようと、道路の真ん中で右折待ちをしようとすると対向車のドライバーが(゚Д゚)ハァ?という目で見てきます。

法的には自転車は常に二段階右折をしなければなりませんが、軽車両の中でも原動機付自転車は基本的に小回り右折するように定められています(道路交通法 第三十四条)。

第三十四条
2 自動車、原動機付自転車又はトロリーバスは、右折するときは、あらかじめその前からできる限り道路の中央に寄り、かつ、交差点の中心の直近の内側(道路標識等により通行すべき部分が指定されているときは、その指定された部分)を徐行しなければならない。
3 軽車両は、右折するときは、あらかじめその前からできる限り道路の左側端に寄り、かつ、交差点の側端に沿つて徐行しなければならない。
5 (長いので省略|二段階右折に関する記述)

以下の場合を除いて原付は基本的に小回り右折をしなければなりません。

  • 同一方向に右左折車線も含めて3車線以上ある場合
  • 二段階右折の標識がある場合

ただ、(二段階右折禁止でなければ)それ以外の交差点で二段階右折をしても怒られません。 問題は二段階右折禁止だったらどうするか…。

小回り右折をしようとすると自転車にしか見えないので対向車が(゚Д゚)ハァ?という目で見てくる、二段階右折をしようとすると二段階右折禁止なので捕まる(´・ω・`) どうしたらいいんだ…。

押して歩くか…。

本日のツッコミ(全1件) [ツッコミを入れる]

Σ 通りすがり [『(゚Д゚)ハァ?』に吹いたので記念コメント 気が向いたらまた見に来るかもしれません。]


2012-04-03 電チャリ合法化 [長年日記]

[雑記] フル電動自転車を原動機付自転車として登録する

巷で話題の違法なフル電動自転車を原動機付自転車として登録しました。以下はその記録です。

真似して登録出来なかったとか、保安基準を満たせず検挙されたとか、そういうのは知らないので自己責任でお願いします。

入手の経緯

友人がとにかく安い原動機付自転車を探していて、ろくに注意書きも読まずに E-Bike20 というフル電動自転車を通販で購入しました。商品が到着してから公道を走行できないことに気づき、途方にくれている友人から格安で譲ってもらったのがはじまりです。

法律のお勉強

フル電動自転車は道路交通法上、原動機付自転車に該当します。E-Bike20 の場合、モーターの定格出力は 250W なので第一種原動機付自転車に該当し、無事保安基準を満たし登録できれば普通運転免許で運転できます。

次に E-Bike20 が原動機付自転車の保安基準を満たすにはどんな改造が必要なのか調べてみました。 道路運送車両の保安基準の細目を定める告示 (PDF:10ページ目〜)にも合わせて目を通さなければなりません。

(長さ、幅及び高さ)
第五十九条  原動機付自転車は、告示で定める方法により測定した場合において、長さ二・五メートル、幅一・三メートル、高さ二メートルを超えてはならない。(以下略)

(細目) ↑大きさはパスしているので特に改造は必要なし。

(接地部及び接地圧)
第六十条  原動機付自転車の接地部及び接地圧は、道路を破損するおそれのないものとして、告示で定める基準に適合しなければならない。

(細目) ↑これも問題なくクリアー。

(制動装置)
第六十一条  原動機付自転車(付随車を除く。)には、走行中の原動機付自転車が確実かつ安全に減速及び停止を行うことができ、かつ、平坦な舗装路面等で確実に当該原動機付自転車を停止状態に保持できるものとして、制動性能に関し告示で定める基準に適合する独立に作用する二系統以上の制動装置を備えなければならない。 (以下略)

(細目) ↑右手が前ブレーキ、左手が後ろブレーキと、独立に作用する二系統の制動装置が付いているのでクリアー。

(ばい煙、悪臭のあるガス、有害なガス等の発散防止装置)
第六十一条の二  原動機付自転車は、運行中ばい煙、悪臭のあるガス又は有害なガスを多量に発散しないものでなければならない。 (以下略)

(細目) ↑電気モーターは有害な排気ガスなどは出ないので飛ばします。

(前照灯)
第六十二条  原動機付自転車(付随車を除く。)の前面には、前照灯を備えなければならない。(以下略)

(細目) ↑これもクリアーしていますが唯一改造した点は、「原動機(モーター)が作動している場合に常に点灯している構造」になるよう、スイッチを廃止した点です。前照灯の灯火の色は白色または淡黄色となっていますが、これは無改造でクリアー。

(番号灯)
第六十二条の二  原動機付自転車の番号灯は、夜間にその後面に取り付けた市町村(特別区を含む。)の条例で付すべき旨を定めている標識の番号等を確認できるものとして、灯光の色、明るさ等に関し告示で定める基準に適合するものでなければならない。 (以下略)

(細目) ↑番号灯(ナンバー灯)は付いていないので付ける必要があります。ポイントは2つ。

  • 夜間後方8メートルからナンバープレートの内容を読み取れること
  • 灯火の色は白
(尾灯・制動灯・方向指示器・速度計)
第六十二条の三  原動機付自転車(最高速度二十キロメートル毎時未満のものを除く。以下この条、第六十二条の四、第六十三条の二及び第六十五条の二において同じ。)の後面には、尾灯を備えなければならない。

最高速度が 20km/h 未満のものは尾灯、ブレーキランプ、ウィンカー、速度計の装備は免除されます。 E-Bike20 の仕様では最高速度 20km/h 未満と書かれているので信じます。 この最高速度 20km/h 未満の車両に対するゆるい規定のお陰で、全体を振り返っての改造箇所は少なくて済みました。

※ ナンバー取得後、実際に公道上で最高速度をGPSで計測してみたところ、本当に 20km/h も出ませんでした。思ったよりスピードが出なくてがっかりする反面、ウィンカーなどを付けると大改造が必要になるのでホッとしました。

(後部反射器)
第六十三条  原動機付自転車の後面には、後部反射器を備えなければならない。

(細目) ↑赤い後部反射器ははじめから付いていました。車両の後ろに付けるものの色は基本的に赤です。

(警音器)
第六十四条  原動機付自転車(付随車を除く。)には、警音器を備えなければならない。

(細目) ↑チリンチリンというベルではなくブザーがはじめから付いていました。

(後写鏡)
第六十四条の二  原動機付自転車(付随車を除く。)には、後写鏡を備えなければならない。

(細目) ↑自転車屋さんで1200円くらいで買ったものを装着しました。

(消音器)
第六十五条  原動機付自転車(付随車を除く。以下この条において同じ。)は、騒音を著しく発しないものとして、構造、騒音の大きさ等に関し告示で定める基準に適合するものでなければならない。
2  内燃機関を原動機とする原動機付自転車には、騒音の発生を有効に抑止することができるものとして、構造、騒音防止性能等に関し告示で定める基準に適合する消音器を備えなければならない。

(細目) ↑いわゆるマフラーです。内燃機関(エンジン)を原動機とする車両ではないので必要ありません。

(乗車装置)
第六十六条  原動機付自転車の乗車装置は、乗車人員が動揺、衝撃等により転落又は転倒することなく安全な乗車を確保できるものとして、構造に関し告示で定める基準に適合するものでなければならない。

(細目) ↑椅子(サドル)です。付いてます。セグウェイや電動キックボードのような立ち乗りする車両では、椅子はありません。立ち乗りするので乗車装置は床とも言えますが、恐らく乗車装置としては認められないので大改造が必要になるでしょう。

改造した場所

以上で紹介した通り、原動機付自転車の保安基準を満たすために改造を行いました。改造点は、

  • 前照灯を消灯できないように(モーターのスイッチと連動するように)変更する
  • ナンバー灯の装着
  • 右バックミラーの装着

の3点でした。

「最高速度が 20km/h のものは除く」という部分が大変ありがたく、配線を引いて灯火を増設するというめんどくさい改造はほとんど行わずに済みました。唯一ナンバー灯くらいです。

それと、原動機付自転車になるのでヘルメットが必要になるのは言うまでもありません。

書類を持って市役所へ

原動機付自転車の登録には一般的に、

  • (車台番号と排気量の記入された)販売証明書または譲渡証明書
  • いちど登録された車両なら廃車証明書
  • 認印

が必要です。最初の所有者である友人が電動自転車を購入したお店は、基本的にサポートせず売りっぱなしのようで、 販売証明書は付属せず、後からの発行もしてくれなかったようです。

どっちみち自分は2番目の所有者なので、友人に依頼してネットで拾ってきた譲渡証明書を記入、捺印してもらいました。車台番号ですが、E-Bike20 はハンドルの付け根のところに車台番号(っぽい数字)が打刻されていたのでそれを記入しました。

そしていざ市役所へ…行ったのは4月2日です。原付の場合、4月1日時点で登録されていると税金1000円がかかり、年度の途中で廃車にしても戻って来ないため、4月2日登録としました。

譲渡証明書はあるが廃車証明書がないという、いちども登録せずに譲渡された車両である というところを突っ込まれるかと懸念していましたが、そこは問題なし。住所や氏名を記入して、排気量のところに 0.25 と記入し、CCのところを二重線で消して「kWCC」と書いて書類を渡した所で、担当者が書類を持って奥に引っ込んでしまいました。

しばらくすると上司と思われる方が戻ってきて「タイヤはいくつ付いていますか?」と聞かれました。「2つです」と答えると、上司は「600W以下のモーターは50ccの原付と同じ扱いで〜ここをこうやって〜」と最初の担当者に説明を始めました。わかってる人のようでその後の手続はスムーズに行きました。

そんなこんなで、持参したのは譲渡証明書1枚と認印だけで現車確認もなく案外あっさりナンバープレートをもらえました。

IMG_1637.JPG

ナンバープレート取得後

無事、ナンバープレートを取得出来ましたが、公道を走るには自賠責に加入する必要があります。 これはコンビニで加入できるのでちゃちゃっと加入しました。

そして、ナンバープレートを装着。

IMG_1645.JPG

どうみてもチャリにしか見えない車両にナンバープレートが付いているシュールな乗り物になってしまいましたが、晴れてれっきとした原動機付自転車になりました。ナンバー灯を付けた後の写真を取り忘れていたので、写真はナンバー灯を取り付ける前のものです。

乗り心地やパワーについてはまた後日レビューします。

かかった費用

  • 車両取得: 34000円 (で譲ってもらった)
  • 右バックミラー: 1200円くらい
  • 前照灯改造: 0円
  • ナンバー灯: 1000円くらい
  • ヘルメット: 2000円くらい
  • ヘルメットロック: 500円くらい
  • U字ロック: 1000円くらい
  • 自賠責(1年): 7000円くらい

合計すると45000円以上かかっていますが、中古のカブが買えるとかそういうことは言わないでください…。改造とナンバー取得をやってて楽しかったからいいんです。

長くなりましたが以上です。

本日のツッコミ(全2件) [ツッコミを入れる]

Σ @bsdhack [はじめまして。 遙か昔 HONDA から発売されていた people という自転車にしか見えない原付を思い出しまし..]

Σ meta [コメントありがとうございます。 そのままでは違法なものを堂々と公道を走らせて見たいという興味本位からでしたが、 ..]


2012-04-02 諸行無常 [長年日記]

[通信][雑記] さよなら mova

2012年3月31日いっぱいで、NTT ドコモの mova がサービスを終了しました。

写真は初代 premini SO213i です。 携帯の持ち込みが禁止だった高校時代、コソコソメールするのに大活躍してくれた端末です。

メイン端末は FOMA にしましたが、2004年時点ではサービスエリアが mova に及ばずデュアルネットワークサービスを契約して、mova のサービス終了が発表されてからはこの日のためだけに残していました。

4月1日の午前1時頃には通話しようとすると話し中に、通信しようとすると「iモード未契約です」と表示されるようになっていました。朝起きると圏外になっていましたが停波スケジュールは余裕を持っているようで、場所によっては2日の昼過ぎでもアンテナが3本立つ(通信・通話はできない)ことがありました。

mova のサービス終了で、日本の携帯電話に於いて PDC 方式は消滅しました。携わった技術者の皆さん、お疲れ様でした。

IMG_1635.jpg


2012-03-17 設定ファイルの編集などなど [長年日記]

[FreeBSD][Linux] sudo vim より sudoedit を使うべき理由

Linux や FreeBSD を使っていて、設定ファイルを書き換える際に root 権限が必要な場合に sudo vi(m) や sudo emacs を実行してしまう人は少なくないと思います(「"sudo vi" 自宅サーバ」などで検索すると山ほど出てくる。昔は自分もよくやってました)

しかし sudo で vim や emacs などのエディタを起動するべきではない理由がいくつかあります。そして、代わりに sudoedit を使うと嬉しいことがあります。

  1. 自分の .vimrc や .emacs を使用できる
  2. ユーザの権限の昇格を厳密に管理できる

2つ目のセキュリティ上の理由は説明されることが多いので後でさらっと流します。

自分の .vimrc や .emacs を使用できる

例えばこれは FreeBSD の /etc/rc.firewall を sudo vim で開いた例です。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2012-03-17+2.18.18.png

なんかモノクロでしょぼいです。これは sudo で vim を起動すると root の .vimrc を見に行くためで、/root/.vimrc が存在しないと寂しい表示になります。ところが sudoedit を使うと、以下のように自分が育ててきた .vimrc を読み込んでくれるのでハイライト表示や行数、文字コード、改行コードなどが表示されて便利です。

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2012-03-17+2.21.05.png

これだけで sudoedit を使う価値があります。自分の好みのエディタを環境変数 EDITOR にセットするよう .bashrc や .zshrc などに書くのを忘れずに。

ユーザの権限の昇格を厳密に管理できる

はい、2つ目。

EDITOR=vim

の場合に

$ sudoedit /etc/sysctl.conf

などとして、vim 上で :sh などを実行しても root のシェルは起動できません。sudo vim の場合と比べてみてください。

これがどうしてセキュリティ上嬉しいのかは他所で調べてください。

[FreeBSD][Linux] sudoedit を忘れてユーザ権限で設定ファイルを編集してしまったときの小技

環境変数 EDITOR=vim となっていると仮定します。

設定ファイルの内容を less や lv で確認しています。

$ less httpd.conf

設定ファイルの見ていると、編集したくなったので less コマンドを実行中に v を押してエディタを起動します。 編集が終わり、一仕事終えて :wq で保存して終了しようとすると、このエディタはユーザ権限で実行しているので…

Read-only file, not written; use ! to override.

と言われてて保存できません。

sudo で root に昇格できるなら、そんなときは

:w !sudo tee % # "w" と "!" のあいだに半角スペースがあります

で保存できます。便利便利。