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

提供:あわ自由帳

メインページ > CentOS 7 で自宅サーバー構築  > Windowsファイルサーバー構築(Samba)(CentOS7)

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

Sambaインストール

[root@host3 ~]# yum -y install samba

Samba設定

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

新規にユーザを作成する場合

[root@host3 ~]# useradd sudachi
 ← Linuxへユーザ新規登録(例としてcentosとする)

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

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

[root@host3 ~]# pdbedit -a sudachi                                                                                           
Unknown parameter encountered: "display charset"
Ignoring unknown parameter "display charset"
new password:
retype new password:
Unix username:        sudachi
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-2942716232-233643787-16989344-1000
Primary Group SID:    S-1-5-21-2942716232-233643787-16989344-513
Full Name:            
Home Directory:       \\host3\sudachi
HomeDir Drive:        
Logon Script:         
Profile Path:         \\host3\sudachi\profile
Domain:               HOST3
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    土, 02  1月 2016 17:10:22 JST
Password can change:  土, 02  1月 2016 17:10:22 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

ホームディレクトリ作成

新規ユーザー対処

新規ユーザ作成時にsamba用ディレクトリ作成

[root@host3 ~]# mkdir /etc/skel/samba

既存ユーザー対処

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

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

共有ディレクトリ作成

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

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

Samba設定

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

# 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@host3 ~]# systemctl start smb ← Samba起動

[root@host3 ~]# systemctl start nmb ← nmb起動

[root@host3 ~]# systemctl enable smb ← Samba自動起動設定

[root@host3 ~]# systemctl enable nmb ← nmb自動起動設定

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

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

[root@host3 ~]# 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@host3 ~]# chmod +x /etc/cron.weekly/recyclewatch ← スクリプトに実行権限付加