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 ← スクリプトに実行権限付加