2012 年 2 月 のアーカイブ

OSXでフォルダ内容をうまい具合に隠す方法

2012 年 2 月 20 日 月曜日

久々の記事がこんなものになるなんて…。

さて、ある時突然ひらめいたファイルの隠蔽方法を書いておきましょう。

 

OSXもUNIXですから、ディレクトリ(フォルダ)のパーミッション(アクセス権限)を他のUNIXのように設定することができます。

要するに所有者をroot、パーミッションを733にして、sudo openで開封するわけです。

しかし10.5以降はFinderで所有者を変更することができなくなっているようです。

仕方が無いのでターミナルを開きましょう。

なお、隠す対象はデスクトップ直下にあるprivateとしますが、そうでない場合は適当に読み替えてください。

名前もばれないようなものしておくことをおすすめします。

文字コードの不整合を防ぐため作業前にフォルダ名を半角英数字にしておいてください。

作業後にフォルダ名を変更できるかどうかは未確認です。

 

さて、ターミナルを開いてまずは「cd ~/Desktop」と入力します。

ターミナルはアプリケーション→ユーティリティと進んでいけば見つかるかと思います。

これでデスクトップに移動出来ました。

ちなみにここでさらに深い階層、例えばデスクトップのbetaというフォルダの中に隠したいprivateフォルダがあるなら「cd beta」としましょう。

要はそのフォルダを含包するフォルダにcdしてやればいいのです。

次に、そのフォルダのパーミッションを変更します。

「chmod 733 private」と打ち込みましょう。

ここで最初の7は所有者に全アクセス権限、次の3と最後の3は他のユーザに参照権限と書き込み権限を付与するものです。

権限付与の理由は後ほど説明します。

最後に、「sudo chown root private」と打ち込み、パスワードを求められたらそれを入力して完了です。

sudoの初回実行時には何かしらの注意書きが出ると思いますが、そこは気にせず進めてください。

次にこのフォルダを簡単に開くための細工をしましょう。

テキストエディットは扱いが面倒なため、硬派なviエディタを使うことにします。

まずは「vi priv.sh」と打ち込んでviを起動しましょう。

ここでpriv.shは開くためのファイルの名前です。

末尾がshなら何でもかまいません。

viが起動したら、iキーを押すと入力モードになります。

以下の2行を入力してください。

#!/bin/sh

sudo open ~/Desktop/private

例によってフォルダのありかは適当に読み替えてください。

入力が終わったらESCキーを押し、「:wq」と入力してエディタを閉じます。

元の画面に戻るので、「chmod 755 priv.sh」と入力して実行可能にします。

priv.shはそのままでは開かないかも知れないので、Finder「ファイル」メニューの「情報を見る」から細長いウィンドウを開き、「このアプリケーションで開く」をターミナルにしておきましょう。

ターミナルを選択できない場合は「推奨アプリケーション」を「すべてのアプリケーション」にすれば選択できます。

 

このフォルダを開くには、priv.shを開いてパスワードを入力するだけです。

一度sudoでパスワードを入力すれば、5分間は入力なしでpriv.shを用いることができます。

 

戻し方も説明します。

対象フォルダは所有者が変更されているため、もはやユーザの意思では動かせなくなっています。

まずはFinderの「情報を見る」から「共有とアクセス権」を開き、右下の鍵を開けます。

次に+を押し、「ユーザとグループ」から自分のアカウント名を選択します。

あとは歯車を押して「”○○(自分)”を所有者にする」を選択すれば自由に扱えるようになります。

 

なお、なぜ参照権限を設定したのか、その理由について説明します。

簡単に説明しますと、参照権限がなければ中のファイルを開けないからです。

どうやらFinderからファイルを開く際にはそのパスをアプリケーションに渡して開いており、かつFinderの動作権限は継承されないようです。

また、書き込み権限については、フォルダのアイコンをごまかすためです。

それに書き込み権限くらいあったっていいじゃないですか、ねえ?

 

まとめ

cd ~/Desktop

chmod 733 private

sudo chown root private

cat <<EOF > priv.sh

#!/bin/sh

sudo open ~/Desktop/private

EOF

chmod 755 priv.sh

おわり