このセクションでは、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 ~]#