19 January 2008

Samba初期設定 on Fedora 8, Ubuntu

Sambaの初期設定

20080119-samba-nautilus-auth.png

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で動くため

設定ファイルの編集

/etc/samba/smb.conf

[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