samba Tips
ファイル名の文字コードを変換する
ファイル名の変換にはconvmvを使った。以下のようにして使うと、再帰的にディレクトリをもぐっていって、ファイル名を変換してくれる。
ファイル名に変な記号が入っていても変換してくれたので、変換精度は割と良いのじゃなかろうか。
例)euc-jpからUTF-8に変換する
convmv --notest -f euc-jp -t utf8 -r *
ファイルを開くと更新日時が変わってしまう
対処方法
dos filetimes = yes
原因 ローカルPC上にあるExcelやWorkのファイルを開くと、開いたときに更新日時が新しくなり、何も変更せずにファイルを閉じると更新日時が元に戻る、という動きをするようです。 samba上に置いたファイルでファイルの作成者とは別のユーザが同じことをやると、更新日時を元に戻そうとするときに権限の問題で操作できず、新しい日時のままになってしまうという現象のようです。 実際に試してみたところ、自分で置いたファイルを開いた場合は大丈夫でした。
Unix側からwindows共有にアクセス
smbclient
以下のコマンドはUNIX機からWindowsXX上にある共有tempへの逆samba
Windows機 コンピュータ名:p4845 ユーザID:userName パスワード:passWord
# smbclient \\\\p4845\\temp -U userName%passWord
Sambaでユーザ認証ダイアログを省略するには
SambaでGuestアクセスを認め、登録されたユーザ以外からのアクセスがあった場合はGuestとみなし、認証ダイアログを省略するには、 smb.confに
guest ok = yes guest account = guest map to guest = Bad User
一般ユーザで smbpasswd が使えない
smb.conf において bind interfaces only が設定されているが、 127.0.0.1 のネットワークアドレスが interfaces パラメータに指定されていない場合は、 以下に示すような理由のため、 smbpasswd(8) や swat(8) などが 期待したように動作しないことがある。
ユーザの SMB パスワードを変更するために、 smbpasswd はデフォルトで localhost - 127.0.0.1 のアドレスに SMB クライアントとして接続を行ない、パスワード変更要求を送信する。 bind interfaces only が設定されているにも関わらず、 127.0.0.1 のネットワークアドレスが interfaces パラメータに含まれていなかった場合、 smbpasswd のデフォルトのモードでは接続に失敗してしまう。 smbpasswd については、 smbpasswd(8) に -r remote machine パラメータを指定して、 remote machine にホストのプライマリインタフェースのIPアドレスを設定することにより、 強制的にホストのプライマリIPインタフェースを利用させることも可能である。
つまる所、一般ユーザでの smbpassd と root でのsmbpasswdでは起動の仕方が異なる、rootでは直接smbpasswdを書き換えるが一般ユーザの場合はserver/clientモードでの書き換えつまり127.0.0.1を使うかららしい。
以下↓に変更しました。
interfaces = 192.168.0.10 127.0.0.1 bind interfaces only = Yes
そういや、swatでステータスを見たとき不思議に思ったんだがsmbdが起動中にも関わらずswat上では停止中と表示されてたんだよなー。で、上記の設定にしてみたらあっけなくswat上でも「起動中」と表示されるようになったよ!!
. で始まるファイルを表示させない
「.」からはじまるファイル名を Windows 側から表示させないようにする方法 を参考にしてください。
http://www.samba.gr.jp/project/kb/J0/0/26.html
[homes] veto files = /.??*/
現実的にはこのような設定にするのが妥当です。ただしこの場合、 .a や .~ といった名前のファイルは、表示やアクセスが可能なままですので、これらのファイル名は UNIX 上で使用しないようにするなど運用上での対策をとって下さい。
ゲストユーザーからプリンタ、共有フォルダを使えるように
プリンタと共有フォルダは誰でも使えたほうが便利です。そのための設定をしておくことにします。次の各行を追加します
[global] map to guest = Bad User coding system = EUC client code page = 932 [printers] guest = ok [public] guest = ok [share] write list = @samba read list = @samba create mask = 0774 directory mask = 0774
map to guest = Bad Userでユーザー名、パスワードが違う人はゲスト扱いでログインできるようになり、ゲストに許可されているところだけ見えるようになります
[share]中の
write list,read listは書き込み可能なユーザー、読み込み可能なユーザーを指定します。
@○○でグループ名で指定できます。