概要
仮想サーバにSambaを導入しファイルサーバーを構築して、windowsからアクセスする
環境
- windows10
- VMware Workstation 16 Player
- CentOS7
- サーバのIPアドレスは
192.168.3.200/24
と設定している
OS環境の作成
VMware Workstation 16 Playerを使用してCentOS7の「最小限のインストール」をする。
※その際に、選択した環境のアドオン「開発ツール」にチェックを入れてインストールする。
ホスト名の設定
ホスト名=ファイルサーバー名となります。今回のホスト名はfileServer
としている。
変更したいときは以下参考にしてください。
SELinuxを無効に設定
「/etc/selinux/config」の7行目「SELINUX=enforcing」を「SELINUX=disable」に修正する。
# vi /etc/selinux/config
1
2 # This file controls the state of SELinux on the system.
3 # SELINUX= can take one of these three values:
4 # enforcing - SELinux security policy is enforced.
5 # permissive - SELinux prints warnings instead of enforcing.
6 # disabled - No SELinux policy is loaded.
7 SELINUX=disable
8 # SELINUXTYPE= can take one of three values:
9 # targeted - Targeted processes are protected,
10 # minimum - Modification of targeted policy. Only selected processes are protected.
11 # mls - Multi Level Security protection.
12 SELINUXTYPE=targeted
※行数は:set number
で表示可能
ファイヤーウォールの設定
2つの設定方法がある
1.firewalldを使用
2.iptablesを使用
1.firewalldを使用
1-1.現在のファイヤーウォールの設定確認
servicesにsambaが無いことを確認
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
1-2.接続するserviceにsambaを追加する
# firewall-cmd --add-service=samba --permanent
success
# firewall-cmd --reload
success
--permanent
を付けることで、firewalld の再起動/再読み込み時にも反映させるようにする。
1-3.設定後確認
servicesにsambaが追加されていることを確認
firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client samba ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
2.iptablesを使用
前提条件1:CentOS7ではfirewalldが使用されているため、iptablesが別途インストールされていること。
前提条件2:firewalldを無効にしていること
2-1 /etc/sysconfig/iptablesで現在許可されているポートを確認する
cat /etc/sysconfig/iptables
などを使用してみる
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
2-2.ポートを/etc/sysconfig/iptablesに追加する
vi /etc/sysconfig/iptables
で編集モードへ行く。
下記の項目を「22ポート」(-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT)の下に追記
-A INPUT -p tcp -m tcp --dport 135:139 -j ACCEPT
-A INPUT -p udp -m udp --dport 135:139 -j ACCEPT
-A INPUT -p tcp -m tcp --dport microsoft-ds -j ACCEPT
以下、完成形を載せておく。
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 135:139 -j ACCEPT
-A INPUT -p udp -m udp --dport 135:139 -j ACCEPT
-A INPUT -p tcp -m tcp --dport microsoft-ds -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
2-3.設定後確認
servicesにwindowsで使用するポートが追加されていることを確認
# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
...
ACCEPT tcp -- anywhere anywhere tcp dpts:epmap:netbios-ssn
ACCEPT udp -- anywhere anywhere udp dpts:epmap:netbios-ssn
ACCEPT tcp -- anywhere anywhere tcp dpt:microsoft-ds
...
参考サイト:https://bit.ly/2T4mNjy https://bit.ly/3fW3txP
sambaのインストール
1.sambaをインストールする
# yum -y install samba samba-common
2.sambaの起動と確認
//sambaの起動
# systemctl start smb nmb
//起動確認
# systemctl status smb nmb
● smb.service - Samba SMB Daemon
Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled)
Active: active (running) since 土 2021-05-29 23:56:16 JST; 27min ago
Docs: man:smbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 1043 (smbd)
Status: "smbd: ready to serve connections..."
CGroup: /system.slice/smb.service
(省略)
● nmb.service - Samba NMB Daemon
Loaded: loaded (/usr/lib/systemd/system/nmb.service; enabled; vendor preset: disabled)
Active: active (running) since 土 2021-05-29 23:56:15 JST; 27min ago
Docs: man:nmbd(8)
man:samba(7)
man:smb.conf(5)
Main PID: 1021 (nmbd)
Status: "nmbd: ready to serve connections..."
CGroup: /system.slice/nmb.service
tq1021 /usr/sbin/nmbd --foreground --no-process-group
mq1041 /usr/sbin/nmbd --foreground --no-process-group
(省略)
3.Samba自動起動の設定
//自動起動の設定
# systemctl enable smb nmb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.
//設定の確認
# systemctl is-enabled smb nmb
enabled
enabled
sambaの設定
/etc/samba/smb.conf
に設定を入れていく
1.smb.conf
のバックアップを取っておく
# cp /etc/samba/smb.conf /etc/samba/smb.conf.org
2./etc/samba/smb.conf
を以下のように設定する
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = WORKGROUP
server string = SAMBA SERVER Version %v
netbios name = fileServer
security = user
passdb backend = tdbsam
dos charset = CP932
unix charset = UTF-8
wins support = yes
# printing = cups
# printcap name = cups
load printers = no
disable spoolss = yes
# cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[share]
comment = Share Folder for All Users
path = /home/share/
browseable = yes
read only = no
hosts allow = 192.168.3.
#[printers]
# comment = All Printers
# path = /var/tmp
# printable = Yes
# create mask = 0600
# browseable = No
#[print$]
# comment = Printer Drivers
# path = /var/lib/samba/drivers
# write list = @printadmin root
# force group = @printadmin
# create mask = 0664
# directory mask = 07:75
上記のコードの意味を以下の表にまとめておく
- [global]について
global | 意味 |
---|---|
workgroup = WORKGROUP | Windowsで利用するワークグループ名 |
server string = SAMBA SERVER Version %v | ネットワークコンピュータ一に表示される情報 |
netbios name = fileServer | ファイルサーバー名の設定 |
security = user | 誰がユーザ認証を行うかを設定するパラメータ (ユーザ名とパスワードでローカル認証を行う) |
passdb backend = tdbsam | Sambaのパスワードデータベースの形式(TDB) |
dos charset = CP932 | WINDOWS側の文字コード設定 |
unix charset = UTF-8 | WINDOWS側の文字コード設定 |
wins support = yes | WINSサポート用パラメータ、WINS利用時に有効 |
load printers = no | プリンタ共有機能の設定パラメータ、noで無効 |
disable spoolss = yes | プリンタ共有機能の設定パラメータ、yesで無効 |
- [homes][share]について
homes / share | 意味 |
---|---|
comment = Home Directories | 共有フォルダに設定する任意のコメント |
valid users = %S, %D%w%S | アクセス可能なユーザを指定 (%Sはアクセスしてきたユーザ名に置き換わる変数) |
browseable = No | 共有フォルダを見えるかどうか |
read only = No | 共有フォルダを読み取り専用にするかどうか |
inherit acls = Yes | 上位のディレクトリに付与されているACLアクセス許可すべてが継承可能となりファイル、フォルダ作成時に自動的に付与 |
path = /home/share/ | 共有フォルダとして設定するディレクトリのパス |
hosts allow = 192.168.3. | アクセスできるIPアドレスの指定 |
3.設定の確認
2行目のようにLoaded services file OK.
と出ていれば問題ない。
また、上の方の行にunkown
というエラーが出ていたら、ファイルのどこかにスペルミスや構文の間違いがある。
# testparm -s
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
# Global parameters
[global]
disable spoolss = Yes
dos charset = CP932
load printers = No
security = USER
server string = SAMBA SERVER Version %v
wins support = Yes
idmap config * : backend = tdb
[homes]
browseable = No
comment = Home Directories
inherit acls = Yes
read only = No
valid users = %S %D%w%S
[share]
comment = Share Folder for All Users
hosts allow = 192.168.3.
path = /home/share/
read only = No
共有用ディレクトリの作成
/etc/samba/smb.conf
の設定で、share
ディレクトリの設定を入れたため、share
ディレクトリを作成する。
# cd /home/
# mkdir share
# chmod -R 0777 share
# chown -R nobody:nobody share
Sambaアクセス用ユーザー作成と追加
1.Linuxユーザー(サーバサイド)のユーザーを作成
# useradd samba01
# passwd samba01
Changing password for user samba01
New password: samba01パスワード
Retype new password: パスワードを再入力
passwd: all authentication tokens updated successfully.
2.Windows側のユーザー属性追加
Sambaユーザの登録をします。
# pdbedit -a -u samba01 -f "samba user01"
new password: passwdコマンドと同じパスワード
retype new password: パスワードを再入力
-a
は新規作成するためのオプション。
-u
はユーザー名を指定するためのオプション。
-f
はフルネームの設定です。これはあってもなくても問題ありません。
3.設定確認
//作成したユーザの表示
# pdbedit -L
samba01:1004:samba user01
//ユーザーの詳細な情報
# pdbedit -L -v samba01
Unix username: samba01
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3128501545-864274216-2484869991-1002
Primary Group SID: S-1-5-21-3128501545-864274216-2484869991-513
Full Name: samba user01
Home Directory: \\fileserver\samba01
HomeDir Drive:
Logon Script:
Profile Path: \\fileserver\samba01\profile
Domain: FILESERVER
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Thu, 07 Feb 2036 00:06:39 JST
Kickoff time: Thu, 07 Feb 2036 00:06:39 JST
Password last set: Sat, 29 May 2021 18:42:35 JST
Password can change: Sat, 29 May 2021 18:42:35 JST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
もし間違ってユーザを作成したり追加してしまったら
Sambaの再起動
# systemctl restart smb
サーバにping疎通
コマンドプロンプトを起動し、サーバのコンピュータ名にpingを送り疎通確認
もし通らなかったら、IPアドレスでpingが疎通する確認
=>疎通する:時間がたったら再度コンピュータ名で疎通してみる
=>疎通しない:IPアドレスなどの設定がおかしい
共有フォルダの確認
エクスプローラーを開き、上の検索バーに\\fileServer
と入力する
エクスプローラーで\
は¥
と表示されるはずです。
Enterを押したら、「ネットワーク視覚情報入力」というダイアログが出るので、先ほど追加したユーザ名とパスワードを入力する。
共有フォルダへのアクセス許可がないときの対処法
共有フォルダへのアクセスが遅いことへの対処法
ゴミ箱機能を追加する