SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【samba】CentOS7にsambaで雑にファイルサーバを構築する


雑に」というのはセキュリティ面や複雑な設定などは行わず単純にWindowsから参照可能なファイルサーバを構築するということです。
本格的に構築を行う場合には別のサイトなども参考にすることを推奨します。

前提など

本環境ではOSに以下を使用します。
・CentOS Linux release 7.8.2003 (Core)

また今回は通常のWindows10PC上にインストールしたVMware Workstation Playerに仮想マシンCentOS7を構築し、そこにsambaをインストールしていきます。

前述の通り、複雑な設定などは行わずLinux上のディレクトリをWindowsホストマシンから参照できるようにすることをゴールとします。

準備

sambaのインストール

対象のマシン上にsambaがインストールされていない場合にはインストールを行います。

・確認

[root@localhost ~]# rpm -qa | grep samba
[root@localhost ~]#

・インストール
なにも表示されない場合にはインストールされていないのでインストールから実行します。

[root@localhost ~]# yum install samba samba-common


・再確認

[root@localhost ~]# rpm -qa | grep samba
samba-libs-4.10.16-13.el7_9.x86_64
samba-common-libs-4.10.16-13.el7_9.x86_64
samba-common-tools-4.10.16-13.el7_9.x86_64
samba-common-4.10.16-13.el7_9.noarch
samba-client-libs-4.10.16-13.el7_9.x86_64
samba-4.10.16-13.el7_9.x86_64
[root@localhost ~]#
ユーザ作成

既に適当なユーザが作成されている場合には作成しなくても大丈夫かもしれませんが、ここでは分かりやすくLinux上にsamba用のユーザを作成しておきます。

・ユーザ作成

[root@localhost ~]# useradd smbusr
[root@localhost ~]# passwd smbusr
ユーザー smbusr のパスワードを変更。
新しいパスワード:
よくないパスワード: このパスワードは 8 未満の文字列です。
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
[root@localhost ~]#
共有フォルダの作成

sambaではユーザを作成、登録するとユーザごとのホームディレクトリが各自のフォルダになるので、複数ユーザでの使用を想定している場合には共有フォルダを作成しておきます。

[root@localhost home]# mkdir /home/share
[root@localhost home]# chmod 0777 /home/share/
[root@localhost home]# chown nobody:nobody /home/share/
[root@localhost home]# ll /home/
合計 0
drwxrwxrwx. 2 nobody nobody   6  528 00:44 share
SELinux、firewallの設定

ホスト側からサービス接続する際に阻害するものを無効化しておきます。

・SELinuxの無効化

[root@localhost samba]# getenforce
Enforcing
[root@localhost samba]# setenforce 0
[root@localhost samba]# getenforce
Permissive

一旦無効化できたが、次回起動時に再び有効になるので、自動起動も無効化する。
/etc/selinux/configSELINUX部分を以下のように修正します。

SELINUX=disabled

・firewallの無効化

[root@localhost samba]# systemctl stop firewalld

自動起動も停止しておく。

[root@localhost ~]# systemctl list-unit-files -t service | grep firewalld
firewalld.service                             enabled
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# systemctl list-unit-files -t service | grep firewalld
firewalld.service                             disabled
[root@localhost ~]#

設定

/etc/samba/smb.conf

sambaの基本的な設定はsmb.confファイルから行います。

・設定ファイルのバックアップ
標準の設定ファイルをバックアップしておきます。

[root@localhost samba]# cp smb.conf smb.conf.org
[root@localhost samba]#

・ /etc/samba/smb.conf
今回は以下のようにデフォルト設定を流用し、必要最低限の設定のみを行った。

[global]
        workgroup = WORKGROUP
        security = user

        passdb backend = tdbsam

[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes

[share]
        path = /home/share/
        browseable = yes
        read only = no

workgroupの値はWindowsマシンのworkgroupに合わせる必要があるので、必要ならWindowsマシンの設定を確認しておきましょう。
共有フォルダを作成する場合には[share]にあたるディレクティブを追加しておく。

sambaユーザの登録

Linuxシステム上で作成したユーザをsambaサービスで使用できるようにsambaユーザとして登録します。

[root@localhost samba]# pdbedit -a smbusr
new password:
retype new password:
Unix username:        smbusr
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-3883359787-3271332603-1083831788-1000
Primary Group SID:    S-1-5-21-3883359787-3271332603-1083831788-513
Full Name:
Home Directory:       \\localhost\smbusr
HomeDir Drive:
Logon Script:
Profile Path:         \\localhost\smbusr\profile
Domain:               LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          木, 07  22036 00:06:39 JST
Kickoff time:         木, 07  22036 00:06:39 JST
Password last set:    金, 28  52021 00:31:19 JST
Password can change:  金, 28  52021 00:31:19 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@localhost samba]#

・ユーザ一覧を確認

[root@localhost samba]# pdbedit -L
smbusr:1003:
samba起動

一連の設定、準備が完了したら設定を反映させます。
smbデーモンのステータスを確認して既に起動している場合には再起動、停止している場合には起動を行います。

[root@localhost home]# systemctl status smb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
[root@localhost home]# systemctl start smb
[root@localhost home]# systemctl status smb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
   Active: active (running) since 金 2021-05-28 00:57:05 JST; 3s ago
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 1799 (smbd)
   Status: "smbd: ready to serve connections..."
   CGroup: /system.slice/smb.service
           tq1799 /usr/sbin/smbd --foreground --no-process-group
           tq1801 /usr/sbin/smbd --foreground --no-process-group
           tq1802 /usr/sbin/smbd --foreground --no-process-group
           mq1803 /usr/sbin/smbd --foreground --no-process-group

 528 00:57:05 localhost.localdomain systemd[1]: Starting Samba SMB Daemon...
 528 00:57:05 localhost.localdomain smbd[1799]: [2021/05/28 00:57:05.3076...
 528 00:57:05 localhost.localdomain systemd[1]: Started Samba SMB Daemon.
 528 00:57:05 localhost.localdomain smbd[1799]:   daemon_ready: daemon 's...
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost home]

必要に応じて、自動起動の設定を行っておきます。

[root@localhost home]# systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.

確認

ここまでの設定が完了したら、Windowsホストマシンから参照します。
今回構築したサーバのIPは192.168.142.134なのでWindowsホストのエクスプローラなどから\\192.168.142.134に接続を行います。

f:id:wantanBlog:20210528014249p:plain

f:id:wantanBlog:20210528014318p:plain

上記のようにWindowsファイルシステムでLinux上のディレクトリが参照できれば問題ありません。
とりあえずただWindowsマシンから参照できるようにするだけなら比較的シンプルですね。

参考ブログ様
CentOS 7でSambaのWindowsファイルサーバ構築してみる - Qiita
Sambaの環境構築手順 - Qiita