sambaサーバの設定,管理 202

/ LPIC / Comment[0]
SambaサーバはLinuxホストをWindowsホストと同じようなファイルサーバ、プリンターサーバなどとして利用することが可能になります。

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.conf
Load 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

  • tdbsam
  • バイナリ形式のデータベースファイルにユーザ情報を格納します。
    passdb backend = tdbsam:/etc/samba/passdb.tdb

  • ldapsam
  • LDAPサーバにユーザー情報を格納します。数百ものユーザーを扱う場合に適しています。
    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 sibyl
10.0.0.1 root-pc<00>


逆引き
$ nmblookup -A 10.0.1.1
Looking 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 WORKGROUP
10.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>
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可