このセクションでは、WindowsからアクセスできるCentOSの共有フォルダの作成について紹介します。

Sambaのインストール

Windows 系 OS 互換のファイルサーバーであるSambaをインストールします。

[root@localhost ~]# yum install samba samba-common
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.riken.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * rpmfusion-free-updates: mirror.fcix.net
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
ーー(省略)ーー
合計容量: 7.3 M
総ダウンロード容量: 1.5 M
Is this ok [y/d/N]: y
ーー(省略)ーー
完了しました!
[root@localhost ~]# 

sambaがインストールされているを確認します。

[root@localhost ~]# rpm -qa | grep samba
samba-4.10.16-24.el7_9.x86_64
samba-libs-4.10.16-24.el7_9.x86_64
samba-common-4.10.16-24.el7_9.noarch
samba-common-tools-4.10.16-24.el7_9.x86_64
samba-client-libs-4.10.16-24.el7_9.x86_64
samba-common-libs-4.10.16-24.el7_9.x86_64
[root@localhost ~]# 

共有フォルダの作成

共有するフォルダを作成します。

[user@localhost ~]$ mkdir /tmp/share
[user@localhost ~]$ 

作成したフォルダのアクセス権限を設定します。ここでは、読み書きそして実行も可能なフル権限を付与しています。

[user@localhost ~]$ chmod 777 /tmp/share/
[user@localhost ~]$

フォルダの権限が変更されていることを確認します。

[user@localhost ~]$ ls -la /tmp/
合計 1636
ーー(省略)ーー
drwxrwxrwx.  2 user user      6  7月 31 09:40 share
[user@localhost ~]$

Sambaの設定

Sambaの設定ファイルを修正します。

[root@localhost ~]# vi /etc/samba/smb.conf
[global]にあるworkgroupの値をWindowsマシンのワークグループの名前に合わせます。そして、[homes]の設定下に作成した共有フォルダに関連する設定を追加します。
[global]
        workgroup = WORKGROUP
ーー(省略)ーー
[homes]
ーー(省略)ーー
[share]
        path = /tmp/share
        public = Yes
        browseable = yes
        read only = no
        create mask = 777
        directory mask = 777

sambaユーザの登録

ユーザーがsambaサービスで使用できるようにsambaユーザーとして登録します。登録する前に、登録されているsambaユーザーの一覧を確認します。初期は誰も登録されていない状態になっています。

[root@localhost ~]# pdbedit -L
[root@localhost ~]# 

ユーザーを登録します。登録時に共有フォルダにアクセスするために必要なパスワードもここで登録します。

[root@localhost ~]# pdbedit -a user
new password:
retype new password:
Unix username:        user
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-3238735363-4036159029-3574504493-1000
Primary Group SID:    S-1-5-21-3238735363-4036159029-3574504493-513
Full Name:            
Home Directory:       \\localhost\user
HomeDir Drive:        
Logon Script:         
Profile Path:         \\localhost\user\profile
Domain:               LOCALHOST
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    月, 31  7月 2023 10:07:23 JST
Password can change:  月, 31  7月 2023 10:07:23 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@localhost ~]# 

sambaユーザーとして登録されていることを確認します。

[root@localhost ~]# pdbedit -L
user:1000:
[root@localhost ~]# 

Sambaの起動

Sambaサーバーを起動します。

[root@localhost ~]# systemctl start smb
[root@localhost ~]# 

Sambaサーバーが起動していることを確認します。

[root@localhost ~]# systemctl status smb
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
   Active: active (running) since 月 2023-07-31 10:12:00 JST; 5s ago
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 12209 (smbd)
   Status: "smbd: ready to serve connections..."
    Tasks: 4
   CGroup: /system.slice/smb.service
           ├─12209 /usr/sbin/smbd --foreground --no-process-group
           ├─12214 /usr/sbin/smbd --foreground --no-process-group
           ├─12215 /usr/sbin/smbd --foreground --no-process-group
           └─12216 /usr/sbin/smbd --foreground --no-process-group

 7月 31 10:11:59 localhost.localdomain systemd[1]: Starting Samba SMB Daemon...
 7月 31 10:12:00 localhost.localdomain smbd[12209]: [2023/07/31 10:12:00.034...
 7月 31 10:12:00 localhost.localdomain smbd[12209]:   daemon_ready: daemon '...
 7月 31 10:12:00 localhost.localdomain systemd[1]: Started Samba SMB Daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# 

Sambaサーバーの自動起動を有効にします。

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

自動起動が有効化されていることを確認します。

[root@localhost ~]# systemctl is-enabled smb
enabled
[root@localhost ~]

ファイアウォールで通信を許可

Sambaのサービスがファイアウォールで許可されているか現在の状態を確認します。ここでは、Sambaサービスを許可されていません。

[root@localhost ~]# firewall-cmd --list-services --zone=public --permanent
dhcpv6-client ssh
[root@localhost ~]#

Sambaサービスをファイアウォールで許可する設定をします。

[root@localhost ~]# firewall-cmd --add-service=samba --zone=public --permanent
success
[root@localhost ~]#

Sambaサービスを許可する設定になっているか確認します。

[root@localhost ~]# firewall-cmd --list-services --zone=public --permanent
dhcpv6-client samba ssh
[root@localhost ~]# 

設定を反映します。

[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# 

SELinux コンテキストの変更

共有フォルダファイルの SELinux コンテキストを変更します。

[root@localhost ~]# semanage fcontext -a -t samba_share_t /tmp/share
[root@localhost ~]# 

file_contexts.localファイルに追記されていることを確認します。

[root@localhost ~]# cat /etc/selinux/targeted/contexts/files/file_contexts.local 
# This file is auto-generated by libsemanage
# Do not edit directly.

/tmp/share    system_u:object_r:samba_share_t:s0
[root@localhost ~]# 

変更を永続的なものになるようにします。

[root@localhost ~]# restorecon /tmp/share
[root@localhost ~]#