(2006.1.28 ページを分離) (2005.3.23, 2005.12.11, 2007.8.9更新) (2008.8.13 全体的に書き直し。)
(2014.4 Samba4対応)
一定以上の規模の組織では, Enterprise Content Management System (ECM) を立てて, そこでファイル共有もおこなうほうがいいでしょう。
オープンソース (商用版もある.) の Alfresco ECM を紹介しています。Alfresco 5 でファイル共有サーバ
Sambaは、オープンソースのSMB / CIFS (Common Internet File System) サーバ・ソフトウェアです。Windows機やMacOS X機をクライアントにして、フォルダやプリンタを共有できます。
Fedora 20 Linux には, Sambaバージョン4.1が含まれます。Samba4では, Samba3と設定ファイルの書き方が変わっているところもあります。
[Samba3] ただ、Fedora Core では、プリンタの共有はSambaではなくCUPSを直接叩いたほうがいいようです。CUPSでの共有方法は、CUPSでLinuxのプリンタ (PIXUS) を共有する
(2008.8.10 この節を追加。)
[Samba3] Samba 3.2は 2008年7月にリリースされました。特徴をいくつかピックアップしてみます。
別ファイルか、ローカルデータベース、拡張属性 (extended attributes; xattrs) に保存します。
(2008.8.18) まともに実用になるのは、バージョン3.2.1以降に持ち越しのようです。
Fedora Linux にはGUIでSambaの設定を行う system-config-samba コマンドがあります。このコマンドは設定ファイル smb.conf の内容を完全には解釈しないものの, 出発点としては使えます。
(2019.9) Fedora 30 ではすでに system-config-samba は取り除かれています。
Sambaを設定するときは、いったん system-config-samba である程度設定したあと, Fedora 20 Linuxでは, smb.confの場所は /etc/samba/smb.conf です。
(2014.1.13) SWATを使う場合は、samba本体と別パッケージになっているので、yum コマンドでインストールする。
chkconfig コマンドまたは system-config-services コマンドでSWATを有効にする。
Linux機のWebブラウザで http://localhost:901/ にアクセスすればSWATの画面になる。
手でsmb.confを編集したあとは, エラーがないか確認しておいたほうがいい。testparm コマンドで smb.conf が正しいか確認できる。
systemctlコマンドで再起動します。
(2015.11更新) [2020.11] Fedora 33 では、次のようになっており、問題ない。
ここを [2015.11 ここまで]
(2007.8.9 この節追加。2008.8.10 加筆。)
以降, Samba は Samba 3.2 では、Active Directory ドメインコントローラになることはできません (Samba v4.0 から対応)。Active Directory の前身、NT 4.0ドメインのPDC, BDC になることはできますが、NTドメインは廃れる予定です。
小規模のネットワーク向けです。 " 別途、ドメインコントローラとして Windows Server を用意し、Samba はメンバとしてActive Directoryドメインに参加します。
" See Setting up Samba as an Active Directory Domain Controller - SambaWiki
(2007.1.19 この節追加。2008.8.13 更新。)
このセクションは, スタンドアロンサーバとしてSambaサーバを立てる場合の, ワークグループ名を指定します。クライアント機の設定と合わせます。
(2018.11)
サーバ・クライアント間の通信方法は, Windowsのバージョンアップとともに変わっています。プロトコルのバージョン2と3は、両者をあわせて MS-SMB2 と呼ばれます。これまでのSMB/CIFSとは別物です。かなり高速化されました。
Samba バージョン3.6から SMB2 がサポートされました。対応表は、次のとおりです:
" もはやクライアントに Windows XPはないはずですから、問題が起こったときの分析をスムーズにするためにも, Samba 4.1では, " Macが混在している環境では, ともかく, SMB2以降を使う場合は, 単に切っておけばいいのでは, と思います。
デフォルト値が (2018.11)
Web上で, " Windows には「疎なファイル」(sparse file) があります。 (2015.4.19 加筆)
Windowsは, 伝統的なUNIXと異なり, ファイルがバイトの並びではありません。一つのファイルが複数のストリームを持っています。
Windows の代替ストリームは、例えば、アクセス制御以外の, セキュリティに関する付加情報を保存したりするのに使われています。
Sambaで代替ストリームを有効にしないと、ローカル上のファイルをSambaサーバにコピーしたりする際に, 警告がでたりします。
代替ストリームを格納させるために, "vfs objects"命令を設定します。
次の表の値が指定できます。
代替ストリームに大きなデータが置かれることは通常はないので、 Sambaでのユーザ名、パスワードはSambaパスワードデータベースに保存します。ローカルだったり, LDAPだったりします.
LDAPサーバを使う方法は、別ページにしました; Samba 4 (スタンドアロン) の認証を LDAP にする
以前は smbpasswd コマンドでユーザを登録していましたが, ユーザ登録・一覧などは pdbedit コマンドを使うようになりました。
(2019.9) 引き続き, ユーザ登録は smbpasswd コマンドでもできますが, 機能は限定されます. (Samba v4.10)
例えば、ユーザの追加は次のようにします。
ユーザ一覧は、--listオプション
SELinuxが有効になっている場合, フラグを変更する必要があります。
homeディレクトリ以下を共有する場合は, 次のようにします。
または, Sambaサーバをインターネットに向けて立てることはないので、単にSELinuxを無効にしてもいいと思います。
Samba サーバで Windows ACL を採用している場合は、Windows の「コンピューターの管理」で共有権限を管理できます。Windows ACL の設定についてはこちら; Samba上のファイルのアクセス制御 (ACL)
[スタート]メニューのプロパティ => [カスタマイズ]ボタンで, システム管理ツールを表示するようにします。
「コンピューターの管理」を開き (管理者として実行), 操作 => 別のコンピュータへ接続、で、サーバに接続します。
フォルダのアクセス権限などを設定できます。
_Samba 3.2 の見どころ
Samba 3.2.0 では、Windows機からサーバ上にあるファイルの代替ストリームの読み書きはできますが、エクスプローラでファイルを移動すると、代替ストリームが分かれて置き去りになってしまいます。
_Sambaの設定方法
(1) 設定の流れ
smb.conf
ファイルを直接編集することになります。
(2) SWATのインストール
SWATは,最近はメンテナンスされておらず、Samba バージョン4.1で取り除かれました。今後は smb.conf
を手で編集します。
# yum install samba-swat
(3) 設定のテスト, 再起動
# testparm
# systemctl restart smb
systemd の設定ファイルが不味くて, systemctl コマンドでは起動できないことがあります。/usr/sbin/smbd -D では起動できる。
/usr/lib/systemd/system/smb.service
ファイルは、次のようになっています (一部);
ExecStart=/usr/sbin/smbd $SMBDOPTIONS
ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOPTIONS
ExecReload=/bin/kill -HUP $MAINPID
$SMBDOPTIONS
は、/etc/sysconfig/samba
ファイルで設定されます。抜粋します;
## Type: string
## Default: ""
## ServiceRestart: smb
SMBDOPTIONS=""
"-D"
にしてやればOK.
_サーバロール, セキュリティモード
smb.conf
ファイルについて説明します。
smb.conf
ファイルの security
(G) と server role
(G) 命令の組み合わせでセキュリティモードを指定します。Samba 4.1では, 次の選択肢のいずれかを指定します.
どうしたいか 設定
スタンドアロンファイルサーバ security = user
Windows NTドメインに参加 security = domain
Active Directoryドメインに参加 security = ads
NT 4.0 Primary Domain Controller (PDC) にする
server role = classic primary domain controller
NT 4.0 Backup Domain Controller (BDC) にする
server role = classic backup domain controller
Active Directory ドメインコントローラ (DC) にする (Samba4)
server role = active directory domain controller
security = share
, 同 server
は廃止されました。
(1) スタンドアロンサーバ
security = user
とします。
[global]
; server role = standalone
security = user
; passdb backend = tdbsam
passdb backend
"オプションは、新しくインストールするときは, tdbsam
または ldapsam
を指定します。tdbsam
はローカルにパスワードを保存し, ldapsam
はLDAPサーバを用います。
passdb backend = smbpasswd
も互換性のために用意されていますが、非推奨です。
(2) Active Directoryドメインメンバ
[global]
; server role = member server
security = ads
security = domain
は、Windows NTドメインに参加する (NTドメインコントローラがユーザ認証する)もので、現在はこれを選択することはないと思います。
(3) ドメインコントローラ
server role
"命令に, 次のいずれかの値を指定します。
CLASSIC PRIMARY DOMAIN CONTROLLER
NETBIOS BACKUP DOMAIN CONTROLLER
ACTIVE DIRECTORY DOMAIN CONTROLLER
_フォルダの共有設定
smb.conf
での設定について説明します。
(1) ワークグループ, SMBバージョン
[global]
workgroup = ワークグループ名
; max protocol = SMB3
min protocol = SMB2
unix extensions = no
min protocol
は, server min protocol
(G) の省略形です。これは重要で、設定必須です。
SMBバージョン Windowsバージョン Samba設定
SMB 2.0.2 Windows Vista SP1, Windows Server 2008
※Windows Vista RTM は SMB2ではありません。
SMB2_02
SMB 2.1 Windows 7, Windows Server 2008 R2 SMB2_10
SMB 3.0 Windows 8, Windows Server 2012 SMB3_00
SMB 3.0.2 Windows 8.1, Windows Server 2012 R2 SMB3_02
SMB 3.1.1 Windows 10, Windows Server 2016 SMB3_11
SMB2
" は SMB2_10
と見なされます。"SMB3
" は SMB3_11
と見なされます。
SMB2_02
以上を指定しましょう。通常は SMB2
で十分です。
max protocol
" (=server max protocol
) 命令のデフォルト値は SMB3
です。こちらはそのままで大丈夫です。
unix extensions
は切るunix extensions
(G) を切っておかないと、inherit permissions
(S), create mask
(S), force create mode
(S) などが無視される,という情報があります(未確認)。
yes
なので、明示的に = no
とします。
strict allocate = yes
" を推奨する記事がチラホラあります。しかし、これは誤りです.
yes
の場合, Windows 側からこれを作ったときに, Unix 側で実在のバイト列に展開されて、破綻します。デフォルト値は no
で、このままにします。
no
の場合は, Unix 側でも sparse file として作られます。(Samba 4.8 on Fedora 28, ext4 で確認)
代替ストリームの設定 [必須]
[共有フォルダ]
vfs objects = streams_xattr
streams_depot
代替ストリームを別ファイルとして保存する. デフォルトでは共有フォルダ直下の .streams ディレクトリに格納される
streams_xattr
代替ストームを拡張属性に保存する。ただし、Linux のファイルシステムのほとんどは, 拡張属性の大きさに制限がある。大きなデータを代替ストリームに格納することはできない。(どのぐらいの大きさが保存できるか, は未確認。)
streams_xattr
がいいでしょう。
_ユーザの登録
クライアントのWindows機ログインユーザ, SambaサーバのUNIXログインユーザ、Sambaユーザの名前を合わせておきます。
# pdbedit -a ユーザ名
# pdbedit --list
_SELinuxの設定
# setsebool -P samba_enable_home_dirs on
_Windows側での設定