Samba のセキュリティモードは共有レベル と ユーザーレベルの 2 種類のみで、まとめてセキュリティレベルと呼ばれています。共有レベルセキュリティの実装方法は 1 つだけですが、ユーザーレベルセキュリティは 4 種類の実装方法から選ぶことができます。セキュリティレベルの異なる実装方法はセキュリティモードと呼ばれます。
ユーザーレベルセキュリティは Samba のデフォルト設定です。security = user ディレクティブが smb.conf ファイルに一覧表示されていなくても、Samba はこれを使用します。サーバがクライアントのユーザー名/パスワードを受け取ると、クライアントは各インスタンスのパスワードを指定しなくても複数の共有をマウントすることができます。また、Samba はセッションベースのユーザー名/パスワード要求を受け取ることができます。クライアントは各ログオンに固有の UID を使って複数の認証を管理します。
smb.conf 内のユーザーレベルセキュリティを設定する security = user ディレクティブは次のようになっています。
[GLOBAL] ... security = user ... |
共有レベルセキュリティを使用すると、サーバはクライアントからの明確なユーザー名がないパスワードだけを受け取ります。サーバはユーザー名とは異なる各共有のパスワードを期待します。Microsoft Windows クライアントは共有レベルセキュリティサーバに互換性の問題があることが最近報告されています。Samba 開発者は共有レベルセキュリティを使用しないよう強く警告しています。
smb.conf の共有レベルセキュリティを設定するsecurity = share ディレクティブは次のようになっています。
[GLOBAL] ... security = share ... |
ドメインセキュリティモードでは、Samba サーバはマシンアカウント(ドメインセキュリティトラストアカウント)を持つので、すべての認証要求がドメインコントローラを通過するようになっています。Samba サーバはsmb.conf で次のディレクティブを使ってドメインメンバーサーバに構築されます。
[GLOBAL] ... security = domain workgroup = MARKETING ... |
Active Directory 環境の場合、ネイティブの Active Directory メンバーとしてそのドメインに参加することができます。セキュリティポリシーが NT 互換の認証プロトコルの使用を制限するものであっても、Samba サーバは Kerberos を使って ADS に参加することができます。
smb.conf にある次のディレクティブで Samba を Active Directory メンバーサーバにします。
[GLOBAL] ... security = ADS realm = EXAMPLE.COM password server = kerberos.example.com ... |