Windowsファイルサーバー構築(Samba)

最終更新日: 2017.12.05

■概要

LinuxサーバーをWindowsのファイルサーバーにする。ここでは、Sambaを導入して以下のようなフォルダを作成する。
  • ユーザー専用のフォルダ
  • 全ユーザーで読み書き可能なフォルダ
  • 特定ユーザーのみ読み書き可能なフォルダ
  • 特定グループのみ読み書き可能なフォルダ
  • 特定ユーザー以外は参照専用のフォルダ

■Sambaインストール

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

■Samba設定

(1)Sambaサーバーアクセス用ユーザー作成
−−新規にユーザーを作成する場合はここから−−
[root@centos ~]# useradd centos ← Linuxへユーザー新規登録(例としてcentosとする)

[root@centos ~]# passwd centos ← パスワード設定
Changing password for user centos.
New password: ← パスワード応答
Retype new password: ← パスワード応答(確認)
passwd: all authentication tokens updated successfully.

−−既存のユーザーをSambaサーバーアクセス用ユーザーとする場合はここから−−
[root@centos ~]# 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)ホームディレクトリ作成
新規ユーザー対処
[root@centos ~]# mkdir /etc/skel/samba ← 新規ユーザー作成時にsamba用ディレクトリ作成

既存ユーザー対処
[root@centos ~]# 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@centos ~]# sh mkhomedir.sh ← 既存ユーザーsamba用ディレクトリ作成スクリプト実行

[root@centos ~]# rm -f mkhomedir.sh ← 既存ユーザーsamba用ディレクトリ作成スクリプト削除

(3)共有ディレクトリ作成
[root@centos ~]# mkdir /home/samba ← 全ユーザーでフルアクセスできる共有ディレクトリ作成

[root@centos ~]# chown nobody:nobody /home/samba ← 共有ディレクトリ所有者変更

(4)Samba設定
[root@centos ~]# vi /etc/samba/smb.conf ← Samba設定ファイル編集
[global]
   unix charset = UTF-8 ← 追加(Linux側日本語文字コード)
   dos charset = CP932 ← 追加(Windows側日本語文字コード)
   mangled names = no ← 追加(長いファイル名の文字化け対処)
   vfs objects = catia ← 追加(上記対処でファイルアクセス不可になる一部文字の置換)
   catia:mappings = 0x22:0xa8,0x2a:0xa4,0x2f:0xf8,0x3a:0xf7,0x3c:0xab,0x3e:0xbb,0x3f:0xbf,0x5c:0xff,0x7c:0xa6 ← 追加(上記対処でファイルアクセス不可になる一部文字の置換)

# 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.1. 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@centos ~]# systemctl start smb ← Samba起動※CentOS7の場合
[root@centos ~]# /etc/rc.d/init.d/smb start ← Samba起動※CentOS6の場合

[root@centos ~]# systemctl start nmb ← nmb起動※CentOS7の場合
[root@centos ~]# /etc/rc.d/init.d/nmb start ← nmb起動※CentOS6の場合

[root@centos ~]# systemctl enable smb ← Samba自動起動設定※CentOS7の場合
[root@centos ~]# chkconfig smb on ← Samba自動起動設定※CentOS6の場合

[root@centos ~]# systemctl enable nmb ← nmb自動起動設定※CentOS7の場合
[root@centos ~]# chkconfig nmb on ← nmb自動起動設定※CentOS6の場合


■Samba確認

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

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


■ごみ箱内ファイルの自動削除設定

1週間ごとに30日間アクセスのないごみ箱内のファイルを自動的に削除するようにする
[root@centos ~]# yum -y install tmpwatch ← tmpwatchインストール

[root@centos ~]# 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@centos ~]# chmod +x /etc/cron.weekly/recyclewatch ← ごみ箱内ファイル自動削除スクリプトに実行権限付加

■特定ユーザーのみ読み書き可能なフォルダを作成

※読み書き可能とするユーザーcentos1、centos2はすでに登録済の前提
[root@centos ~]# mkdir /home/private1 ← 特定ユーザーのみ読み書き可能とするディレクトリ(例:/home/private1)を作成

[root@centos ~]# chown nobody:nobody /home/private1 ← 特定ユーザーのみ読み書き可能とするディレクトリの所有者をnobodyに変更

[root@centos ~]# vi /etc/samba/smb.conf ← Samba設定ファイル編集
下記を追加
[private1]
   comment = private1
   path = /home/private1 ← 特定ユーザーのみ読み書き可能とするディレクトリを指定
   public = yes
   writable = yes
   only guest = yes
   directory mask = 0700
   create mask = 0700
   valid users = centos1 centos2 ← 読み書き可能とするユーザーを指定

[root@centos ~]# systemctl reload smb ← Samba設定反映
□centos1、centos2ユーザーでprivate1フォルダにファイル作成できること
□centos1、centos2ユーザー以外でprivate1フォルダにアクセスできないこと

■特定グループのみ読み書き可能なフォルダを作成

※読み書き可能とするグループに所属させるユーザーcentos1、centos2はすでに登録済の前提
[root@centos ~]# mkdir /home/private2 ← 特定グループのみ読み書き可能とするディレクトリ(例:/home/private2)を作成

[root@centos ~]# chown nobody:nobody /home/private2 ← 特定グループのみ読み書き可能とするディレクトリの所有者をnobodyに変更

[root@centos ~]# groupadd centos ← 読み書き可能とするグループ(例:centos)を登録

[root@centos ~]# usermod -G centos centos1 ← 読み書き可能とするユーザー(例:centos1)をcentosグループへ登録

[root@centos ~]# usermod -G centos centos2 ← 読み書き可能とするユーザー(例:centos2)をcentosグループへ登録

[root@centos ~]# vi /etc/samba/smb.conf ← Samba設定ファイル編集
下記を追加
[private2]
   comment = private2
   path = /home/private2 ← 特定グループのみ読み書き可能とするディレクトリを指定
   public = yes
   writable = yes
   only guest = yes
   directory mask = 0700
   create mask = 0700
   valid users = @centos ← 読み書き可能とするグループを指定

[root@centos ~]# systemctl reload smb ← Samba設定反映
□centos1、centos2ユーザーでprivate2フォルダにファイル作成できること
□centos1、centos2ユーザー以外でprivate2フォルダにアクセスできないこと

■特定ユーザー以外参照専用のフォルダを作成

※参照専用フォルダに書き込み可能とするユーザーcentosはすでに登録済の前提
[root@centos ~]# mkdir /home/share ← 参照専用とするディレクトリ(例:/home/share)を作成

[root@centos ~]# chown nobody:nobody /home/share ← 参照専用とするディレクトリの所有者をnobodyに変更

[root@centos ~]# vi /etc/samba/smb.conf ← Samba設定ファイル編集
下記を追加
[share]
   comment = share
   path = /home/share ← 参照専用とするディレクトリを指定
   public = yes
   read only = yes
   directory mask = 0700
   only guest = yes
   create mask = 0700
   write list = centos ← 書き込み可能とするユーザーを指定

[root@centos ~]# systemctl reload smb ← Samba設定反映
□centosユーザーのみshareフォルダにファイル作成できること
□centosユーザー以外はshareフォルダにファイル作成できず、参照のみできること


■関連コンテンツ




▲このページのトップへ戻る

Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします