SambaサーバはLinuxホストをWindowsホストと同じようなファイルサーバ、プリンターサーバなどとして利用することが可能になります。
Sambaの機能
Sambaのデーモン
Sambaの使用ポート
Sambaの設定ファイルは/etc/samba/smb.confにあります。
書式は下記のようになります。
globalセクションを変更した場合はsambaの再起動が必要ですが、共有部分の場合は変更しても再起動は不要です。
LinuxホストがSambaでMicrosoftネットワークに接続するためには
UNIXアカウントとWindows互換アカウントが必要になります。
Windows互換のアカウントが出来たのでwindows側からnet useで認証、接続できます。
cmd> net use n: \\10.0.1.1\storage
tdbsam バイナリ形式のデータベースファイルにユーザ情報を格納します。
ldapsam LDAPサーバにユーザー情報を格納します。数百ものユーザーを扱う場合に適しています。
バックエンドの複数指定 カンマ区切りで複数のバックエンドを指定することも可能です。
Sambaの機能
- ファイルサーバ
- プリンタサーバ
- WINSサーバ
- ドメインコントローラー
- Active Directoryメンバーサーバ
- Microsoftネットワーククライアント
Sambaのデーモン
- smbd ファイルやプリンタなどのリソースの共有やユーザ認証など
- nmbd ブラウズ機能やNetBIOSの名前解決、WINSサーバなど
- winbindd Winbind機能
Sambaの使用ポート
- 137/UDP NetBIOSやブラウジング
- 138/UDP NetBIOSやドメインログオン
- 139/TCP ファイル共有(下記の445/TCPを利用していない場合)
- 445/TCP ファイル共有 Windows2000以降のマシンでMicrosoft Direct Hosting SMBを利用している場合
設定ファイル: smb.conf
Sambaの設定ファイルは/etc/samba/smb.confにあります。
書式は下記のようになります。
[global]
パラメータ = 値
パラメータ = 値
[共有名]
パラメータ = 値
;コメント
#コメント
globalセクション
globalセクションではsambaの全般の設定を行います。globalセクションを変更した場合はsambaの再起動が必要ですが、共有部分の場合は変更しても再起動は不要です。
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
log file = /var/log/samba/%m.log
max log size = 50
idmap config * : backend = tdb
cups options = raw
wins support = yes
hosts allow = 10.0.0.
map to guest = Never
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
unix password sync = yes
passwd program = /usr/sbin/passwd
passwd chat = all*authentication*tokens*updated*successfully
username map = /etc/samba/smbusers
- workgroup = WORKGROUP
- ワークグループかドメイン名を指定
- server string = Samba Server Version %v
- サーバーの説明など
- log file = /var/log/samba/%m.log
- ログファイルの場所を指定、%mでホスト別にファイル名が付く
- max log size = 50
- ログの最大サイズ(50KB)
- idmap config * : backend = tdb
- ドメインごとにバックエンドを指定。この場合は全てのドメインでtdbを使う
- hosts allow = 10.0.0.
- 10.0.0.*からのアクセスを許可。拒否するホストを指定する場合は「hosts deny」。挙動はhosts.allow hosts.denyと同じ
- map to guest = Never
- Sambaユーザとして認証できなかった場合どうするかを指定。
Neverの場合はゲストを許可しない。Bad Userの場合は存在しないユーザをゲスト認証とみなす。
Bad Passwordの場合はパスワード入力ミスの場合もゲスト認証とみなす。 - encrypt passwords = yes
- NetBIOS認証では平文とハッシュ値でやりとりする方法があり、YESだとハッシュ値を使ったパスワードを利用する。
noにする意味は無い。 - smb passwd file = /etc/samba/smbpasswd
- smbpasswd方式で行う場合のパスワードファイルの指定
- unix password sync = yes
- UNIXアカウントとパスワードを同期するか否か
- passwd program = /usr/sbin/passwd
- passwdコマンドのパス
- passwd chat =
- passwdコマンドの成功時の出力を指定
- username map = /etc/samba/smbusers
- UNIXユーザのエイリアスを定義
書式「UNIXユーザ名 = Windowsマシンのユーザ名」
エイリアスを定義することにより全角ユーザのアカウントにも対応できる
共有の設定
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
print ok = Yes
browseable = No
[storage$]
path = /storage
valid users = user
- browseable = yes|no
- ブラウジングしたときに表示させるか否か。
共有名の最後に$を付けるのとbrowseable = noは同じ意味。 - writable = yes|no
read only = yes|no - readonlyか否か
- force user|group = ユーザ名
- 強制的に所有ユーザ|グループを指定したユーザ|グループにする。
- write list = ユーザ名もしくは@グループ名
- 書き込みを許可しない設定の場合、例外的に書き込みを許可するユーザ、グループを指定する。
スペース区切りで複数指定可能 - hide dot files = yes|no
- .で始まるファイルを隠すかどうか
- hide files = /見せられないよ*
- 表示させたくないファイルやディレクトリを指定
vetoの場合アクセスもさせない - create mask, directory mask, force create mode, force directory mode
- maskを設定するパラメータ
- valid users = ユーザ
- アクセスを許可するユーザを指定 @でグループ単位の指定も可能
- quest ok = yes|no
public = yes|no - ゲストを許可するか否か
smb.confのテンプレ
- smb.conf
[global]
server string = Samba Server Version %v
passwd program = /bin/passwd %u
passwd chat = all*authentication*tokens*updated*successfully
unix password sync = Yes
log file = /var/log/samba/log.%m
max log size = 50
wins support = Yes
idmap config * : backend = tdb
hosts allow = 10.0.0.
cups options = raw
[homes]
comment = Home Directories
read only = No
create mask = 0600
directory mask = 0700
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
print ok = Yes
browseable = No
[storage$]
path = /storage
read only = No
create mask = 0644
directory mask = 0755
[share]
comment = share directory
path = /share
writable = yes
guest ok = Yes- 構文チェック
- testparmコマンドを使います。このコマンドは実際に簡易的な動作チェックを行いながら構文をチェックするためほぼ正確です。
また、コメントアウトや無効なパラメータの除去にも使えます。
# testparm /etc/samba/smb.confLoad smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[storage$]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
アカウント作成
LinuxホストがSambaでMicrosoftネットワークに接続するためには
UNIXアカウントとWindows互換アカウントが必要になります。
- Samba用のUNIXアカウントを作成
- # useradd user -s /dev/null
- Windowsアカウントとの互換性を持たせる
- # pdbedit -a user
new password:
retype new password:
Unix username: user
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3769080199-2927724912-2544937066-1000
Primary Group SID: S-1-5-21-3769080199-2927724912-2544937066-513
Full Name:
Home Directory: \\localhost\user
HomeDir Drive:
Logon Script:
Profile Path: \\localhost\user\profile
Domain: LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 木, 07 2月 2036 00:06:39 JST
Kickoff time: 木, 07 2月 2036 00:06:39 JST
Password last set: 月, 01 9月 2014 22:36:43 JST
Password can change: 月, 01 9月 2014 22:36:43 JST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
古いバージョンの場合はsmbpasswdコマンドで行います。
# smbpasswd -a user
Windows互換のアカウントが出来たのでwindows側からnet useで認証、接続できます。
cmd> net use n: \\10.0.1.1\storage
ユーザー管理
- pdbeditコマンド
- オプション:
-a 追加
-x 除外
-L ユーザ一覧 - smbpasswdコマンド
- オプション:
-a 追加
-x 除外
-d 無効化
-e 有効化
バックエンドデータベース
- smbpasswd Samba2.2系で利用されていた方式でテキスト形式のパスワードファイルにユーザ情報を格納していました。
passdb backend = smbpasswd
passdb backend = tdbsam:/etc/samba/passdb.tdb
passdb backend = ldapsam:ldap://server:port
passdb backend = tdbsam:/etc/samba/passdb.tdb, ldapsam:ldap://server:port
Samba管理コマンド
- smbstatus
- Sambaに接続されているクライアント、使用中のリソースなどを確認できます。
PID Username Group Machine
-------------------------------------------------------------------
3869 c c 10.0.0.1 (ipv4:10.0.0.1:1039)
Service pid machine Connected at
-------------------------------------------------------
storage 3869 10.0.0.1 Mon Sep 1 19:48:08 2014
Locked files:
Pid Uid DenyMode Access R/W Oplock SharePath Name Time
--------------------------------------------------------------------------------------------------
3869 1000 DENY_NONE 0x100081 RDONLY NONE /storage . Mon Sep 1 21:00:49 2014
3869 1000 DENY_NONE 0x100081 RDONLY NONE /storage test Mon Sep 1 23:25:00 2014 - nmblookup
- NetBIOSの名前解決を行うコマンドです。マスターブラウザを検索することも可能です。
正引き
$ nmblookup sibyl10.0.0.1 root-pc<00>
逆引き
$ nmblookup -A 10.0.1.1Looking up status of 10.0.1.1
SIBYL <00> - B <ACTIVE>
SIBYL <03> - B <ACTIVE>
SIBYL <20> - B <ACTIVE>
..__MSBROWSE__. <01> - <GROUP> B <ACTIVE>
WORKGROUP <00> - <GROUP> B <ACTIVE>
WORKGROUP <1d> - B <ACTIVE>
WORKGROUP <1e> - <GROUP> B <ACTIVE>
MAC Address = 00-00-00-00-00-00
グループに所属するホスト一覧
$ nmblookup WORKGROUP10.0.1.1 WORKGROUP<00>
10.0.0.1 WORKGROUP<00>
192.168.56.1 WORKGROUP<00>
マスターブラウザの検索
$ nmblookup -M -10.0.1.1 __MSBROWSE__<10>
- 関連記事
-
-
DHCPサーバを構築 202 2014/09/03
-
issueファイル ログイン前にメッセージを表示 201 2014/09/02
-
sambaサーバの設定,管理 202 2014/08/30
-
Microsoftネットワークの概念 202 2014/08/30
-
tcpdumpの使い方 201 2014/08/29
-