#Sambaの学習
##sambaの概要
・Samba4ではActive Directoryでドメインコントローラになれる
・Sambaによるドメコン「NTドメイン」「ADドメイン」の2種
・Samba4で、Windowsの共有フォルダやSambaが提供する共有ディレクトリにアクセスするコマンド
①smbclient ②mount.cifs ③mount -t cifs
smbclient [オプション] //ホスト名/共有名
smbclient //ホスト名/共有名 [オプション]
デーモン | 説明 | ポート |
---|---|---|
-L ホスト名/ --list=ホスト名 | 指定したホストで利用可能な共有リソースを一覧表示 | |
-N | 認証を行わない | |
-U ユーザー名/--user=ユーザー名 | 接続するユーザーを指定 |
・Samba3デーモン↓
デーモン | 説明 | ポート |
---|---|---|
smbd | ファイル、プリンタの共有、ユーザー認証等Sambaの基本的な機能 | 139/tcp,445/tcp(ダイレクトホスティングSMBサービス使用時) |
nmbd | ブラウジング機能、WINSサーバーなどの機能を提供 | 137/tcp 138/tcp |
winbindd | NSSを利用しWindind(Samba側からWindowsユーザの情報を利用可能に)と呼ばれる機能を提供 | なし |
・Samba4がドメコンの場合は「samba」プログラムに統一。必要に応じて、上記から各機能が呼び出される。
・samba3,samba4の相違↓
機能 | samba3 | samba4 |
---|---|---|
ドメインコントローラー | NTドメイン/認証はNTLmv2/Einsサーバーによる名前解決/LDAP連携可能 | Actieve Directory・認証はKerberosを使用/DNSによる名前解決/LDAPを内蔵 |
ファイルサーバ | SMB2に対応 | SMB2,SMB3に対応 |
・NTLMv2認証:チャレンジレスポンス方式
・Kerberos認証:1つの認証でユーザが複数台のサーバへアクセスすることが出来る
・WINS:名前解決にNetBIOS名とIPアドレスを対応付ける
・SMB3:SMB2に加えて、パフォーマンスの改善や暗号化などの機能が追加
■Samba4での管理ツール:samba-tool
samba-tool サブコマンド
|サブコマンド|説明|
|:-----------:|:------------:|:------------|
|dns|DNS管理を行う|
|domain|ドメイン管理を行う|
|testparm|設定ファイルの構文チェックを行う|
|user|ユーザー管理を行う|
■sambaの主要なデーモン(smbd,nmbd,winbindd)にメッセージを送るプログラム:smbcontrol
smbcontrol [対象] [メッセージタイプ]
|対象|説明|
|:-----------:|:------------:|:------------|
|all|smbd,nmbd,windinddの全プロセスにブロードキャスト|
|<デーモン名> or |上記のいずれか指定されたデーモンpdiファイルに記載されたプロセスID,または直接指定したPIDみメッセージ送信|
|メッセージタイプ|説明|
|:-----------:|:------------:|:------------|
|clese-share|指定した共有をクローズ ※対象はsmbdのみ|
|reload-config|指定したデーモンに設定の再読み込みをさせる|
|kill-client-ip|指定したIPアドレスのクライアントを切断※対象はsmbのみ|
|ping|指定した対象にpingし応答が来た対象のPIDを表示|
■Sambaの設定ファイル「/etc/samba/smb.conf」には3つの特別なセクションである[global]、[homes]、[printers]セクションと、個々の共有の設定を行う任意の名前のセクションがある。
■[homes]、[printers]、任意の名前のセクションで使用される主な設定項目 ↓
|設定|説明|
|:-----------:|:------------:|:------------|
|comment =コメント|ブラウジングした際に表示される説明|
|path =ディレクトリ|共有ディレクトリのパスを指定|
|writable = yes/no|書き込みの許可か否か|
|read onle = yes/no|読み取り専用するか否か|
|rwrite list = ユーザ名/@グループ名|書き込み拒否でも書き込みができるユーザを指定|
|valid users=ユーザ名/@グループ名|アクセス可能なユーザ|
|group ok = yes/no|ゲストログインの許可するか。Yesの場合はパスワードなしでゲストとしてログオン|
|hide files = /ファイル名/|表示させたくないファイル、ディレクトリ(アクセス可能)|
|veto files = /ファイル名/|表示させたくないファイル、ディレクトリ(アクセス不可)|
|force user =ユーザー名|認証したユーザーに関係なく。共有内では指定したユーザーの権限で作業を行わせる|
|force group =グループ名|認証したグループに関係なく。共有内では指定したグループの権限で作業を行わせる|
■共有プリンタの設定:[printers]セクション
printtable = yes
print ok = yes
のいずれか一方
・Windowsクライアントにプリンタドライバがインストールされていない場合、自動的にドライバをダウンロードさせる
■[global]セクションで使用される全般設定に関わる主な設定項目
|設定項目|説明|
|:-----------:|:------------:|:------------|
|workgroup = ワークグループ名|所属するワークグループを指定|
|server string =文字列|ブラウジングの際に表示されるサーバーの説明|
|netbils name = NetBios名|SambaサーバのNetBios名を指定|
|brousable = yes/no|ブラウジングの際に表示するかどうか。表示されていなくてもアクセス可能|
|wins support = yes/no|Sanmba差0ば0をWinsサーバーとして動作するか|
|wins server = IPアドレス|WINSサーバーが存在する場合、IPアドレスを指定|
|hide dot files = yes/no|.で始まるファイルを隠すか|
|logono script = ファイル名|ログオン後に実行されるスクリプト|
■[global]セクションで使用される認証設定に関わる主な設定項目
|設定項目|説明|
|:-----------:|:------------:|:------------|
|security = user/domain/abs|認証方式を設定 user=ユーザーレベル domain=NTドメコンを使用し認証 ads=ADドメコンを使用し認証|
|passdb = 認証方式|Samba3.0以降 security=useの場合smcpasswd,tdbsam.ldapsamなどの認証方式を指定|
|smb passwd file = ファイル名|security = userの場合 smbpasswdで認証を行う際のパスワードファイルの指定|
|password server = NetBiOS名/IPアドレス|security=[ads/domai/server]の場合、認証を別の差0ば0で行う際のパスワードサーバーの指定|
Samba2.2系のユーザ管理の特徴
・ユーザ認証:smbpasswd方式
・パスワード管理:テキスト形式
・パスワードファイルの指定:設定項目「smb passwd file」
・ユーザ管理:smbpasswdコマンド
Samba3.0系からのユーザ管理の特徴
・ユーザ認証:複数方式から選択(後述)
・smbpasswd
テキスト形式のパスワードファイルを使用した認証方式
・tdbsam
バイナリ形式のデータベースを使用した認証方式
・ldapsam
LDAPサーバを使用した認証方式
・認証方式の指定:設定項目「passdb backend」
・ユーザ管理:pdbeditコマンド
■Sambaユーザの管理:smbpasswd
・パスワードファイル:/etc/samba/smbpasswd」
・「/etc/samba/smb.conf」の項目「smb passwd file」でパスワードファイルを変更可能
smbpasswd [オプション] [Sambaユーザ名]
|オプション|説明|
|:-----------:|:------------:|:------------|
|-a|Sambaユーザーの作成|
|-d|Sambaユーザーの無効化|
|-e|Sambaユーザーの有効化|
|-x|Sambaユーザーの削除|
■Samba3.0系から:pdbedit
・smbpasswdを含むいろいろな認証方式を使用することが出来る
・デフォルトはバイナリ形式のデータベースファイルを扱うtdbsamという認証方式(その他にLDAP認証方式のldapsam)
smbpasswd [オプション] [Sambaユーザ名]
|オプション|説明|
|:-----------:|:------------:|:------------|
|-L|Sambaユーザーの一覧表示|
|-a|Sambaユーザーの追加|
|-x|Sambaユーザーの解除|
■[global]セクションで使用されるログ設定に関わる設定項目
|メッセージタイプ|説明|
|:-----------:|:------------:|:------------|
|log file = ファイル名|ログファイルを指定|
|log level = レベル|ログレベルを指定(数字が大きいほど詳細)|
|max log size = サイズ|ログファイルイルの最大サイズを指定。ファイルが制限値を超えた場合は、あたらいいログファイルを作成。0指定で無制限|
■パスワードに関わる主な設定項目:[global]セクション
|メッセージタイプ|説明|
|:-----------:|:------------:|:------------|
|user map = ファイル名 |ユーザー名のマッピング情報を格納したファイル指定|
|guest account = ゲストユーザー名|ゲスト認証を許可する場合、ゲストのユーザーのユーザー名を指定|
|map to guest = Never/Bad user/Bad Password|Sanmaユーザーとして認証できなかった場合の対応を指定 Never:ゲスト認証を許可しない Bad User 存在しないユーザーの場合はゲスト認証(存在するユーザーでパスワードミスはゲスト認証不可) Bad Password パスワードのミスの場合はゲスト認証
|encrypt passwords = yes/no|暗号化されたパスワードを使用するか否か|
|unix password sync = yes/no|LinuxとSambaのパスワードを同期させるか否か|
|passwd program = プログラム名|samba側でパスワードを変更した際に実行するプログラムを指定(unix password syncが有効な場合のみ)|
|passwd chat = 文字列|passwd program実行時の応答内容を指定|
|||
■smbaの設定ファイル「/etc/samba/smb.conf」の構文チェック
testparm [オプション] [設定ファイル]
|オプション|説明|
|:-----------:|:------------:|:------------|
|-s|構文をチェックした後、Enterキーを押さなくてもsmb.confの内容を表示|
|-v|構文をチェックした後、smb.confに記述されていない(未定義)のパラメータも表示|
■バーミッションの設定
|メッセージタイプ|説明|
|:-----------:|:------------:|:------------|
|create madsk = 値|ファイルに適用可能なパーミッションを指定。この値とDOSノゾクセイヲUNIXの属性に変換した値との倫理積がパーミッションをなる。属性をしよする場合に使用。デフォルト0744|
|force create mmode|必ずファイルに適用されるパーミッションをしてい。皓の値と、create maskで算出された値との倫理和が最終的なパーミッションとなる。属性を追加する場合に使用。デフォルト0000|
|directory mask = 値|ディレクトリに適用可能なパーミッションを指定。この値と、DOSの属性をUNIX属性に変換した値との倫理積がパーミッションとなる。属性を削除したい場合に使用 デフォルト0755|
|force directory mode = 値|必ずファイルに適用されるパーミッションを指定。この値とDirectory maskで算出された値との倫理和が最終的なパーミッションになる。属性を追加する場合に使用。デフォルト0000|
共有内のディレクトリのパーミッションは次のように決定されます。
1.DOSのアクセス許可属性からUNIXのパーミッションにマッピングされる
2.上記1の値とdirectory maskの値の論理積を求める
論理積は、両方が1の場合のみ1(いずれかが0の場合は0)となりますので、属性を削除したい場合に使用します。デフォルトは0755です。
例)上記1の値が770、directory maskの値が755の場合
rwx rwx rwx
111 111 000 = 770
111 101 101 = 755
111 101 000 = 750
自分以外のユーザの書き込み権が削除されます。
3.上記2の値とforce directory modeの値の論理和を求める
論理和は、いずれかが1であれば1となりますので、属性を追加する場合に使用します。この値がファイルの最終的なパーミッションの値になります。デフォルトは0000です。
例)上記2の値が750、force directory modeの値が0111の場合
rwx rwx rwx
111 101 000 = 750
001 001 001 = 0111
111 101 001 = 751
全てのユーザに実行権が与えられます。
■ホストのアクセス制御
|書式|説明|
|:-----------:|:------------:|:------------|
|hosts allow = IPアドレス|接続許可|
|hosts deny = IPアドレス|接続拒否|
・複数のホストの指定は[,][スペース][タブ]で区切る。
・allowに指定されないホスト=拒否
・denyに制定されないホスト=許可
・矛盾=Allowが優先
■winbind機能:SambaサーバはWindowsドメインの既存のユーザ情報を利用することが出来る
<認証>
-
Sambaサーバへのアクセス時、Windowsクライアントにログオンしたユーザ名/パスワードがSambaに送信
-
Sambaは認証情報⇒ドメインコントローラに問い合わせ、ドメインコントローラが認証作業を実施。
-
認証に成功⇒SambaはUIDをWinbind機構に問い合わせます。Winbind機構はWindowsユーザとLinuxユーザのマッピング情報のデータベースを検索し、存在しない場合は新たにLinuxユーザを作成します。
作成されたLinuxユーザの情報は「/etc/passwd」ファイルなどには格納されないため、SambaはNSS(Name Service Switch)を利用してユーザ情報を取得。 -
作成されたLinuxユーザのUIDを使用して、Sambaの共有上のファイルへアクセスする。
<手順>
-
Windowsドメインに参加
-
NSSの設定ファイル「/etc/nsswitch.conf」にwinbindを追加
「/etc/passwd」ファイル、「/etc/group」ファイルの他にwinbindからもLinuxユーザーの情報を取得できるように、以下の行にwinbindを追加します。
passwd: files winbind
group: files winbind
- 「smb.conf」の[global]セクションにWinbind関連の設定を記述する。
以下はWinbind関連の主な設定項目です。
・Sambaサーバをドメインメンバーとする設定項目「security」の値に「domain」または「ads」を指定
・Winbind機能を利用する際に「idmap config」の設定は必須
・IdmapはWindowsユーザとLinuxユーザのマッピングを行う機能
winbinddはLinuxユーザを作成する際、「idmap config * : range」で指定された範囲の最小値からUIDおよびGIDをユーザに割り当てる。
「idmap config * : backend」は、マッピング情報の格納先であるIdmapバックエンドを指定
security = ads (またはdomain)
idmap config * : backend = tdb
idmap config * : range = 10000-19999
- Winbind機構を起動する。(プロセス名はwinbindd)
■マスターブラウザの検索、ワークグループ内のホストの検索、NetBIOS名の問い合わせなどを行う:nmblookupコマンド
nmblookup [オプション] NetBIOS名|IPアドレス|ワークグループ名
|オプション|説明|
|:-----------:|:------------:|:------------|
|-M|マスターブラウザの検索|
|-A|引数をIPアドレスとみなす。指定されたIPアドレスのMACアドレスやNetBios名などを表示|
■マスターブラウザ:ブラウザリスト(Windowsネットワーク内にあるコンピュータのリスト)を管理するコンピュータのことです
・どのホストがマスターブラウザになるかは、OSの種類による優先度(OSレベル)などで変わる
・[global]セクションにて使われるマスターブラウザ関連の主な設定項目
|設定項目|説明|
|:-----------:|:------------:|:------------|
|os level=数値|ブラウザ選定時に宣言する優先度を指定(数値が大きいほど優先度は高い)|
|local master = yes/no|ブラウザ選定に参加するか否か|
|preferredmaster = yes/no|ブラウザ選定を要求するか否か|