LinuxサーバーをWindowsのファイルサーバーにする。ここでは、Sambaを導入して以下のようなフォルダを作成する。
[root@localhost ~]# yum -y install 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 ← 共有ディレクトリ所有者変更 |
[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 ~$* ← ここで指定したファイルはごみ箱へ移動せずに即削除する 共有ディレクトリのごみ箱機能追加(ここまで) |
[root@localhost ~]# systemctl start smb ← Samba起動 |
[root@localhost ~]# systemctl start nmb ← nmb起動 |
[root@localhost ~]# systemctl enable smb ← Samba自動起動設定 |
[root@localhost ~]# systemctl enable nmb ← nmb自動起動設定 |
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設定反映 |