(2006.1.28 ページを分離)
(2005.3.23, 2005.12.11, 2007.8.9更新)
(2008.8.13 全体的に書き直し。)
Sambaは、オープンソースのSMB / CIFS (Common Internet File System) サーバ・ソフトウェアです。Windows機やMacOS X機をクライアントにして、フォルダやプリンタを共有できます。
Fedora 9 Linux には Samba 3.2.0 が含まれます。
ただ、Fedora Core では、プリンタの共有はSambaではなくCUPSを直接叩いたほうがいいようです。CUPSでの共有方法は、CUPSでLinuxのプリンタ (PIXUS) を共有する
目次:
(2008.8.10 この節を追加。)
Samba 3.2は 2008年7月にリリースされました。特徴をいくつかピックアップしてみます。
別ファイルか、ローカルデータベース、拡張属性 (extended attributes; xattrs) に保存します。
(2008.8.18)
Samba 3.2.0 では、Windows機からサーバ上にあるファイルの代替ストリームの読み書きはできますが、エクスプローラでファイルを移動すると、代替ストリームが分かれて置き去りになってしまいます。
まともに実用になるのは、バージョン3.2.1以降に持ち越しのようです。
Fedora 9 Linux にはGUIでSambaの設定を行う system-config-samba コマンドがあります。しかし、今のところ、このコマンドは設定ファイル smb.conf の内容を完全には解釈しないので、あまり良くありません。
Sambaを設定するときは、smb.confファイルを直接編集するか、SWATを使うのがいいと思います。Fedora 9 では、smb.confは /etc/sambaディレクトリにあります。
SWATを使う場合は、samba本体と別パッケージになっているので、yum コマンドでインストールする。
# yum install samba-swat
chkconfig コマンドまたは system-config-services コマンドでSWATを有効にする。
Linux機のWebブラウザで http://localhost:901/ にアクセスすればSWATの画面になる。
手でsmb.confを編集した場合は、エラーがないか確認しておいたほうがいい。testparm コマンドで smb.conf が正しいか確認できる。
# testparm
(2008.8.10 この節を加筆。)
日本語のための文字集合として、JIS X 0208 を拡張した JIS X 0213が登場しました。
2000年の JIS X 0213:2000 のときは Unicode のコードポイントとの対応が完全ではなかったりして、まともな実装は現れず、広まりませんでした。
2004年版 (JIS X 0213:2004; JIS2004) はそういった問題もほぼなくなり、Windows Vista や Mac OS X など、実装も現れてきました。
WindowsクライアントとSambaサーバ間は、現在では、Unicode で通信することになっています。そこは問題ありません。
Sambaサーバ側でのファイル名の文字コードに注意が必要です。
JIS X 0213では文字がずいぶん追加されたため、EUC-JP またはシフトJISにコード化するには、新たに専用のテーブルが必要です。が、Linux ではまともなテーブルはありません。
Sambaサーバでは、文字コードは必ずUnicodeベースのものにしなければなりません。Linux ではUTF-8にします。
smb.conf ファイルでの、サーバ側の文字コードの指定は unix charset でします。初期値はUTF8 です。
[global]
unix charset = UTF-8
(2007.8.9 この節追加。2008.8.10 加筆。)
Samba は smb.conf ファイルの security 命令でセキュリティモデルを指定します。選択肢が5つあります (share, user, server, domain, ads) が、全部が全部日常的に使うわけではありません。
Samba 3.2 は、Active Directory ドメインコントローラになることはできません (Samba 4.0 で実装される予定)。Active Directory の前身、NT 4.0ドメインのPDC, BDC になることはできますが、NTドメインは廃れる予定です。
小規模のネットワーク向けです。security = user とします。security = share は、Windows 3.1 時代の名残で、現在は使うことはないと思います。
[global] security = user passdb backend = tdbsam
passdb backend オプションは、新しくインストールするときは、tdbsam または ldapsam を指定します。tdbsam はローカルにパスワードを保存し、ldapsam はLDAPサーバを用います。
passdb backend = smbpasswd も互換性のために用意されていますが、非推奨です。
クライアントのWindows機ログインユーザ、UNIXログインユーザ、Sambaユーザの名前を合わせておきます。
Sambaでのユーザ名、パスワードはSambaパスワードデータベースに保存します。
以前は smbpasswd コマンドでユーザを登録していましたが、pdbedit コマンドを使うようになりました。もはや smbpasswd コマンドでは新しいSambaユーザを登録できません。
例えば、ユーザの追加は次のようにします。
# pdbedit -a ユーザ名
別途、ドメインコントローラとして Windows Server を用意し、Samba はメンバとしてドメインに参加します。
[global] security = ads
security = domain は、NTドメインに参加する (NTドメインコントローラがユーザ認証する)もので、現在はこれを選択することはないと思います。また、security = server はセキュリティ上のリスクがあって (?)、使うべきではないようです。
(2007.1.19 この節追加。2008.8.13 更新。)
Sambaサーバで公開しているフォルダをWindows機だけから使う場合は、あまり設定に気を付けることはありません。
しかし、SambaサーバにUNIXユーザとしてログインして、サーバ内でローカルにファイルを扱う場合は、いくつか設定を変えておいたほうがいいところがあります。
ワークグループ名を指定します。クライアント機の設定と合わせます。
[global]
workgroup = fruits
ファイル名の取り扱い関係;
[global]
# ファイル名の大文字,小文字を区別するようにする。
preserve case = yes
# 'no'だと,ファイル作成時にdefault caseの指定通り変換される
short preserve case = yes
# 常にpreserve caseと同じにする
# case sensitive = yes
# これを'yes'にするとWindowsエクスプローラからファイルが見えなくなる
case sensitive のデフォルト値は 'auto'
map archive = no
# 2000.01.20 samba経由で作成したファイルに実行属性が付かないようにする
wide links パラメータは、Sambaが公開するディレクトリの外へのリンクを辿れるようにするかを決めます。yes で辿れ、no だと禁止します。noにするとパフォーマンスの問題があるので、yes でいいと思います。
UNIX側でディレクトリへのシンボリックリンクを張っていると、Windowsエクスプローラからシンボリックリンクを削除できません(リンク先のフォルダの中身を削除してしまう)。あるいは無限にフォルダを展開しようとすることがあります。
Sambaサーバ専用だとこの問題は発生しませんが、UNIX側にもログインするような使い方をするときは、シンボリックリンクを辿るのを禁止しておいたほうがいいでしょう。
[global] wide links = yes follow symlinks = no
共有ファイルを設定する。
[filetree]
path = /
# Windowsマシンでドライブ名を割り当てて使うと便利。
read only = no
# 読み書き可能にする。
(2007.1.19 この節追加。)
よくある構成は、Linux機をサーバにして、Windows機からアクセスして、Windows機どうしでファイル、フォルダを共有するものだろう。
UNIX機どうしのファイル共有はNFSがよく使われる。
しかし、Linux機もCIFSクライアントになれるので、Linux機どうしあるいはWindows機とのファイル共有にCIFSプロトコルが使える。
Fedora Core 6では、samba-clientパッケージにmount.cifsコマンドがある。これでCIFSサーバのディレクトリをローカルにマウントできる。
# /sbin/mount.cifs //サーバのホスト名/公開パス /mnt -o user=ユーザ名
![]() | 重要.
下記のごみ箱機能は、ユーザーインターフェイスの点から適切ではないので、有効にしないほうがいいように思う。 |
何も設定しないと、ネットワーク越しのフォルダのファイルを削除すると、ごみ箱(ゴミ箱)に入らずに、そのときに完全に削除されてしまう。
ファイル共有セクションの「vfs objects」パラメータにrecycleモジュールを指定することで、ごみ箱機能を有効にできる。ゴミ箱モジュールは、クライアントからのファイル削除の要求を横取りして、ゴミ箱ディレクトリに移動する。
次のように書く。recycle:repository パラメータでゴミ箱ディレクトリを指定するが、[homes]セクションのときは、自動的に「/home/ユーザ名/指定ディレクトリ」として扱われる。
keeptree パラメータがyesのときは、ゴミ箱ディレクトリの中に、削除しようとするファイルがあったディレクトリが復元されて、そこにファイルが移動される。
[homes]
comment = Home Directories
browseable = no
writeable = yes
# 以下がゴミ箱の設定
vfs objects = recycle
recycle:repository = .recycle
recycle:keeptree = no
recycle:versions = yes
recycle:touch = no
recycle:maxsize = 0
recycle:exclude = *.tmp *~
ただしこの機能は単純にファイルを移動するだけなので、元の場所に戻したり、削除した時間順に並べ替える、などのことはできない。また、ファイル削除のときのアイコンも、ゴミ箱へ移動アイコンではなく、削除アイコンのまま。
Netsphere Laboratories http://www.nslabs.jp/
[PR]