0
1

More than 3 years have passed since last update.

【VMware】CentOS7にSambaを導入しファイルサーバーを構築する

Last updated at Posted at 2021-05-29

概要

仮想サーバに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などを使用してみる

/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)の下に追記

22ポートの下に追加する内容
-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

以下、完成形を載せておく。

/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 -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のバックアップを取っておく

/etc/samba/smb.confのバックアップ
# cp /etc/samba/smb.conf /etc/samba/smb.conf.org

2./etc/samba/smb.confを以下のように設定する

/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を送り疎通確認
image.png

もし通らなかったら、IPアドレスでpingが疎通する確認
 =>疎通する:時間がたったら再度コンピュータ名で疎通してみる
 =>疎通しない:IPアドレスなどの設定がおかしい
image.png

共有フォルダの確認

エクスプローラーを開き、上の検索バーに\\fileServerと入力する
エクスプローラーで\と表示されるはずです。
image.png

Enterを押したら、「ネットワーク視覚情報入力」というダイアログが出るので、先ほど追加したユーザ名とパスワードを入力する。
image.png

以下のように、ファイルが確認出来たら完成です!!
image.png

共有フォルダへのアクセス許可がないときの対処法

共有フォルダへのアクセスが遅いことへの対処法

ゴミ箱機能を追加する

参考サイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1