CentOS7

sambaインストール

LinuxサーバーをWindowsのファイルサーバーにする。ここでは、Sambaを導入して以下のようなフォルダを作成する。

Sambaインストール

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

Samba設定

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

--新規にユーザーを作成する場合はここから--
[root@localhost ~]# useradd hogehoge ← Linuxへユーザー新規登録(例としてhogehogeとする)
[root@localhost ~]# passwd hogehoge ← パスワード設定
Changing password for user hogehoge.
New password: ← パスワード応答
Retype new password: ← パスワード応答(確認)
passwd: all authentication tokens updated successfully.

--既存のユーザーをSambaサーバーアクセス用ユーザーとする場合はここから--
[root@localhost ~]# pdbedit -a hogehoge ← Linuxに登録済のユーザーをSambaサーバーアクセス用ユーザーとして新規登録(例としてhogehogeとする)
new password: ← パスワード応答
retype new password: ← パスワード応答(確認)
startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist. File successfully created.
Unix username: hogehoge
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\hogehoge
HomeDir Drive:
Logon Script:
Profile Path: \\linux\hogehoge\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

ホームディレクトリ作成

新規ユーザー対処
[root@localhost ~]# mkdir /etc/skel/samba ← 新規ユーザー作成時にsamba用ディレクトリ作成
既存ユーザー対処
[root@localhost ~]# 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@localhost ~]# sh mkhomedir.sh ← 既存ユーザーsamba用ディレクトリ作成スクリプト実行
[root@localhost ~]# rm -f mkhomedir.sh ← 既存ユーザーsamba用ディレクトリ作成スクリプト削除

共有ディレクトリ作成

[root@localhost ~]# mkdir /home/samba ← 全ユーザーでフルアクセスできる共有ディレクトリ作成
[root@localhost ~]# chown nobody:nobody /home/samba ← 共有ディレクトリ所有者変更

Samba設定

[root@localhost ~]# 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@localhost ~]# systemctl start smb ← Samba起動
[root@localhost ~]# systemctl start nmb ← nmb起動
[root@localhost ~]# systemctl enable smb ← Samba自動起動設定
[root@localhost ~]# systemctl enable nmb ← nmb自動起動設定

Samba確認

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

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

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

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

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

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

※読み書き可能とするユーザーhogehoge1、hogehoge2はすでに登録済の前提

[root@localhost ~]# mkdir /home/private1 ← 特定ユーザーのみ読み書き可能とするディレクトリ(例:/home/private1)を作成
[root@localhost ~]# chown nobody:nobody /home/private1 ← 特定ユーザーのみ読み書き可能とするディレクトリの所有者をnobodyに変更
[root@localhost ~]# 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 = hogehoge1 hogehoge2 ← 読み書き可能とするユーザーを指定
[root@localhost ~]# systemctl reload smb ← Samba設定反映

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

※参照専用フォルダに書き込み可能とするユーザーhogehogeはすでに登録済の前提

[root@localhost ~]# mkdir /home/share ← 参照専用とするディレクトリ(例:/home/share)を作成
[root@localhost ~]# chown nobody:nobody /home/share ← 参照専用とするディレクトリの所有者をnobodyに変更
[root@localhost ~]# 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 = hogehoge ← 書き込み可能とするユーザーを指定
[root@localhost ~]# systemctl reload smb ← Samba設定反映

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS