社内に共有サーバ(Linux)があり、SMBを使用してWin/Macでファイル共有を行っているのですが、
新しく購入したEl CapitanのPCで接続出来ないフォルダが有りました。
なんとか接続・閲覧が出来るようになったので、備忘録も兼ねて初めての記事を書いてみようと思います。
※2016/12/12更新
Sierraの実機で確認出来るタイミングがありましたので、確認しましたが、Sierraでは解消されています。
(ただし、SierraではPPTP方式でのVPNが出来ないので、アップデートされる際はご注意ください。)
#症状
サーバへ接続→「smb://サーバIP」で接続→ユーザ名・パスワードを入力→フォルダを選択
で接続を試みる
→エラーメッセージは出ないものの、デスクトップに接続中のサーバとして表示されず、Finderのウィンドウも開かれない現象が発生
↓
Finderから接続中のサーバを選択し、先程接続したフォルダをダブルクリック
→「オリジナルの項目が見つからないため操作を完了できません」と言われ、フォルダが開けない
↓
他のフォルダも試してみる
→開けるフォルダもある
↓
上記の方法で接続したサーバは/Volumes以下にマウントされるので、Finderで/Volumesを見てみる
→開けるフォルダはいるけど、開けないフォルダはいない
↓
mountコマンドでマウントされているか確認してみる
→開けないフォルダもマウントされている
↓
ターミナルで「ls /Volumes」して確認
→開けないフォルダも存在し、内部の確認も可能
#原因
いろいろなフォルダを確認してみた結果、確認した限りでは
濁点・半濁点の付いているフォルダのみ開けない事がわかった。
例:
「総務」→開ける
「総務フォルダ」→開けない
この事から、この問題は「UTF-8(NFC)」と「UTF-8-MAC(NFD)」の濁点・半濁点が含まれる文字の変換差異により発生していると考えられる。
※参考
Mac OS X の NFD 問題での対策諸々
おそらく、「サーバへ接続」から接続した際、ローカル上に作成されるマウント先のパスが
共有サーバ側の文字コード(UTF-8)で作成されていて、Finderから認識できないのだと考えられる。
#解決方法
ターミナルからmount_smbfsコマンドを用い、
マウント先を文字コードで指定して接続すれば、正常に接続・閲覧が可能。
/Volumes以下にマウント先を手動で作成することは出来ないので、
「/Users/【ユーザ名】」以下にmountフォルダを作成し、その下にマウント先のフォルダを作成することで対応することにした。
ということで、Automaterでシェルスクリプトを書いて、すべてのフォルダ分用意した。
実際に作成したシェルスクリプトは以下の通り。
(せっかくなので、キーチェーンからのユーザ名・パスワードの取得もやってみた。)
USERNAME=`security find-internet-password -gs 【キーチェーン名】 2>/dev/null |grep "acct"|sed -e 's/"acct"<blob>="//' -e's/"//' -e's/^ *//g'
PASSWORD=`security find-internet-password -gs 【キーチェーン名】 -w`
mkdir -p ~/mount/【フォルダ名】
mount_smbfs //${USERNAME}:${PASSWORD}@【接続先サーバIP】/【NFCで文字コード変換したサーバ上のフォルダ名】 ~/mount/【フォルダ名】
#「サーバに接続」と同様に、接続時にFinderを起動したいなら、最後に以下の1文を追加
open ~/mount/【フォルダ名】
例として、192.168.0.1にある「総務フォルダ」をマウントする場合、mount_smbfsの部分は以下のようになる。
mount_smbfs //${USERNAME}:${PASSWORD}@192.168.0.1/%E7%B7%8F%E5%8B%99%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80 ~/mount/総務フォルダ
日本語のフォルダ名の文字コードへの置換については
http://www.benricho.org/moji_conv/16-URLencode_UTF-8.html
辺りを使うと良いかと。
この問題、サーバ側の設定が悪い可能性もありますが、検索かけても全然事例が出てこず、苦労しました。
Yosemiteまでは普通に接続できたので、El Capitan側の問題だと思うんですが。
これでひとまず安心です。
ちなみに、上記の方法で接続さえできれば、下層にある濁点・半濁点のあるフォルダは開けます。
なお、確認した限りでは、AFPなら問題なく接続できるようです。
(BuffaloのTeraStationで確認)
LinuxにAFPデーモンを入れての確認までは出来ていないですが、参考まで。
※追記
サーバのOSは「CentOS release 6.3 (Final)」
Linuxのバージョンは「2.6.32-279.22.1.el6.x86_64」
SMBのバージョンは「3.6.23-14.el6_6」
です。
※追記2(2015/12/14)
OS X 10.11.2が出ましたが、まだ修正されていないようです。
※追記3(2015/12/22)
AFPでは問題なさそうである旨追記
文字コード変換についての参考URL追加
シェルスクリプト部分をそのまま使えるよう、説明の箇所をコメントアウト形式に変更
※追記4(2016/6/14)
OS X 10.11.5でも修正されていないことを確認しました。