ファイル共有はオープンソースソフトウェアとして実績のあるSambaを説明します。Sambaの語源は、マイクロソフトのネットワークファイルシステムSMB(Server Message Block)に、2 つの母音を入れて作られたと言われています。
題名: Sambaを使ったサーバの構築(Sambaの基礎からPDC機能まで)
基本の設定や使い方について、参考になります。 ここから
testparm /etc/samba/smb.conf smb.confファイルを指定して設定を確認
pdbedit -Lw 現在 Sambaに登録されているユーザーをsmbpaswwd形式で表示
pdbedit -a ユーザー名 LinuxユーザーをSambaへ登録
コンピュータアカウント(コンピュータ名)の追加 pdbedit -a -m コンピュータ名
パスワードのバッチ入力 pdbedit -t
ユーザの削除 pdbedit -x ユーザ名
smbclient -L Sambaサーバー名 Linuxクライアントから接続、IPアドレスでも可能
smbstatus -d Sambaデーモンの動作状態を調べて表示
findsmb サブネットに存在するSambaサーバーを一覧表示
・指定したコンピュータ名でIPアドレスの取得
nmblookup debian1 <--- マシン名 debian1
querying debian1 on 192.168.0.255
192.168.0.8 debian1<00>
・WINSサーバへの問合せ
nmblookup -R -U 192.168.0.8 WORKGROUP <----- WINSサーバとワークグループ名を指定して問合せ
querying WORKGROUP on 192.168.0.8
0.0.0.0 WORKGROUP<00>
・登録されているNetBIOS名で確認する場合
nmblookup -A 192.168.0.2
Looking up status of 192.168.0.2
MACBOOKPRO13 <03> - B <ACTIVE>
MACBOOKPRO13 <20> - B <ACTIVE>
MACBOOKPRO13 <00> - B <ACTIVE> <---- コンピュータ名
..__MSBROWSE__. <01> - <GROUP> B <ACTIVE> <--- マスタブラウザ
WORKGROUP <1d> - B <ACTIVE>
WORKGROUP <1e> - <GROUP> B <ACTIVE>
WORKGROUP <00> - <GROUP> B <ACTIVE>
MAC Address = 00-00-00-00-00-00
・名前解決時に -S オプションを使う場合
nmblookup -S macbookpro13
querying macbookpro13 on 192.168.0.255
192.168.0.2 macbookpro13<00>
Looking up status of 192.168.0.2
MACBOOKPRO13 <03> - B <ACTIVE>
MACBOOKPRO13 <20> - B <ACTIVE>
MACBOOKPRO13 <00> - B <ACTIVE>
..__MSBROWSE__. <01> - <GROUP> B <ACTIVE>
WORKGROUP <1d> - B <ACTIVE>
WORKGROUP <1e> - <GROUP> B <ACTIVE>
WORKGROUP <00> - <GROUP> B <ACTIVE
MAC Address = 00-00-00-00-00-00
・マスタブラウザを確認 ワークグループ名を指定
nmblookup -B 192.168.0.255 -M WORKGROUP
querying WORKGROUP on 192.168.0.255
192.168.0.8 WORKGROUP<1d>
・マスタブラウザを確認 指定したIPサブネット中のマスタブラウザを検索
nmblookup -B 192.168.0.255 -M -
querying __MSBROWSE__ on 192.168.0.255
192.168.0.8 __MSBROWSE__<01>
・nmblookupコマンドと同様にNetBIOS名の名前解決を実行
net lookup host macbookpro13
192.168.0.2
・ワークグループのマスタブラウザを検索
net lookup master workgroup
192.168.0.8
net cache
・NetBIOSネームキャッシュのエントリを表示
net cache list
Key: NBT/DEBIAN1#20 Timeout: 10:48:56 Value: 192.168.0.8:0 (expired)
Key: NBT/VM2CENTOS6#20 Timeout: 10:48:29 Value: 192.168.0.161:0 (expired)
Key: NBT/*#00.1D.192.168.0.8 Timeout: Tue Apr 30 18:15:13 2013 Value: WORKGROUP (expired)
・特定のエントリを調べる場合
net cache search 'NBT/VM2CENTOS6*'
Key: NBT/VM2CENTOS6#20 Timeout: 10:48:29 Value: 192.168.0.161:0 (expired)
Q: CentOS 6 などでSambaをインストールするときに設定トラブルが起きる場合
A: CentOSではSELinuxが稼働しているので、OFFにするか、SELInuxでポリシーを設定します。OFFにする場合は、/etc/sysconfig/selinux というファイルを編集、 SELINUX=disabled に設定し再起動します。
Q:Linux側から共有ディレクトリやコンピュータが見えない、Windowsからは見える場合
A:もしかすると、SELinuxを無効にするとこの現象がおこる、ということかも。調査中。
Q:smb.conf の設定サンプル
A:サンプルとして CentOS 6.4 Samba smbpasswdでユーザー追加
[global]
unix charset = UTF-8
dos charset = CP932
workgroup = WORKGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
hosts allow = 127. 192.168.0.
security = user
passdb backend = tdbsam
[homes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[share1]
comment = Public Stuff
path = /home/samba
public = yes
writable = yes
printable = no
write list = +staff
[kyoyou2]
comment = Public Stuff
path = /home/share
public = yes
writable = yes
printable = no
write list = +staff
Sambaではいろいろな使い方に合わせて設定が可能です。代表的な環境でのサンプルとして、メモをまとめました。
Sambaインストール
設定ファイルsmb.confの作成、起動
ユーザ作成(LinuxユーザとSambaユーザ) 管理者用 administrator など ユーザ用 user01 など
各ユーザパスワード作成(LinuxユーザとSambaユーザ)
備考: ドメインの名称と種類 Windowsドメイン(NTドメイン、ADドメイン) Sambaドメイン
Sambaインストール
スタンドアロンのドメインコントローラ(PDC)としての設定ファイルsmb.confの作成、起動
ユーザ作成(LinuxユーザとSambaユーザ)
ユーザパスワード作成(LinuxユーザとSambaユーザ)
Sambaでの、UNIXのユーザ・グループとWindowsのユーザ・グループを管理する機能の概要について。
SambaではSambaユーザという独自のユーザを作成し、そのパスワードも設定します。 さらに、SambaサーバがUNIX系(Linuxも含む)の場合はUNIX(Linux)のログインユーザ名とパスワードが必要になります。
つまり、Sambaユーザには必ず対応するUNIX(Linux)ユーザが存在し、ログイン認証後にUNIX(Linux)ユーザとの対応付けが行われます。
また、コンピュータ名も必要となりますので、SambaユーザとUNIX(Linux)ユーザに登録します。 自動登録などの仕組みは別途必要です。
useraddコマンドなどで、Windowsユーザ名と同じ名前をUNIX(Linux)ユーザにパスワード付きで登録
useraddコマンドなどで、Windowsのコンピュータ名(名前の最後に$を付ける)と同じ名前をUNIX(Linux)ユーザにパスワード付き登録
ユーザ名とマシン名(最後に$を付ける)ともにpdbeditコマンドもしくはsmbpasswdコマンドを使います。
追加 pbdedit -a <Sambaユーザ名> 削除 pbdedit -x <Sambaユーザ名> 表示 pbdedit -Lw
Sambaユーザと同じようにUNIX(Linux)グループに対応するSambaグループを作成します。SambaグループはWindowsサーバに存在するローカルグループとして機能します。一般的に、マイクロソフトのWindowsドメインではない環境(ワークグループでのネットワーク運用)では、Sambaグループと言います。
net groupmap add unixgroup=UNIXグループ名 type=local ntgroup=Sambaグループ名 [ comment="<コメント文字>"]
net groupmap modify unixgroup=UNIXグループ名 type=local ntgroup=Sambaグループ名 [ comment="<コメント文字>"]
net groupmap delete ntgroup=<Sambaグループ名>
net groupmap list
net sam createlocalgroup <ローカルグループ名=UNIXグループ名>
net sam list groups
net sam list users
smb.conf にて valid users = @group1 +groiup2 という表現 @、+ でグループ名を指定
グローバルグループの初期設定(NTドメインの標準グローバルグループを作成)
groupadd domadmin groupadd domuser gtoupadd domguest
net groupmap add rid=512 ntgroup="Domain Admin" unixgroup=domadmin type=domain
net groupmap add rid=513 ntgroup="Domain Users" unixgroup=domuser type=domain
net groupmap add rid=514 ntgroup="Domain Guests" unixgroup=domguest type=domain
ユーザの権利 (重要な SeAddUsersPrivilege と SeMachineAccountPrivilege を設定)
net sam rights grant <Sambaユーザ / グループ > <ユーザの権利> -U <管理ユーザ>
net sam rights grant administrator SeMachineAccountPrivilege
net sam rights grant administrator SeTakeOwnershipPrivilege
net sam rights grant administrator SeBackupPrivilege
net sam rights grant administrator SeRestorePrivilege
net sam rights grant administrator SeRemoteShutdownPrivilege
net sam rights grant administrator SePrintOperatorPrivilege
net sam rights grant administrator SeAddUsersPrivilege
net sam rights grant administrator SeDiskOperatorPrivilege
WinbindはWindowsドメインに参加しているSambaサーバ上で、Windowsドメインのユーザ情報に基づいてUNIX(Linux)ユーザの情報を自動的に生成し、NSS(Name Servcie Switch)機能を経由してUNIX(Linux)ユーザの情報を提供するプログラムです。
Winbindを実行させるにはNSS(Name Server Switch)機構が必要となり、サーバのプラットフォームごとに設定方法が異なります。
CentOS5、CentOS6の場合 次のコマンド実行で自動設定されます。 authconfig --enablewinbind --update
Winbindの起動 service winbind restart
Winbindの動作確認 wbinfo -t wbinfo -u wbinfo -g
pam_winbind のインストールと設定は、CentOSの場合 authconfig --enablewinbindauth --update
無効にする場合は authconfig --disablewinbindauth
動作検証は、WindowsドメインのユーザでSSHでSambaサーバへログインします。 ssh -l Windowsユーザ Sambaサーバ
Sambaにはさまざま機能があり、設定方法も複雑な場合があります。単純なサンプル事例で基本をマスターして、さまざま応用にチャレンジしましょう。
Linuxユーザ administrator (グループも作成される) ユーザ名 samba01(グループも作成される) マシン名 samba-pc1
Windowsマシン名 samba-pc1 Windowsユーザ samba01
コンピュータアカウントとLinuxユーザを手動で作成する場合
useradd -s /dev/null -d /dev/null マシン名$
pebedit -a -m マシン名
Sambaグループ(ローカルグループ)の作成
net groupmap add unixgroup=UNIXグループ名 type=local ntgroup=<Sambaグループ名>
グローバルグループの初期設定
groupadd domadmin
groupadd domuser
groupadd domguest
net groupmap add rid=512 ntgroup="Domain Admins" unixgroup=domadmin type=domain
net groupmap add rid=513 ntgroup="Domain Users" unixgroup=domuser type=domain
net groupmap add rid=514 ntgroup="Domain Guests" unixgroup=domguest type=domain
ユーザ権利の設定
net sam rights grant <Sambaユーザ/グループ> <ユーザ権利> -U <管理ユーザ> ※重要なのは SeMachineAccountPrivilege SeAddUsersPrivilege です
net sam rights grant 'Sambaユーザ¥グループ' SeMachineAccountPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeTakeOwnershipPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeBackupPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeRestorePrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeRemoteShutdownPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SePrintOperatorPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeAddUsersPrivilege -U root
net sam rights grant 'Sambaユーザ¥グループ' SeDiskOperatorPrivilege -U root
ユーザ権利に関する現在の状況を一覧
net sam rights list SeAddUsersPrivilege -U ""%""
ドメインの信頼関係
WondowsドメインとSambaドメインを信頼する