前回、QNAPのXeon搭載NAS TVS-EC880のVirtualization Staionに構築した、 AlmaLinux 仮想マシンに Samba をインストールし、 ファイル共有 ストレージ用の 仮想ディスク を追加して、ネットワーク上の Windows ユーザへ公開しました。
Sambaのインストール
パッケージのインストールではCentOSで長年使い慣れた yum が、AlmaLinuxでも使えるものの廃止予定にあることから、推奨されている dnf を使ってインストールします。元々フォークアウトした関係にあるので、ユーザ側で意識する必要はなさそうです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# dnf install samba samba-common samba-client Last metadata expiration check: 0:13:45 ago on Thu 14 Jul 2022 02:35:08 PM HKT. Dependencies resolved. ========================================================================================================================== Package Architecture Version Repository Size ========================================================================================================================== Installing: samba x86_64 4.15.5-108.el9_0 baseos 786 k samba-client x86_64 4.15.5-108.el9_0 appstream 657 k samba-common noarch 4.15.5-108.el9_0 baseos 146 k Installing dependencies: avahi-libs x86_64 0.8-12.el9 baseos 66 k cups-libs x86_64 1:2.3.3op2-13.el9_0.1 baseos 264 k libevent x86_64 2.1.12-6.el9 baseos 261 k libicu x86_64 67.1-9.el9 baseos 9.6 M libsmbclient x86_64 4.15.5-108.el9_0 baseos 76 k libtirpc x86_64 1.3.2-1.el9 baseos 93 k libwbclient x86_64 4.15.5-108.el9_0 baseos 47 k python3-dns noarch 2.1.0-6.el9 baseos 306 k python3-ldb x86_64 2.4.1-1.el9 baseos 56 k python3-samba x86_64 4.15.5-108.el9_0 baseos 3.2 M python3-talloc x86_64 2.3.3-1.el9 baseos 21 k python3-tdb x86_64 1.4.4-1.el9 baseos 22 k python3-tevent x86_64 0.11.0-1.el9 baseos 19 k samba-client-libs x86_64 4.15.5-108.el9_0 baseos 5.5 M samba-common-libs x86_64 4.15.5-108.el9_0 baseos 101 k samba-common-tools x86_64 4.15.5-108.el9_0 baseos 455 k samba-libs x86_64 4.15.5-108.el9_0 baseos 101 k tdb-tools x86_64 1.4.4-1.el9 baseos 35 k Transaction Summary ========================================================================================================================== Install 21 Packages Total download size: 22 M Installed size: 83 M Is this ok [y/N]:y Downloading Packages: (1/21): avahi-libs-0.8-12.el9.x86_64.rpm 3.3 kB/s | 66 kB 00:20 (2/21): cups-libs-2.3.3op2-13.el9_0.1.x86_64.rpm 13 kB/s | 264 kB 00:20 (3/21): samba-client-4.15.5-108.el9_0.x86_64.rpm 32 kB/s | 657 kB 00:20 (4/21): libsmbclient-4.15.5-108.el9_0.x86_64.rpm 444 kB/s | 76 kB 00:00 (5/21): libevent-2.1.12-6.el9.x86_64.rpm 925 kB/s | 261 kB 00:00 (6/21): libtirpc-1.3.2-1.el9.x86_64.rpm 436 kB/s | 93 kB 00:00 (7/21): libwbclient-4.15.5-108.el9_0.x86_64.rpm 242 kB/s | 47 kB 00:00 (8/21): python3-ldb-2.4.1-1.el9.x86_64.rpm 544 kB/s | 56 kB 00:00 (9/21): python3-dns-2.1.0-6.el9.noarch.rpm 1.5 MB/s | 306 kB 00:00 (10/21): libicu-67.1-9.el9.x86_64.rpm 12 MB/s | 9.6 MB 00:00 (11/21): python3-talloc-2.3.3-1.el9.x86_64.rpm 121 kB/s | 21 kB 00:00 (12/21): python3-tdb-1.4.4-1.el9.x86_64.rpm 230 kB/s | 22 kB 00:00 (13/21): python3-tevent-0.11.0-1.el9.x86_64.rpm 183 kB/s | 19 kB 00:00 (14/21): samba-4.15.5-108.el9_0.x86_64.rpm 2.7 MB/s | 786 kB 00:00 (15/21): python3-samba-4.15.5-108.el9_0.x86_64.rpm 4.5 MB/s | 3.2 MB 00:00 (16/21): samba-common-4.15.5-108.el9_0.noarch.rpm 1.1 MB/s | 146 kB 00:00 (17/21): samba-common-libs-4.15.5-108.el9_0.x86_64.rpm 703 kB/s | 101 kB 00:00 (18/21): samba-common-tools-4.15.5-108.el9_0.x86_64.rpm 2.4 MB/s | 455 kB 00:00 (19/21): samba-client-libs-4.15.5-108.el9_0.x86_64.rpm 8.1 MB/s | 5.5 MB 00:00 (20/21): samba-libs-4.15.5-108.el9_0.x86_64.rpm 486 kB/s | 101 kB 00:00 (21/21): tdb-tools-1.4.4-1.el9.x86_64.rpm 209 kB/s | 35 kB 00:00 -------------------------------------------------------------------------------------------------------------------------- Total 213 kB/s | 22 MB 01:44 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Running scriptlet: samba-common-4.15.5-108.el9_0.noarch 1/21 Installing : samba-common-4.15.5-108.el9_0.noarch 1/21 Running scriptlet: samba-common-4.15.5-108.el9_0.noarch 1/21 Installing : python3-tdb-1.4.4-1.el9.x86_64 2/21 Installing : python3-ldb-2.4.1-1.el9.x86_64 3/21 Installing : tdb-tools-1.4.4-1.el9.x86_64 4/21 Installing : python3-tevent-0.11.0-1.el9.x86_64 5/21 Installing : python3-talloc-2.3.3-1.el9.x86_64 6/21 Installing : python3-dns-2.1.0-6.el9.noarch 7/21 Installing : libtirpc-1.3.2-1.el9.x86_64 8/21 Installing : libicu-67.1-9.el9.x86_64 9/21 Installing : libevent-2.1.12-6.el9.x86_64 10/21 Installing : avahi-libs-0.8-12.el9.x86_64 11/21 Installing : cups-libs-1:2.3.3op2-13.el9_0.1.x86_64 12/21 Installing : libwbclient-4.15.5-108.el9_0.x86_64 13/21 Installing : samba-common-libs-4.15.5-108.el9_0.x86_64 14/21 Installing : samba-client-libs-4.15.5-108.el9_0.x86_64 15/21 Installing : samba-libs-4.15.5-108.el9_0.x86_64 16/21 Installing : libsmbclient-4.15.5-108.el9_0.x86_64 17/21 Installing : python3-samba-4.15.5-108.el9_0.x86_64 18/21 Installing : samba-common-tools-4.15.5-108.el9_0.x86_64 19/21 Installing : samba-4.15.5-108.el9_0.x86_64 20/21 Running scriptlet: samba-4.15.5-108.el9_0.x86_64 20/21 Installing : samba-client-4.15.5-108.el9_0.x86_64 21/21 Running scriptlet: samba-client-4.15.5-108.el9_0.x86_64 21/21 Running scriptlet: libwbclient-4.15.5-108.el9_0.x86_64 21/21 Running scriptlet: samba-client-4.15.5-108.el9_0.x86_64 21/21 Verifying : samba-client-4.15.5-108.el9_0.x86_64 1/21 Verifying : avahi-libs-0.8-12.el9.x86_64 2/21 Verifying : cups-libs-1:2.3.3op2-13.el9_0.1.x86_64 3/21 Verifying : libevent-2.1.12-6.el9.x86_64 4/21 Verifying : libicu-67.1-9.el9.x86_64 5/21 Verifying : libsmbclient-4.15.5-108.el9_0.x86_64 6/21 Verifying : libtirpc-1.3.2-1.el9.x86_64 7/21 Verifying : libwbclient-4.15.5-108.el9_0.x86_64 8/21 Verifying : python3-dns-2.1.0-6.el9.noarch 9/21 Verifying : python3-ldb-2.4.1-1.el9.x86_64 10/21 Verifying : python3-samba-4.15.5-108.el9_0.x86_64 11/21 Verifying : python3-talloc-2.3.3-1.el9.x86_64 12/21 Verifying : python3-tdb-1.4.4-1.el9.x86_64 13/21 Verifying : python3-tevent-0.11.0-1.el9.x86_64 14/21 Verifying : samba-4.15.5-108.el9_0.x86_64 15/21 Verifying : samba-client-libs-4.15.5-108.el9_0.x86_64 16/21 Verifying : samba-common-4.15.5-108.el9_0.noarch 17/21 Verifying : samba-common-libs-4.15.5-108.el9_0.x86_64 18/21 Verifying : samba-common-tools-4.15.5-108.el9_0.x86_64 19/21 Verifying : samba-libs-4.15.5-108.el9_0.x86_64 20/21 Verifying : tdb-tools-1.4.4-1.el9.x86_64 21/21 Installed: avahi-libs-0.8-12.el9.x86_64 cups-libs-1:2.3.3op2-13.el9_0.1.x86_64 libevent-2.1.12-6.el9.x86_64 libicu-67.1-9.el9.x86_64 libsmbclient-4.15.5-108.el9_0.x86_64 libtirpc-1.3.2-1.el9.x86_64 libwbclient-4.15.5-108.el9_0.x86_64 python3-dns-2.1.0-6.el9.noarch python3-ldb-2.4.1-1.el9.x86_64 python3-samba-4.15.5-108.el9_0.x86_64 python3-talloc-2.3.3-1.el9.x86_64 python3-tdb-1.4.4-1.el9.x86_64 python3-tevent-0.11.0-1.el9.x86_64 samba-4.15.5-108.el9_0.x86_64 samba-client-4.15.5-108.el9_0.x86_64 samba-client-libs-4.15.5-108.el9_0.x86_64 samba-common-4.15.5-108.el9_0.noarch samba-common-libs-4.15.5-108.el9_0.x86_64 samba-common-tools-4.15.5-108.el9_0.x86_64 samba-libs-4.15.5-108.el9_0.x86_64 tdb-tools-1.4.4-1.el9.x86_64 Complete! |
Sambaの設定
まずはネットワーク上のWindows PCに対し、特定のユーザ( faxuser )に対する読み書きアクセスを許可するような、ネットワーク共有を以下のように設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[global] workgroup = WORKGROUP server string = FAX Tray netbios name = fxsrv security = user map to guest = bad user dns proxy = no [fax] path = /mnt/fax/ browsable = yes writable = yes guest ok = no valid users = faxuser |
SELinuxの無効化
Sambaの設定に続き、いつも何かと面倒なSELinuxを今回は敢えて無効化してしまいます。
現在の状態を sestatus コマンドで確認、 Current mode は enforcing になっていました。
1 2 3 4 5 6 7 8 9 10 11 |
# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 33 |
これを一時的に無効にするのであれば、 setenforce コマンドで簡単。
1 2 3 4 5 6 7 8 9 10 11 12 |
# setenforce 0 # sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 33 |
再起動後も永続的に無効にするには、設定ファイル /etc/sysconfig/selinux を次の要領で編集します。
1 2 3 4 |
有効) SELINUX=enforcing 無効) SELINUX=disabled |
システム再起動後、 sestatus や getenforce コマンドでSELinuxが無効化されていることが確認されました。
1 2 3 4 |
# sestatus SELinux status: disabled # getenforce Disabled |
上流であるRHEL9のドキュメンテーションによると、こうした設定ファイルでの無効化できなくなると記述されているので、いずれは、カーネルパラメータに selinux=0 を追記してシステムを起動するようにしなければと思います。
共有フォルダとアクセス権の設定
先ほどSambaの設定で指定したユーザをシステムに作成し、パスワードを設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# adduser -M faxuser -s /sbin/nologin # pdbedit -a faxuser new password: retype new password: Unix username: faxuser NT username: Account Flags: [U ] User SID: S-1-5-21-3492090132-4261111583-3053382904-1001 Primary Group SID: S-1-5-21-3492090132-4261111583-3053382904-513 Full Name: Home Directory: \\FXSRV\faxuser HomeDir Drive: Logon Script: Profile Path: \\FXSRV\faxuser\profile Domain: FXSRV Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: Wed, 06 Feb 2036 23:06:39 HKT Kickoff time: Wed, 06 Feb 2036 23:06:39 HKT Password last set: Thu, 14 Jul 2022 16:37:11 HKT Password can change: Thu, 14 Jul 2022 16:37:11 HKT Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
実際に共有するフォルダを作成し、アクセス権を回帰的に設定します。
1 2 3 4 5 6 7 8 |
# mkdir -p /mnt/fax # ls -l /mnt drwxr-xr-x. 2 root root 6 Jul 14 15:03 fax # chmod -R 777 /mnt/fax/ # chown -R faxuser:faxuser /mnt/fax # ls -l /mnt drwxrwxrwx. 2 faxuser faxuser 6 Jul 14 16:09 fax |
パラメータテストしてサービス始動
testparm コマンドで設定ファイル /etc/samba/smb.conf に誤りが無いことを確認の上、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# testparm Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] dns proxy = No map to guest = Bad User security = USER server string = FAX Tray idmap config * : backend = tdb [fax] path = /mnt/fax/ read only = No valid users = faxuser #systemctl restart {smb,nmb} |
サービスを始動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# systemctl enable smb Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service. # systemctl enable nmb Created symlink /etc/systemd/system/multi-user.target.wants/nmb.service → /usr/lib/systemd/system/nmb.service. # systemctl start {smb,nmb} # systemctl status smb ● smb.service - Samba SMB Daemon Loaded: loaded (/usr/lib/systemd/system/smb.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2022-07-14 15:11:10 HKT; 53s ago Docs: man:smbd(8) man:samba(7) man:smb.conf(5) Main PID: 20341 (smbd) Status: "smbd: ready to serve connections..." Tasks: 4 (limit: 5905) Memory: 10.6M CPU: 112ms CGroup: /system.slice/smb.service ├─20341 /usr/sbin/smbd --foreground --no-process-group ├─20343 /usr/sbin/smbd --foreground --no-process-group ├─20344 /usr/sbin/smbd --foreground --no-process-group └─20345 /usr/libexec/samba/samba-bgqd --ready-signal-fd=47 --parent-watch-fd=13 --debuglevel=0 -F Jul 14 15:11:08 fxsrv.local systemd[1]: Starting Samba SMB Daemon... Jul 14 15:11:08 fxsrv.local smbd[20341]: [2022/07/14 15:11:08.982599, 0] ../../source3/smbd/server.c:1734(main) Jul 14 15:11:08 fxsrv.local smbd[20341]: smbd version 4.15.5 started. Jul 14 15:11:08 fxsrv.local smbd[20341]: Copyright Andrew Tridgell and the Samba Team 1992-2021 Jul 14 15:11:10 fxsrv.local systemd[1]: Started Samba SMB Daemon. |
ファイアウォールの設定と疎通テスト
クライアントからの疎通テストの前に、ファイアウォールにサービス単位で永続的な許可を設定します。
1 2 3 4 |
# firewall-cmd --permanent --add-service=samba success # firewall-cmd --reload success |
クライアント側のWindows 10ではまず、共有フォルダへのアクセスに必要なユーザ名パスワードを、資格情報マネージャへ登録します。
その上でエクスプローラで共有フォルダを開いて、読み書きできることを確認。
この時サーバ側では、 smbstatus を使って現在のアクセスを確認することが出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# smbstatus Samba version 4.15.5 PID Username Group Machine Protocol Version Encryption Signing ---------------------------------------------------------------------------------------------------------------------------------------- 24177 faxuser faxuser 192.168.26.50 (ipv4:192.168.26.50:59553) SMB3_11 - partial(AES-128-CMAC) Service pid Machine Connected at Encryption Signing --------------------------------------------------------------------------------------------- fax 24177 192.168.26.50 Fri Jul 14 15:29:41 AM 2022 HKT - - Locked files: Pid User(ID) DenyMode Access R/W Oplock SharePath Name Time -------------------------------------------------------------------------------------------------- 24177 1000 DENY_NONE 0x100081 RDONLY NONE /mnt/fax . Fri Jul 14 15:29:47 2022 24177 1000 DENY_NONE 0x100081 RDONLY NONE /mnt/fax . Fri Jul 14 15:29:47 2022 |
ゲストアクセス有効化
実はこの共有フォルダ、社内にある複合機が受信したFAXのPDF出力先にするつもりで、ネットワーク内の多くのユーザがこのFAX受信トレイを簡単に参照できることが求められています。
そこで、ゲストユーザアクセスを可能とすべく、設定ファイルを以下のように書き換えました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[global] workgroup = WORKGROUP server string = FAX Tray netbios name = fxsrv security = user map to guest = bad user guest account = nobody dns proxy = no [fax] path = /mnt/fax/ browsable = yes writable = yes guest ok = yes guest only = yes |
念の為、共有フォルダの所有権も変更しておきます。
1 2 3 |
# chown -R nobody:nobody /mnt/fax # ls -l /mnt drw-rw-rw-. 2 nobody nobody 6 Jul 14 16:09 fax |
Windows 10クライアント側では、資格情報マネージャのエントリを削除しても、以前に接続したセッションが残っているので、再起動するか net use * /delete できれいにしてからあらためてゲストアクセスを試行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# smbstatus Samba version 4.15.5 PID Username Group Machine Protocol Version Encryption Signing ---------------------------------------------------------------------------------------------------------------------------------------- 24224 nobody nobody 192.168.26.50 (ipv4:192.168.26.50:49764) SMB3_11 - - Service pid Machine Connected at Encryption Signing --------------------------------------------------------------------------------------------- fax 24224 192.168.26.50 Fri Jul 14 16:43:24 AM 2022 HKT - - IPC$ 24224 192.168.26.50 Fri Jul 14 16:43:24 AM 2022 HKT - - Locked files: Pid User(ID) DenyMode Access R/W Oplock SharePath Name Time -------------------------------------------------------------------------------------------------- 24224 65534 DENY_NONE 0x100081 RDONLY NONE /mnt/fax . Fri Jul 14 16:43:24 2022 24224 65534 DENY_NONE 0x100081 RDONLY NONE /mnt/fax . Fri Jul 14 16:43:24 2022 |
試しに最初に作成したユーザ faxuser でアクセスし、ファイルを生成してみましたが所有者nobodyで生成されました( guest only = yes )。
共有セキュリティ制限の設定
このような匿名の便利なネットワーク共有があると、本来の目的以外の用途に使われてしまうものです。
そこで、以前書いたこちらの記事を参考に、共有フォルダで扱えるファイルの種類を拡張子で制限したり( veto files )、アクセス可能なクライアントサブネットを限定( hosts allow )してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[global] workgroup = WORKGROUP server string = FAX Tray netbios name = fxsrv security = user map to guest = bad user guest account = nobody dns proxy = no hosts allow = 127. 192.168.2. 192.168.31. 192.168.30. 192.168.26. [fax] path = /mnt/fax/ browsable = yes writable = yes guest ok = yes guest only = yes veto files = /.??*/*.DS_Store/Thumbs.db/*.avi/*.mov/*.mp3/*.mp4/*.exe/*.com/*.bat/*.bin/*.dll/*.zip/*.rar/*.cab/*.reg/ delete veto files = yes |
Windowsクライアントから共有フォルダに対し、 veto files に指定した禁止拡張子に該当するファイルを書き込もうとすると、エラーで失敗するようになりました。
以上で、Sambaによるファイル共有構築の基礎を網羅することができました。次ページでは追加した仮想ディスクをマウントし、共有フォルダとして使えるように設定します。