Sambaのインストール

概要:Samba(サンバ)は、UNIX および UNIX互換マシンをネットワークを通じてWindowsマシン互換のファイルサーバ/プリント・サーバにするオープン・ソース・ソフトウェアである。GPL(GNU General Public License)基づいて公開されている。
ここでは、Sambaを導入し、各ユーザのホームディレクトリへWindowsクライアントからアクセスできるようにする。
また、全ユーザでフルアクセスできる共有フォルダも作成する。
なお、Sambaサーバーへは内部からのみアクセスできるようにする。

注意: Sambaがつながらない場合
以下の対応をして原因を見つけ解決する

  1. ) SELinux
    SELinuxを一時的に無効または、定常的に無効にしてみる。
     
  2. ) Linuxのファイアウォールの設定
    /etc/sysconfig/iptablesを直接編集する。
    開くポートは139:tcp,138:udp,137:udpである。
    # vi /etc/sysconfig/iptables
    
    以下を追加する。
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
    -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
    
  3. ) クライアントのファイアーウォール
    クライアントのファイアーウォールを無効にしてみる。
     
  4. ) ディレクトリーのパーミッション
    samba対象ディレクトリーのパーミッションを以下のように変更する。
    # chmod 755 samba対象ディレクトリー ← 一般ユーザーの場合
    # chmod 777 samba対象ディレクトリー ← 共有ディレクトリーの場合
    

1. SELinuxの設定
SELinux有効の場合のディレクトリ設定

# getenforce
Enforcing
# getsebool -a | grep mb ← SELinuxのsamba/smbの設定を表示する
# setsebool -P samba_enable_home_dirs=1 ← この値をONにする。
# getsebool -a | grep mb
samba_enable_home_dirs --> on

2. Sambaインストール

# yum list samba ← sambaがあるか確認
# yum -y install samba ← sambaインストール
   :
   :
==========================================================================================
 Package                  Arch          Version                      Repository      Size
==========================================================================================
Installing:
 samba                    i386          3.0.33-3.15.el5_4.1          updates         16 M
Installing for dependencies:
 perl-Convert-ASN1        noarch        0.20-1.1                     base            42 k
 samba-common             i386          3.0.33-3.15.el5_4.1          updates        8.7 M

Transaction Summary
==========================================================================================
Install      3 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
   :
   :
Installed:
  samba.i386 0:3.0.33-3.15.el5_4.1

Dependency Installed:
  perl-Convert-ASN1.noarch 0:0.20-1.1       samba-common.i386 0:3.0.33-3.15.el5_4.1

Complete!

3. Sambaユーザ作成

  1. ) Sambaサーバーアクセス用ユーザ作成
    • 新規にユーザを作成する場合はここから
      # useradd centos    ← Linuxへユーザ新規登録(例としてcentosとする)
      # passwd centos    ← パスワード設定
      Changing password for user centos.
      New password:     ← パスワード応答
      Retype new password:  ← パスワード応答(確認)
      passwd: all authentication tokens updated successfully.
      
       引き続き以下のpdbeditを実施する。
       
    • 既存のユーザをSambaサーバーアクセス用ユーザとする場合はここから
      # pdbedit -a centos
        ← Linuxに登録済のユーザをSambaサーバーアクセス用ユーザとして
          新規登録(例としてcentosとする)
      new password: ← パスワード応答
      retype new password: ← パスワード応答(確認)
      startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist. File
       successfully created.
      Unix username:        centos
      NT username:
      Account Flags:        [U          ]
      User SID:             S-1-5-21-1397570601-503051572-2212552623-2000
      Primary Group SID:    S-1-5-21-1397570601-503051572-2212552623-2001
      Full Name:
      Home Directory:       \\linux\centos
      HomeDir Drive:
      Logon Script:
      Profile Path:         \\linux\centos\profile
      Domain:               LINUX
      Account desc:
      Workstations:
      Munged dial:
      Logon time:           0
      Logoff time:          土, 14 12月 1901 05:45:51 GMT
      Kickoff time:         土, 14 12月 1901 05:45:51 GMT
      Password last set:    月, 13 12月 2004 16:06:00 GMT
      Password can change:  月, 13 12月 2004 16:06:00 GMT
      Password must change: 土, 14 12月 1901 05:45:51 GMT
      Last bad password   : 0
      Bad password count  : 0
      Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
      
       
  2. ) ホームディレクトリ作成
    ホームディレクトリはテンプレートディレクトリーで既に設定されている。
     
  3. ) 共有ディレクトリ作成
    # mkdir /home/samba
    # mkdir /home/samba/samba ← 全ユーザでフルアクセスできる共有ディレクトリ作成
    # chown -R nobody:nobody /home/samba ← 共有ディレクトリ所有者変更
    # chmod -R 777 /home/samba
    

4. Samba設定

# vi /etc/samba/smb.conf ← Samba設定ファイル編集
[global]
   unix charset = UTF-8 ← 追加(Linux側日本語文字コード)
   dos charset = CP932 ← 追加(Windows側日本語文字コード)
   display charset = UTF-8 ← 追加(Linux側日本語文字コード)

# workgroup = NT-Domain-Name or Workgroup-Name
   workgroup = MYGROUP
  
   workgroup = WORKGROUP ← 変更(Windowsのワークグループ名を指定)
      ※マイコンピュータのプロパティ⇒コンピュータ名タブ内のワークグループ欄を参照

;       hosts allow = 127. 192.168.12. 192.168.13.
        hosts allow = 127. 192.168.1. 192.168.100. 192.168.75.
  ← 追加(127. で内部からのみアクセスできるようにする)

   security = user ← Defaultのまま

# If you want to automatically load your printer list rather
# than setting them up individually then you'll need this
;   load printers = yes
      ← 行頭に;を追加(プリンタ共有無効化)※Sambaでプリンタを共有しない場合
   load printers = no ← 追加(プリンタ共有無効化)※Sambaでプリンタを共有しない場合
   disable spoolss = yes ← 追加(プリンタ共有無効化)※Sambaでプリンタを共有しない場合

[homes]
   comment = Home Directories
   path = %H/samba ← 追加(/home/ユーザー名/sambaをホームディレクトリにする)
   browseable = no
   writable = yes
   各ユーザ専用のごみ箱機能追加(ここから)
   ※ファイル削除時に自動的にごみ箱へ移動されるようにする
   vfs objects = recycle ← ごみ箱の有効化
   recycle:repository = .recycle ← ごみ箱のディレクトリ名(/home/ユーザ名/.recycle)
   recycle:keeptree = no ← ごみ箱へ移動時にディレクトリ構造を維持しない
   recycle:versions = yes ← 同名のファイルがごみ箱にある場合に別名で移動
   recycle:touch = no ← ごみ箱へ移動時にタイムスタンプを更新しない
   recycle:maxsize = 0 ← ごみ箱へ移動するファイルのサイズ上限(0:無制限)
   recycle:exclude = *.tmp ~$* ← ここで指定したファイルはごみ箱へ移動せずに即削除する
   各ユーザ専用のごみ箱機能追加(ここまで)

----- 以下を最終行へ追加 -----
[public]
   comment = Public Stuff
   path = /home/samba/samba
   writable = yes
   guest ok = yes
   guest only = yes
   注:piblicとguest okは同じ
   ----- 共有ディレクトリのごみ箱機能追加(ここから) -----
         ファイル削除時に自動的にごみ箱へ移動されるようにする
   vfs objects = recycle ← ごみ箱の有効化
   recycle:repository = .recycle ← ごみ箱のディレクトリ名(/home/ユーザ名/.recycle)
   recycle:keeptree = no ← ごみ箱へ移動時にディレクトリ構造を維持しない
   recycle:versions = yes ← 同名のファイルがごみ箱にある場合に別名で移動
   recycle:touch = no ← ごみ箱へ移動時にタイムスタンプを更新しない
   recycle:maxsize = 0 ← ごみ箱へ移動するファイルのサイズ上限(0:無制限)
   recycle:exclude = *.tmp ~$* ← ここで指定したファイルはごみ箱へ移動せずに即削除する
   ----- 共有ディレクトリのごみ箱機能追加(ここまで) -----

smb.confの編集内容が正しいかチェックするコマンドを実行する。

# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.       ← 正しい場合OKが表示される。
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions ← 空ENTER

[global]
        dos charset = CP932
        display charset = UTF-8
   :
   :
   :
        recycle:versions = yes
        recycle:keeptree = no
        recycle:repository = .recycle
#

5. Samba起動

# /etc/rc.d/init.d/smb start ← Samba起動
Starting SMB services:                                     [  OK  ]
Starting NMB services:                                     [  OK  ]
# chkconfig smb on ← Samba自動起動設定
# chkconfig --list smb

6. Samba確認
Windowsクライアント側で「スタート」⇒「ファイル名を指定して実行」⇒「名前」に "\\サーバーIPアドレス(例:\\192.168.1.2)"またはホスト名(例:centos)を入力して 「OK」ボタン押下し、Samba共有フォルダが表示されることを確認。

※ユーザ名とパスワードの問い合わせには、pdbeditコマンドで作成したユーザ名、パスワードを入力する

7. ごみ箱内ファイルの自動削除設定
1週間ごとに30日間アクセスのないごみ箱内のファイルを自動的に削除するようにする

# vi /etc/cron.weekly/recyclewatch
#!/bin/bash
for user in `ls /home/`
do
    if [ -d /home/$user/samba/.recycle ]; then
        tmpwatch -f 720 /home/$user/samba/.recycle/
    fi
done

スクリプトに実行権限付与

# chmod +x /etc/cron.weekly/recyclewatch

8. Samba関係の設定ファイル
Samba設定ファイルは、/etc/sambaディレクトリに主にテキスト形式で納められている。
 lmhosts
 secrets.tdb
 smb.conf
 smbpasswd
 smbusers


最終更新のRSS
Last-modified: 2014-03-11 (火) 01:59:57 (3691d)