Eyes, JAPAN Blog > ちょっとしたhack

ちょっとしたhack

beko

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

少し前に、家のデスクトップPC(Gentoo Linux/GNOME)でファイルブラウザを使っ
てディレクトリやファイルを見てまわっていたとき、GNOMEパネルにあるメ
ニューの「最近開いたドキュメント」というところにどんどん履歴が残ってい
き、一々ここに履歴が残されるのが自分は不快でした。一応「この一覧をクリア
する」というメニューはあるのですが、毎回これを使って履歴を消すのも面倒な
ので、どうにかならないかと思って調べていました。

すると、「${HOME}/.recently-used.xbel」というファイルが原因だということ
が分かりました。このファイルに逐一パスが追加されていくようで、このファイ
ルを消したら履歴を消すことが出来ました。ですが、ファイルを消しただけでは
また新たに同名のファイルが作られ新しい履歴が追加されるので、ファイルに書
き込みが出来ないようにパーミッションを000に変更しました。これですべてが
解決したと思ったのですが、ためしに何かファイルを開いてみると、先程作成し
たファイルが見事に上書きされ、パーミッションも元に戻されてしまい、結果と
して履歴が残りました。その後、「$ {HOME}/.recently-used.xbel」という名前
の/dev/nullへのシンボリックリンクを作ってみたり、「${HOME}
/.recently-used.xbel」の所有者をrootにしてみたりしましたがなかなか手ごわ
く、いずれもダメでした。

最終的に、「${HOME}/.recently-used.xbel」という名前の「ディレクトリ」を
作ることで解決しました。GNOMEは履歴を「$ {HOME}/.recently-used.xbel」と
いう「ファイル」に書き込もうとしますが、同じディレクトリに同じ名前のファ
イルやディレクトリは二つ以上存在出来ず、そこにあるのは「ファイル」ではな
く「ディレクトリ」であるので、どう頑張ってもディレクトリ自体に履歴を書き
込むことは出来ないのです。これでようやくすべてが解決してすっきりしました。

今回紹介したいのは、

「UNIXで(Windowsも?)あるファイルにアクセス出来なくさせるには同名の
ディレクトリを作ってしまえば良い」

ということです。みなさんが今後同じ問題で困ったときは是非この小さなhackを
生かしてみてください。

(*) 自分はこの解決策の他に、
# chattr +i ${HOME}/.recently-used.xbel
というコマンドを使ってファイルの属性に「変更不可」フラグをつけてしまえば
良いのではないかとも考えました。結果としてこの方法でもいけるので、 Linux
で同じ問題に直面した方は試してみてください。(よく考えればシンボリックリ
ンクの作成やファイルの所有者の変更などが通用しなかったのは当たり前です
ね…。まだまだ修行が足りませんでした。。)

担当:金子

  • このエントリーをはてなブックマークに追加

Comments are closed.