sjisファイル名を持ったディレクトリのsmbmount
- 上記の方法だと、ファイル名の文字コードを直してくれないのでLinux側からは文字化けて見えてしまう.そこで自分のディレクトリをsambaマウントしてみた.
- しかし、うちの鯖は既にsambaサーバを立てているので、アクセスしてきたクライアントに応じてsmbdが文字コードを変更してやる必要がある.
- で以下 smb.conf の文字コード設定の部分.
[global]
include = smb.conf.default## override parameter "unix charaset"
include = smb.conf.%Udos charset = CP932
display charset = CP932
- smb.conf.defaultの中身
- smb.conf.sjis-userの中身
unix charset = CP932
- 上記設定をした上で、cifsマウント(Fedora Core 7 にsmbmountは無い)
mount -t cifs //localhost/sjis_dir /mnt/smbfs_sjis -o username=sjis-user,codepage=cp932,iocharset=euc-jp
- 上記設定の解説:sambaにログインしてくるユーザ名で動作を変更する.ファイル名の文字コードはデフォルトだとEUC-JPだが、sjis-userに対してはsjisであるものとしてサービスする.
- ハマリ1:最初はnetbios名を複数用意し、includeオプションには%Lを使う予定だったが、cifsがnetbiosの名前解決をやってないため、あえなく断念.
- ハマリ2:Windowsから認証するとき、確かにユーザ名がsmbdに届いてはいるみたいなんだけど(/var/log/message で確認)、なぜか include %U が使えない。本当に謎。仕方が無いので、デフォルト設定をsmb.confに書き、sjis-userの設定はそれをoverrideよう変更.
- ハマリ3:includeした設定はsmb.confに直に書いた設定を上書きできない.しかし、includeされた設定は上書きできる.そこでsmb.conf.defaultを用意.