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