SYSTEM238 / NOTES1 / Mac, Win, etc / OS Xでホームディレクトリを別ボリューム(外付けディスク)に移動する方法

NOTES1 PROG1
OS Xでホームディレクトリを別ボリューム(外付けディスク)に移動する方法
Mavericksでホームディレクトリを別ボリューム(外付けディスク)に移動する手順のノート

事前準備

ホームディレクトリの移動先になるボリューム(外付けディスク)のファイルやディレクトリの所有権を有効にします。この操作をしておかないとホームディレクトリ内のファイルに全てのユーザから読み書き可能でアクセスできてしまいます。

個人使用のMacで、他のユーザ所有のディレクトリ〜ファイルが読み書きできても構わない場合はこの手順を飛ばしても構いません。

  1. 移動先になるボリューム上で「マウス右クリック→情報を見る」をしてボリューム情報を表示する。
  2. カギのアイコンをクリックしてロックを解除する。
  3. 「このボリューム上の所有権を無視」のチェックを外す。

別ボリュームにホームディレクトリを作成する

管理者ユーザでログインしてターミナルを起動し、以下のコマンドでホームディレクトリを作成する。

$ sudo mkdir -p /Volumes/[ボリューム名]/Users/[ユーザ名]

chown/chmodコマンドを使用して旧ホームディレクトリと所有ユーザ/パーミッションを合わせる。

「事前準備」で「このボリューム上の所有権を無視」のチェックを外した場合は、下記の操作を実行して所有ユーザ/パーミッションを旧ホームディレクトリと合わせておきます。チェックを外してない場合はこの手順を飛ばします。(所有者がログインしたユーザに強制変更になるため設定できないはずです)

//旧ホームディレクトリのユーザ/パーミッションを確認
$ ls -l /Users
drwxr-xr-x+ 11 Guest   _guest  374  3  1 04:03 Guest
drwxrwxrwt  13 root    wheel   442  3 31 18:25 Shared
drwxr-xr-x+ 11 [user]  [group] 374  4 16 15:22 [ユーザ名]

//移動先ホームディレクトリのユーザ/パーミッションを変更
$ sudo chown [user]:[group] /Volumes/[ボリューム名]/Users/[ユーザ名]
$ sudo chmod 755  /Volumes/[ボリューム名]/Users/[ユーザ名]

ユーザ情報を変更する

  1. 「システム環境設定→ユーザとグループ」を選択する。
  2. カギのアイコンをクリックしてロックを解除する。
  3. ユーザ名を右クリックして「詳細オプション...」を選択する。
  4. 「詳細オプション→ホームディレクトリ」に移動先のディレクトリを指定する。
  5. 「OK」ボタンを押して変更を保存する。

旧ホームディレクトリ → 新ホームディレクトリへファイルコピーする

  1. 再起動する。
  2. 該当ユーザでログインする。
  3. Finderでホームディレクトリを表示する。
    →このタイミングで空の「書類」ディレクトリや「ムービー」ディレクトリなどが作成されます。
  4. ホームディレクトリが新ホームディレクトリになっていることを確認する。
  5. 旧ホームディレクトリ → 新ホームディレクトリへ適宜ファイルをコピーする。

旧ホームディレクトリの後始末をする

旧ホームディレクトリの名称を変更し移行前のバックアップとします。このバックアップは移行が問題なく完了した確認が取れたら適宜削除してください。

$ sudo mv /Users/[ユーザ名] /Users/[ユーザ名]_bkup

さらに、旧ホームディレクトリから新ホームディレクトリを参照するシンボリックリンクを作成します。これは、一部の行儀の悪いプログラムが、ホームディレクトリの参照を「/User/[user]」で決め打ちするためです。

$ sudo ln -s /Volumes/[ボリューム名]/Users/[ユーザ名] /Users/[ユーザ名]

その他

「このボリューム上の所有権を無視」について

外付けディスクを使用する際の利便性のためだと思いますが「このボリューム上の所有権を無視」にチェックが付いていると、そのディスク内の全てのディレクトリ〜ファイルへ読み書きができるようになります。

ターミナルだとよくわかるんですが、ディスク内の全ディレクトリ〜ファイルの所有者がログインしたユーザになります。suコマンドでユーザを切り替えるとファイルの所有者が一斉に変わります。なかなか不思議な感じです。

この仕組みのおかげで、データ交換用ディスクのファイルに簡単にアクセスできるのですが、予期しないセキュリティホールになる可能性もあるわけで...なかなか悩ましい仕様です。

私は通常盤のOSXを家庭内サーバとして使用しているのですが、外付けディスクにホームディレクトリを移動した際、他のユーザに丸見えになってしまって???となりました。

「このボリューム上の所有権を無視」という仕組みに気がつくまで散々悩みました。サーバ版のOSXだと外付けディスクの扱いが違うんでしょうか?

[2015/04/18 追記]

なんかの拍子に「このボリューム上の所有権を無視」にチェックが入ってしまうことがあるようです。いつの間にかチェックが入っていて他のユーザのホームディレクトリが見放題になってました。

さらに「このボリューム上の所有権を無視」のチェックを外してもディレクトリ〜ファイルの所有者が正規のものに戻りません。

しょうがないので"chown -R"で強制的に所有者を変更しました。一度、所有者を設定すると再度「このボリューム上の所有権を無視」にチェックを入れるまでは大丈夫みたいです。(chmodコマンドによるパーミッションの変更は必要ないようです)

$ sudo chown -R [user]:[group] /Volumes/[ボリューム名]/Users/[ユーザ名]