トップ  > サーバ設定:運用  > 各アプリケーションのインストール  > Windowsファイルサーバ構築(Samba)

Windowsファイルサーバ構築(Samba)  (最終更新日:2010/03/21)

LinuxサーバをWindowsのファイルサーバにします。

ここでは有名なSambaを導入し、各ユーザのホームディレクトリへWindowsクライアントからアクセスできるようにします。

また、全ユーザでフルアクセスできる共有フォルダも作成します。

Sambaサーバへは内部からのみのアクセスとします。

Sambaインストール

[root@sv ~]# yum install samba ← sambaインストール

Samba設定

1.Sambaサーバアクセス用ユーザ作成

(1)新規に作成する場合

[root@sv ~]# useradd user_m ← ユーザの新規登録(例としてuser_mとします)

[root@sv ~]# passwd user_m ← user_mのパスワード設定
Changing password for user user_m.
New UNIX password: ← user_mのパスワード入力(非表示)
Retype new UNIX password: ← user_mのパスワード入力確認(非表示)
passwd: all authentication tokens updated successfully.

(2)既存のユーザをSambaサーバアクセス用ユーザとする場合

[root@sv ~]# pdbedit -a user_m ← 登録済のユーザをSambaサーバアクセス用ユーザとして新規登録(例としてuser_mとする)
new password: ← パスワード入力(非表示)
retype new password: ← パスワード入力確認(非表示)
Unix username:        user_m
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-2560700142-3237251608-1821689497-1003
Primary Group SID:    S-1-5-21-2560700142-3237251608-1821689497-513
Full Name:            
Home Directory:       \\sv\user_m
HomeDir Drive:        
Logon Script:         
Profile Path:         \\sv\user_m\profile
Domain:               SV
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    金, 19  3月 2010 16:56:30 JST
Password can change:  金, 19  3月 2010 16:56:30 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
2.ホームディレクトリ作成
[root@sv ~]# mkdir /etc/skel/samba ← 新規ユーザ作成時にsamba用ディレクトリ作成

[root@sv ~]# vi mkhomedir.sh ← 既存ユーザsamba用ディレクトリ作成スクリプト作成
ここから----------
#!/bin/bash

for user in `ls /home`
do
    id $user > /dev/null 2>&1
    [ $? -eq 0 ] && \
    [ ! -d /home/$user/samba ] && \
    mkdir /home/$user/samba && \
    chown $user:$user /home/$user/samba && \
    echo "/home/$user/samba create"
done
----------ここまで

[root@sv ~]# sh mkhomedir.sh ← 既存ユーザsamba用ディレクトリ作成スクリプト実行

[root@sv ~]# rm -f mkhomedir.sh ← 既存ユーザsamba用ディレクトリ作成スクリプト削除
3.共有ディレクト作成
[root@sv ~]# mkdir /home/samba ← 全ユーザでフルアクセスできる共有ディレクトリ作成

[root@sv ~]# chown nobody:nobody /home/samba ← 共有ディレクトリ所有者変更
4.Samba設定
[root@sv ~]# 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 = 192.168.1. 192.168.2. 127.
        hosts allow = 192.168.0. 127. ← 追加(内部からのみアクセスできるようにする)

# 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
        public = yes
        writable = yes
        only guest = 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 ~$* ← ここで指定したファイルはごみ箱へ移動せずに即削除する

Samba起動

[root@sv ~]# /etc/rc.d/init.d/smb start ← Samba起動
SMB サービスを起動中:                                      [  OK  ]
NMB サービスを起動中:                                      [  OK  ]

[root@sv ~]# chkconfig smb on ← Samba自動起動設定

[root@sv ~]# chkconfig --list smb ← Samba自動起動設定確認
smb             0:off   1:off   2:on    3:on    4:on    5:on    6:off

Samba確認

Windowsクライアント側でマイネットワーク上でLinuxサーバが表示されるか、「スタート」→「ファイル名を指定して実行」→「\\サーバ名(又はIPアドレス)」を入力後OKを押下し、共有フォルダが表示されることを確認。

ユーザ名とパスワードは、pdbeditコマンドで作成したユーザ名パスワードを入力します。

ゴミ箱を定期的に空にする設定

1週間毎に30日間アクセスのないゴミ箱内のファイルを自動的に削除します。

[root@sv ~]# vi /etc/cron.weekly/recyclewatch ← ごみ箱内ファイル自動削除スクリプト作成
ここから----------
#!/bin/bash
for user in `ls /home/`
do
    if [ -d /home/$user/.recycle ]; then
        tmpwatch -f 720 /home/$user/.recycle/
    fi
done
----------ここまで

[root@sv ~]# chmod +x /etc/cron.weekly/recyclewatch ← スクリプトに実行権限付加