Sambaの初期設定
Samba用ユーザの作成
[root@localhost ~]# /usr/sbin/groupadd samba-group ← 専用グループを作成
[root@localhost ~]# /usr/sbin/useradd -g samba-group -s /sbin/nologin samba-user ← ログオン不可にするため /sbin/nologin を指定
[root@localhost ~]# passwd samba-user ← Linux側のパスワード設定
Changing password for user samba-user.
新しいUNIX パスワード:
新しいUNIX パスワードを再入力してください:
passwd: all authentication tokens updated successfully.
Samba用ログインアカウント作成(既存ユーザをコピー)
[root@localhost ~]# pdbedit -a samba-user ← Linuxのユーザから、Sambaのユーザを生成
new password:
retype new password:
Unix username: samba-user
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2176861097-1824396684-924133851-1000
Primary Group SID: S-1-5-21-2176861097-1824396684-924133851-513
Full Name:
Home Directory: \\sv101\samba-user
HomeDir Drive:
Logon Script:
Profile Path: \\sv101\samba-user\profile
Domain: SV101
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: never
Kickoff time: never
Password last set: 土, 19 1月 2008 10:12:11 JST
Password can change: 土, 19 1月 2008 10:12:11 JST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
共有ディレクトリ作成
[root@localhost ~]# mkdir /home/samba
[root@localhost ~]# chown nobody:nobody /home/samba ← SambaのGuestアカウントはnobodyで動くため
設定ファイルの編集
[global]
unix charset = UTF-8 ← Fedora 側はunicode
dos charset = CP932 ← クライアントは日本語
display charset = UTF-8
workgroup = WORKGROUP
netbios name = SV192-168-1-1 ← LANのNETBIOSでの名前。他のマシンと重ならないように
hosts allow = 192.168.1.0/24
# hosts allow = 127. 192.168.1. # このような書き方でもよい
map to guest = Bad User ← 存在しないユーザでログオンしようとした時は、ゲストとしてアクセスさせる設定
# server string = Samba Server Version %v
server string = FileServer ← 公開されるサーバの名前(適当な文字列)
security = user
passdb backend = tdbsam
log file = /var/log/samba/log.%m
max log size = 50
cups options = raw
load printers = No ← プリンタ共有は使わない
disable spoolss = Yes ← プリンタのスプーリングは使わない
[homes] ← ユーザごとのホームディレクトリの公開方法設定
comment = Home Directories
read only = No
browseable = No ← Yesにすると、homesという名前でも共有される
public = No ← ゲストアクセスを明示的に拒否(デフォルト値)
[public]
comment = Public Stuff
path = /home/samba
public = Yes ← Guestアカウント(デフォルトはnobody)でアクセス可能。guest ok = yes と同じ意味
writable = Yes
printable = No
guest only = Yes ← 他のユーザでログオンしていても、強制的にGuestでアクセスさせる
smb.conf の設定ファイルの詳細説明は
日本Sambaユーザ会の日本語訳 を参考にしました
システム起動時に、Sambaを自動的にスタートさせる場合は、次の設定も行う
[root@localhost ~]# /sbin/chkconfig nmb on
[root@localhost ~]# /sbin/chkconfig smb on
ゲストアクセスの有無によって変わる利便性
(1)ゲストアクセス有り(map to guest = Bad User)の場合
全てのユーザがサーバのフォルダ一覧まで表示できる
public のみ表示されている
Sambaの登録ユーザでホームディレクトリを見たい時は、
Windowsエクスプローラで、ユーザ名を手入力する必要がある
\\FileServer ← エクスプローラのアドレス入力ボックス
\\FileServer\user ← ユーザ名(ディレクトリ名)を手入力
なお、WindowsとSambaのユーザ名・パスワードが一致している場合
のみ、自動的にユーザのホームディレクトリが表示されている
(2)ゲストアクセス無し(map to guest = Never)の場合
サーバをクリックすると、ユーザ名・パスワード入力を促される。
つまり、ゲストユーザは、publicフォルダにたどり着く前にはじかれる
入力したユーザ名・パスワードに従ってユーザディレクトリが表示される
セキュリティ上は、どちらの考え方もあっているんですけどね…
(そもそも、ゲストで入って、全ユーザ名一覧が見えていること自体がおかしい)
■ Ubuntu 9.10 での設定の相違箇所(2010年2月 追記)
共有ディレクトリ作成の箇所では、nobodyはnogroupに属している。
[root@localhost ~]# mkdir /home/samba
[root@localhost ~]# chown nobody:nogroup /home/samba ← SambaのGuestアカウントはnobodyで動くため
■ samba関連のコマンドライン
smbastatusコマンド (smb.confのエラー表示と、接続状況の表示)
# smbstatus
Samba version 3.4.0
PID Username Group Machine
-------------------------------------------------------------------
15048 samba-user samba-group win2000-vmware (192.168.1.74)
14717 samba-user samba-group i915-ubuntu (127.0.1.1)
Service pid machine Connected at
-------------------------------------------------------
IPC$ 15048 win2000-vmware Sun Feb 14 09:23:20 2010
samba-user 15048 win2000-vmware Sun Feb 14 09:23:36 2010
share 14717 i915-ubuntu Sun Feb 14 09:16:24 2010
IPC$ 14705 i915-ubuntu Sun Feb 14 09:15:05 2010
Locked files:
Pid Uid DenyMode Access R/W Oplock SharePath Name Time
--------------------------------------------------------------------------------------------------
15048 1001 DENY_NONE 0x20089 RDONLY EXCLUSIVE+BATCH /home/samba-user cropgtk.py Sun Feb 14 09:33:26 2010
15048 1001 DENY_NONE 0x100081 RDONLY NONE /home/samba-user . Sun Feb 14 09:32:46 2010
smbcontrolコマンド
共有接続を切断したい場合は、次のようにする
# smbcontrol smbd close-share 共有名
■ WindowsよりSamba共有へ接続/切断するバッチファイル
パスワードを平文で記述するので良くはないので、おすすめはしません。
net use X: \\サーバ名\共有名 パスワード user:ユーザ名
net use X: /delete