Amazon Linux 2023からSMBファイルサーバーへSMBでアクセスする
LinuxからSMBファイルサーバーへアクセスしたい
こんにちは、のんピ(@non____97)です。
皆さんはLinuxからSMBファイルサーバーへアクセスしたいなと思ったことはありますか? 私はあります。
Linuxでネットワーク上のファイルサーバーをマウントする際に一般的に使用されるのはNFSです。
ただし、ファイルサーバーがSMBしか会話できないこともあるでしょう。
そんな時はLinuxがSMBも会話できるようになることで対応可能です。
実際の設定方法を以降紹介します。
検証環境
検証環境は以下のとおりです。
SMBクライアントとしてAmazon Linux 2023を用意して、SMBでAmazon FSX for NetApp ONTAPのSMBサーバーへ接続します。
認証方式はKerberos認証ではなく、NTLM認証を使用します。
必要なパッケージのインストール
LinuxがSMBファイル共有をマウントするために必要なパッケージをインストールします。
インストールするパッケージはcifs-utils
です。よくsamba-client
もインストールしている情報を見ますが、単純にSMBでマウントするだけならsamba-client
は不要です。
$ rpm -qa | grep -e cifs -e smb
$ sudo dnf install cifs-utils
Last metadata expiration check: 0:02:54 ago on Tue Feb 25 08:42:59 2025.
Dependencies resolved.
================================================================================================
Package Architecture Version Repository Size
================================================================================================
Installing:
cifs-utils x86_64 6.15-1.amzn2023.0.2 amazonlinux 95 k
Installing dependencies:
avahi-libs x86_64 0.8-14.amzn2023.0.12 amazonlinux 68 k
libicu x86_64 67.1-7.amzn2023.0.3 amazonlinux 9.6 M
libwbclient x86_64 2:4.17.12-1.amzn2023.0.1 amazonlinux 47 k
samba-client-libs x86_64 2:4.17.12-1.amzn2023.0.1 amazonlinux 5.0 M
samba-common noarch 2:4.17.12-1.amzn2023.0.1 amazonlinux 153 k
samba-common-libs x86_64 2:4.17.12-1.amzn2023.0.1 amazonlinux 106 k
Installing weak dependencies:
cifs-utils-info x86_64 6.15-1.amzn2023.0.2 amazonlinux 20 k
Transaction Summary
================================================================================================
Install 8 Packages
Total download size: 15 M
Installed size: 53 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): avahi-libs-0.8-14.amzn2023.0.12.x86_64.rpm 1.1 MB/s | 68 kB 00:00
(2/8): cifs-utils-info-6.15-1.amzn2023.0.2.x86_64.rpm 297 kB/s | 20 kB 00:00
(3/8): cifs-utils-6.15-1.amzn2023.0.2.x86_64.rpm 1.3 MB/s | 95 kB 00:00
(4/8): libwbclient-4.17.12-1.amzn2023.0.1.x86_64.rpm 2.5 MB/s | 47 kB 00:00
(5/8): samba-common-4.17.12-1.amzn2023.0.1.noarch.rpm 5.1 MB/s | 153 kB 00:00
(6/8): samba-client-libs-4.17.12-1.amzn2023.0.1.x86_64.rpm 60 MB/s | 5.0 MB 00:00
(7/8): samba-common-libs-4.17.12-1.amzn2023.0.1.x86_64.rpm 2.7 MB/s | 106 kB 00:00
(8/8): libicu-67.1-7.amzn2023.0.3.x86_64.rpm 63 MB/s | 9.6 MB 00:00
-----------------------------------------------------------------------------------------------------
Total 53 MB/s | 15 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
.
.
(中略)
.
.
Installed:
avahi-libs-0.8-14.amzn2023.0.12.x86_64 cifs-utils-6.15-1.amzn2023.0.2.x86_64 cifs-utils-info-6.15-1.amzn2023.0.2.x86_64 libicu-67.1-7.amzn2023.0.3.x86_64 libwbclient-2:4.17.12-1.amzn2023.0.1.x86_64
samba-client-libs-2:4.17.12-1.amzn2023.0.1.x86_64 samba-common-2:4.17.12-1.amzn2023.0.1.noarch samba-common-libs-2:4.17.12-1.amzn2023.0.1.x86_64
Complete!
cifs
やsmb
、samba
を含むパッケージのインストールがされていることを確認します。
$ rpm -qa | grep -e cifs -e smb -e samba
samba-common-4.17.12-1.amzn2023.0.1.noarch
samba-common-libs-4.17.12-1.amzn2023.0.1.x86_64
samba-client-libs-4.17.12-1.amzn2023.0.1.x86_64
cifs-utils-info-6.15-1.amzn2023.0.2.x86_64
cifs-utils-6.15-1.amzn2023.0.2.x86_64
SMB 3.0でマウント
SMB 3.0でマウントします。
$ sudo mkdir -p /mnt/fsxn/smb
$ sudo mount \
'//SMB-SERVER.corp.non-97.net/previous-version-test-share' \
/mnt/fsxn/smb \
-t cifs \
-o username=test-user01,domain=corp.non-97.net,vers=3.0,rw,file_mode=0777,dir_mode=0777
mount error: could not resolve address for SMB-SERVER.corp.non-97.net: Unknown error
はい、接続先のSMBサーバーが名前解決できないようです。
参照するDNSサーバーとしてSMBサーバーがドメイン参加しているAD DCのIPアドレスを指定してあげます。
Amazon Linux 2023で option setsで設定したDNSサーバー以外のDNSサーバーを指定する方法は以下記事で紹介しています。
こちらの記事で紹介しているように設定してあげます。
$ sudo vi /etc/systemd/resolved.conf
$ sudo systemctl restart systemd-resolved.service
$ tail /etc/resolv.conf
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.
nameserver 10.0.0.139
nameserver 10.0.0.2
search corp.non-97.net ec2.internal
$ dig SMB-SERVER.corp.non-97.net +short
10.0.8.246
名前解決できるようになりました。
SMBでマウントします。
$ sudo mount \
'//SMB-SERVER.corp.non-97.net/previous-version-test-share' \
/mnt/fsxn/smb \
-t cifs \
-o username=test-user01,domain=corp.non-97.net,vers=3.0,rw,file_mode=0777,dir_mode=0777
Password for test-user01@//SMB-SERVER.corp.non-97.net/previous-version-test-share:
$ mount | grep cifs
//SMB-SERVER.corp.non-97.net/previous-version-test-share on /mnt/fsxn/smb type cifs (rw,relatime,vers=3.0,cache=strict,username=test-user01,domain=corp.non-97.net,uid=0,noforceuid,gid=0,noforcegid,addr=10.0.8.246,file_mode=0777,dir_mode=0777,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
はい、マウントできました。
マウントポイントの参照も問題なくできます。
$ ls -l /mnt/fsxn/smb
total 282896
-rwxrwxrwx. 1 root root 262144 Feb 11 09:01 ASCII_256KiB.txt
-rwxrwxrwx. 1 root root 262144 Feb 11 09:01 ASCII_256KiB_copy.txt
-rwxrwxrwx. 1 root root 524288 Feb 20 04:38 'ASCII_512KiB - Copy (2).txt'
-rwxrwxrwx. 1 root root 524288 Feb 20 04:48 'ASCII_512KiB - Copy (3).txt'
-rwxrwxrwx. 1 root root 524288 Feb 20 03:44 'ASCII_512KiB - Copy.txt'
-rwxrwxrwx. 1 root root 524288 Feb 20 03:44 ASCII_512KiB.txt
-rwxrwxrwx. 1 root root 524288 Feb 20 03:44 ASCII_512KiB_copy.txt
-rwxrwxrwx. 1 root root 524288 Feb 20 03:44 ASCII_512KiB_copy2.txt
-rwxrwxrwx. 1 root root 67108864 Feb 20 05:25 'ASCII_64MiB - Copy (2).txt'
-rwxrwxrwx. 1 root root 67108864 Feb 20 05:20 'ASCII_64MiB - Copy.txt'
-rwxrwxrwx. 1 root root 67108864 Feb 11 08:39 ASCII_64MiB.txt
-rwxrwxrwx. 1 root root 67108864 Feb 11 08:39 ASCII_64MiB_copy.txt
-rwxrwxrwx. 1 root root 4194304 Feb 11 07:05 ASCI_4MiB.txt
-rwxrwxrwx. 1 root root 13134832 Jun 10 2024 AWS-Architecture-Icons-Deck_For-Light-BG_06072024.pptx
drwxrwxrwx. 2 root root 0 Feb 20 04:36 'New folder'
-rwxrwxrwx. 1 root root 65536 Feb 11 13:07 fio_randwrite_4KiB_block_64KiB_4jobs.0.0
-rwxrwxrwx. 1 root root 65536 Feb 11 13:07 fio_randwrite_4KiB_block_64KiB_4jobs.1.0
-rwxrwxrwx. 1 root root 61440 Feb 11 13:07 fio_randwrite_4KiB_block_64KiB_4jobs.2.0
-rwxrwxrwx. 1 root root 57344 Feb 11 13:07 fio_randwrite_4KiB_block_64KiB_4jobs.3.0
$ head /mnt/fsxn/smb/ASCII_256KiB.txt
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
SMB 3.1.1でマウント
SMB 3.1.1でマウントします。
$ sudo umount /mnt/fsxn/smb
$ sudo mount \
'//SMB-SERVER.corp.non-97.net/previous-version-test-share' \
/mnt/fsxn/smb \
-t cifs \
-o username=test-user01,domain=corp.non-97.net,rw,file_mode=0777,dir_mode=0777
Password for test-user01@//SMB-SERVER.corp.non-97.net/previous-version-test-share:
$ mount | grep cifs
//SMB-SERVER.corp.non-97.net/previous-version-test-share on /mnt/fsxn/smb type cifs (rw,relatime,vers=3.1.1,cache=strict,username=test-user01,domain=corp.non-97.net,uid=0,noforceuid,gid=0,noforcegid,addr=10.0.8.246,file_mode=0777,dir_mode=0777,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
マウントオプションで明示的に指定しなければ、SMB 3.1.1でマウントされるようです。
SMBのセッションをONTAP CLIで確認します。
::> cifs session show -fields auth-mechanism, connected-time, protocol-version, smb-encryption-status
node vserver session-id connection-id auth-mechanism connected-time protocol-version smb-encryption-status
------------------------- ------- -------------------- ------------- -------------- -------------- ---------------- ---------------------
FsxId0e64a4f5386f74c87-01 svm 12524229088740638755 338489517 NTLMv2 1m 47s SMB3_1 unencrypted
確かにSMB 3.1系でマウントしていることが分かります。
SMB暗号化の強制化ありでマウント
SMB暗号化の強制化ありでマウントしてみます。
SMBサーバーで暗号化を強制化します。
::> cifs security modify -vserver svm -is-smb-encryption-required true
再度セッションを貼り直すためにアンマウントしてから再度マウントします。
$ sudo umount /mnt/fsxn/smb
$ sudo mount \
'//SMB-SERVER.corp.non-97.net/previous-version-test-share' \
/mnt/fsxn/smb \
-t cifs \
-o username=test-user01,domain=corp.non-97.net,rw,file_mode=0777,dir_mode=0777 \
-v
Password for test-user01@//SMB-SERVER.corp.non-97.net/previous-version-test-share:
mount.cifs kernel mount options: ip=10.0.8.246,unc=\\SMB-SERVER.corp.non-97.net\previous-version-test-share,file_mode=0777,dir_mode=0777,user=test-user01,domain=corp.non-97.net,pass=********
$ mount | grep cifs
//SMB-SERVER.corp.non-97.net/previous-version-test-share on /mnt/fsxn/smb type cifs (rw,relatime,vers=3.1.1,cache=strict,username=test-user01,domain=corp.non-97.net,uid=0,noforceuid,gid=0,noforcegid,addr=10.0.8.246,file_mode=0777,dir_mode=0777,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
はい、正常にマウントできました。
ONTAP CLIでセッションを確認します。
::> cifs session show -fields auth-mechanism, connected-time, protocol-version, smb-encryption-status
node vserver session-id connection-id auth-mechanism connected-time protocol-version smb-encryption-status
------------------------- ------- -------------------- ------------- -------------- -------------- ---------------- ---------------------
FsxId0e64a4f5386f74c87-01 svm 12524229088740638756 338489518 NTLMv2 1m 27s SMB3_1 encrypted
encrypted
と暗号化されていることが分かりますね。
もちろん、この状態でもマウントポイント配下のファイルの読み書きは可能です。
$ ls -l /mnt/fsxn/smb
total 282896
-rwxrwxrwx. 1 root root 262144 Feb 11 09:01 ASCII_256KiB.txt
-rwxrwxrwx. 1 root root 262144 Feb 11 09:01 ASCII_256KiB_copy.txt
-rwxrwxrwx. 1 root root 524288 Feb 20 04:38 'ASCII_512KiB - Copy (2).txt'
-rwxrwxrwx. 1 root root 524288 Feb 20 04:48 'ASCII_512KiB - Copy (3).txt'
-rwxrwxrwx. 1 root root 524288 Feb 20 03:44 'ASCII_512KiB - Copy.txt'
-rwxrwxrwx. 1 root root 524288 Feb 20 03:44 ASCII_512KiB.txt
-rwxrwxrwx. 1 root root 524288 Feb 20 03:44 ASCII_512KiB_copy.txt
-rwxrwxrwx. 1 root root 524288 Feb 20 03:44 ASCII_512KiB_copy2.txt
-rwxrwxrwx. 1 root root 67108864 Feb 20 05:25 'ASCII_64MiB - Copy (2).txt'
-rwxrwxrwx. 1 root root 67108864 Feb 20 05:20 'ASCII_64MiB - Copy.txt'
-rwxrwxrwx. 1 root root 67108864 Feb 11 08:39 ASCII_64MiB.txt
-rwxrwxrwx. 1 root root 67108864 Feb 11 08:39 ASCII_64MiB_copy.txt
-rwxrwxrwx. 1 root root 4194304 Feb 11 07:05 ASCI_4MiB.txt
-rwxrwxrwx. 1 root root 13134832 Jun 10 2024 AWS-Architecture-Icons-Deck_For-Light-BG_06072024.pptx
drwxrwxrwx. 2 root root 0 Feb 20 04:36 'New folder'
-rwxrwxrwx. 1 root root 65536 Feb 11 13:07 fio_randwrite_4KiB_block_64KiB_4jobs.0.0
-rwxrwxrwx. 1 root root 65536 Feb 11 13:07 fio_randwrite_4KiB_block_64KiB_4jobs.1.0
-rwxrwxrwx. 1 root root 61440 Feb 11 13:07 fio_randwrite_4KiB_block_64KiB_4jobs.2.0
-rwxrwxrwx. 1 root root 57344 Feb 11 13:07 fio_randwrite_4KiB_block_64KiB_4jobs.3.0
$ head /mnt/fsxn/smb/ASCII_256KiB_copy.txt
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
$ echo test > /mnt/fsxn/smb/test.txt
$ ls -l /mnt/fsxn/smb/test.txt
-rwxrwxrwx. 1 root root 5 Feb 25 09:18 /mnt/fsxn/smb/test.txt
$ cat /mnt/fsxn/smb/test.txt
test
sambaclientによるSMBファイル共有一覧の確認
SMBファイル共有一覧を参照する場合sambaclient
を使用したくなります。
正常に動作するか実際に試しましょう。
$ which smbclient
which: no smbclient in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
$ sudo dnf install samba-client
Last metadata expiration check: 0:38:28 ago on Tue Feb 25 08:42:59 2025.
Dependencies resolved.
================================================================================================
Package Architecture Version Repository Size
================================================================================================
Installing:
samba-client x86_64 2:4.17.12-1.amzn2023.0.1 amazonlinux 673 k
Installing dependencies:
libsmbclient x86_64 2:4.17.12-1.amzn2023.0.1 amazonlinux 80 k
Transaction Summary
================================================================================================
Install 2 Packages
Total download size: 752 k
Installed size: 2.6 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): libsmbclient-4.17.12-1.amzn2023.0.1.x86_64.rpm 1.0 MB/s | 80 kB 00:00
(2/2): samba-client-4.17.12-1.amzn2023.0.1.x86_64.rpm 6.8 MB/s | 673 kB 00:00
------------------------------------------------------------------------------------------------
Total 4.5 MB/s | 752 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
.
.
(中略)
.
.
Installed:
libsmbclient-2:4.17.12-1.amzn2023.0.1.x86_64 samba-client-2:4.17.12-1.amzn2023.0.1.x86_64
Complete!
$ which smbclient
/usr/bin/smbclient
smbclient
が使用できるようになりましたね。
SMBファイル共有一覧を確認してみます。
$ smbclient -L //SMB-SERVER.corp.non-97.net -U test-user01@corp.non-97.net
Password for [test-user01@corp.non-97.net]:
Sharename Type Comment
--------- ---- -------
システム連携 Disk
以前のバージョン Disk
vol_test1 Disk
vol_ntfs_dst Disk
share_qtree_dir Disk
share_qtree Disk
share-test Disk
share Disk
previous-version-test-share Disk
New folder Disk
ipc$ IPC
FSxN日本語共有 Disk
FSxN 日本語共有 Disk
FSxN vol_ntfs Disk
c$ Disk
SMB1 disabled -- no workgroup available
はい、問題なく表示できました。
CIFSのカーネルモジュールのパラメーター確認
SMB1 disabled
と表示されているのが気になったので、CIFSのカーネルモジュールのパラメーターを確認します。
$ ls -l /sys/module/cifs/
total 0
-r--r--r--. 1 root root 4096 Feb 25 09:30 coresize
drwxr-xr-x. 2 root root 0 Feb 25 09:30 holders
-r--r--r--. 1 root root 4096 Feb 25 09:30 initsize
-r--r--r--. 1 root root 4096 Feb 25 09:30 initstate
drwxr-xr-x. 2 root root 0 Feb 25 09:30 notes
drwxr-xr-x. 2 root root 0 Feb 25 09:29 parameters
-r--r--r--. 1 root root 4096 Feb 25 09:30 refcnt
drwxr-xr-x. 2 root root 0 Feb 25 09:30 sections
-r--r--r--. 1 root root 4096 Feb 25 09:30 srcversion
-r--r--r--. 1 root root 4096 Feb 25 09:30 taint
--w-------. 1 root root 4096 Feb 25 09:00 uevent
-r--r--r--. 1 root root 4096 Feb 25 09:30 version
$ ls -l /sys/module/cifs/parameters/
total 0
-r--r--r--. 1 root root 4096 Feb 25 09:29 CIFSMaxBufSize
-r--r--r--. 1 root root 4096 Feb 25 09:29 cifs_max_pending
-r--r--r--. 1 root root 4096 Feb 25 09:29 cifs_min_rcv
-r--r--r--. 1 root root 4096 Feb 25 09:29 cifs_min_small
-rw-r--r--. 1 root root 4096 Feb 25 09:29 disable_legacy_dialects
-rw-r--r--. 1 root root 4096 Feb 25 09:29 enable_gcm_256
-rw-r--r--. 1 root root 4096 Feb 25 09:29 enable_negotiate_signing
-rw-r--r--. 1 root root 4096 Feb 25 09:29 enable_oplocks
-rw-r--r--. 1 root root 4096 Feb 25 09:29 require_gcm_256
-rw-r--r--. 1 root root 4096 Feb 25 09:29 slow_rsp_threshold
/sys/module/cifs/parameters/
配下に各種パラメーターが設定されているようです。
全ファイルを確認します。
$ for param in /sys/module/cifs/parameters/*; do
echo -n "$(basename $param): "
cat $param
done
CIFSMaxBufSize: 16384
cifs_max_pending: 32767
cifs_min_rcv: 4
cifs_min_small: 30
disable_legacy_dialects: N
enable_gcm_256: Y
enable_negotiate_signing: N
enable_oplocks: Y
require_gcm_256: N
slow_rsp_threshold: 1
各設定ごとに一つ設定値が指定されていることが分かります。
なお、modinfo
からでも各種パラメーターを確認することは可能です。
$ modinfo cifs
filename: /lib/modules/6.1.112-124.190.amzn2023.x86_64/kernel/fs/smb/client/cifs.ko
softdep: gcm
softdep: ccm
softdep: aead2
softdep: sha512
softdep: sha256
softdep: cmac
softdep: aes
softdep: nls
softdep: md5
softdep: hmac
softdep: ecb
version: 2.40
description: VFS to access SMB3 servers e.g. Samba, Macs, Azure and Windows (and also older servers complying with the SNIA CIFS Specification)
license: GPL
author: Steve French
alias: smb3
alias: fs-smb3
alias: fs-cifs
srcversion: 8FB16B989D3F0408E2CC79A
depends: cifs_md4,dns_resolver,cifs_arc4
retpoline: Y
intree: Y
name: cifs
vermagic: 6.1.112-124.190.amzn2023.x86_64 SMP preempt mod_unload modversions
sig_id: PKCS#7
signer: Amazon Linux Kernel Signing Key
sig_key: 21:49:20:72:20:B0:6F:FB:9B:FB:64:2B:50:2D:BB:D7:24:B5:E4:F9
sig_hashalgo: sha256
signature: 8B:96:E2:70:03:E3:F1:65:82:0D:7D:F2:08:10:66:8F:FB:38:89:1D:
AA:2D:05:5B:09:94:A8:AB:39:19:50:D0:8B:36:7E:20:5B:12:15:1A:
AF:2B:9B:96:D0:ED:6A:1B:72:DA:48:2A:A5:82:26:8A:6F:E2:B2:60:
68:C2:A3:76:FF:B2:9F:BD:4E:AA:F8:85:0B:26:FB:4E:30:6A:83:50:
AF:E6:CC:E1:69:5E:9A:77:C1:F8:E6:90:C0:F8:29:0C:F0:22:9C:C1:
A9:1D:D3:D6:32:4B:95:D8:4B:B0:B5:06:2F:1D:BA:65:4B:45:93:05:
E9:11:45:42:BD:1B:2A:00:A5:D1:71:84:A5:14:A7:29:00:A8:19:D8:
17:E5:A7:B7:48:20:69:A5:6A:E7:7F:72:6A:9C:83:E4:AB:E7:BF:EA:
9C:B1:60:D2:DF:18:67:61:82:18:B5:E1:1F:6D:4A:63:C7:1E:2B:79:
FD:9E:DF:D1:44:63:70:F8:8B:E8:0B:30:23:49:65:B4:A7:11:B4:E9:
CD:57:39:41:E7:E1:F2:D1:BE:B9:4F:91:24:8B:1B:6F:4A:D9:A0:3E:
58:38:44:AE:3A:8A:71:39:F6:19:31:CC:11:3D:95:39:76:22:B8:E1:
A3:E7:4F:6F:4C:87:73:87:B0:EC:72:7F:49:37:12:80:8A:B0:3E:24:
95:BE:29:EC:68:95:D4:CC:7C:E4:33:A1:D0:34:64:C1:AE:5D:FC:D1:
DA:F4:AA:E0:F3:9A:D2:10:01:3E:5B:C7:16:C8:9A:EF:3B:AA:C0:F1:
DC:6A:45:4A:CE:CB:BD:C7:58:85:76:69:D4:F0:97:72:BC:D4:2D:45:
71:A9:C1:E5:82:77:4F:98:B6:F6:F6:15:23:9D:71:B8:69:A5:22:26:
85:31:25:02:F0:76:23:9D:2F:43:5A:BD:BF:1C:B4:E6:69:15:7A:C5:
FF:1C:29:E8:91:C5:81:65:CC:60:B7:F2:D3:A3:FB:B7:DA:73:BD:DA:
46:FE:69:F0:A0:07:34:F9:7D:CE:E5:B5:85:49:52:DE:BD:99:7C:3D:
62:87:87:46:49:51:CC:65:B6:26:95:03:C9:AD:4B:E2:AC:29:7A:5C:
D9:4E:D6:54:95:01:D0:4F:01:E8:04:43:03:57:67:19:7F:4F:DE:8E:
9C:2C:AD:B5:9C:5F:16:3D:90:8F:B2:59:04:27:A0:5D:C9:11:F8:D5:
BE:A4:A0:CA:1F:5B:27:93:30:CB:B0:93:87:92:64:EE:4A:55:91:46:
D6:E2:AF:7A:6C:A5:9F:EA:59:69:F6:39:2C:D4:AB:D0:8A:C6:70:7A:
8F:9C:76:F4:39:CD:69:2A:C5:32:12:01
parm: CIFSMaxBufSize:Network buffer size (not including header) for CIFS requests. Default: 16384 Range: 8192 to 130048 (uint)
parm: cifs_min_rcv:Network buffers in pool. Default: 4 Range: 1 to 64 (uint)
parm: cifs_min_small:Small network buffers in pool. Default: 30 Range: 2 to 256 (uint)
parm: cifs_max_pending:Simultaneous requests to server for CIFS/SMB1 dialect (N/A for SMB3) Default: 32767 Range: 2 to 32767. (uint)
parm: slow_rsp_threshold:Amount of time (in seconds) to wait before logging that a response is delayed. Default: 1 (if set to 0 disables msg). (uint)
parm: enable_oplocks:Enable or disable oplocks. Default: y/Y/1 (bool)
parm: enable_gcm_256:Enable requesting strongest (256 bit) GCM encryption. Default: y/Y/0 (bool)
parm: require_gcm_256:Require strongest (256 bit) GCM encryption. Default: n/N/0 (bool)
parm: enable_negotiate_signing:Enable negotiating packet signing algorithm with server. Default: n/N/0 (bool)
parm: disable_legacy_dialects:To improve security it may be helpful to restrict the ability to override the default dialects (SMB2.1, SMB3 and SMB3.02) on mount with old dialects (CIFS/SMB1 and SMB2) since vers=1.0 (CIFS/SMB1) and vers=2.0 are weaker and less secure. Default: n/N/0 (bool)
$ sudo modinfo -p cifs
CIFSMaxBufSize:Network buffer size (not including header) for CIFS requests. Default: 16384 Range: 8192 to 130048 (uint)
cifs_min_rcv:Network buffers in pool. Default: 4 Range: 1 to 64 (uint)
cifs_min_small:Small network buffers in pool. Default: 30 Range: 2 to 256 (uint)
cifs_max_pending:Simultaneous requests to server for CIFS/SMB1 dialect (N/A for SMB3) Default: 32767 Range: 2 to 32767. (uint)
slow_rsp_threshold:Amount of time (in seconds) to wait before logging that a response is delayed. Default: 1 (if set to 0 disables msg). (uint)
enable_oplocks:Enable or disable oplocks. Default: y/Y/1 (bool)
enable_gcm_256:Enable requesting strongest (256 bit) GCM encryption. Default: y/Y/0 (bool)
require_gcm_256:Require strongest (256 bit) GCM encryption. Default: n/N/0 (bool)
enable_negotiate_signing:Enable negotiating packet signing algorithm with server. Default: n/N/0 (bool)
disable_legacy_dialects:To improve security it may be helpful to restrict the ability to override the default dialects (SMB2.1, SMB3 and SMB3.02) on mount with old dialects (CIFS/SMB1 and SMB2) since vers=1.0 (CIFS/SMB1) and vers=2.0 are weaker and less secure. Default: n/N/0 (bool)
OS起動時の自動マウント
OS起動時に自動でマウントするように設定してみましょう。
以下Red Hat公式ドキュメントを見ながら設定します。
まず、SMBアクセス時に発生するNTLM認証で使用するユーザー名やパスワード、ドメイン情報を記録したファイルを作成します。
$ sudo vi /root/smb.cred
$ ls -l /root/smb.cred
ls: cannot access '/root/smb.cred': Permission denied
$ sudo ls -l /root/smb.cred
-rw-r--r--. 1 root root 75 Feb 25 09:43 /root/smb.cred
$ sudo chmod 600 /root/smb.cred
$ sudo ls -l /root/smb.cred
-rw-------. 1 root root 75 Feb 25 09:43 /root/smb.cred
フォーマットは以下のとおりです。
username=user_name
password=password
domain=domain_name
/etc/fstab
にSMBマウントの行を追加します。
$ sudo vi /etc/fstab
$ cat /etc/fstab
#
UUID=4852a7fc-c9bb-4adb-868c-1d581e504784 / xfs defaults,noatime 1 1
UUID=8521-A91D /boot/efi vfat defaults,noatime,uid=0,gid=0,umask=0077,shortname=winnt,x-systemd.automount 0 2
//SMB-SERVER.corp.non-97.net/previous-version-test-share /mnt/fsxn/smb cifs credentials=/root/smb.cred 0 0
一度アンマウントして、mount -a
で再マウントします。
$ sudo umount /mnt/fsxn/smb
$ mount | grep cifs
$ sudo mount -a
$ mount | grep cifs
//SMB-SERVER.corp.non-97.net/previous-version-test-share on /mnt/fsxn/smb type cifs (rw,relatime,vers=3.1.1,cache=strict,username=test-user01,domain=corp.non-97.net,uid=0,noforceuid,gid=0,noforcegid,addr=10.0.8.246,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
はい、マウントされてました。/etc/fstab
が正常に動作していそうです。
実際にOSを再起動して、正常にマウントされるか確認します。
$ sudo systemctl reboot
Exiting session with sessionId: botocore-session-1740473076-unbp6l7q3vktxnb77behi32nsq.
# 再起動完了後
$ mount | grep cifs
//SMB-SERVER.corp.non-97.net/previous-version-test-share on /mnt/fsxn/smb type cifs (rw,relatime,vers=3.1.1,cache=strict,username=test-user01,domain=corp.non-97.net,uid=0,noforceuid,gid=0,noforcegid,addr=10.0.8.246,file_mode=0755,dir_mode=0755,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
$ df -hT -t cifs
Filesystem Type Size Used Avail Use% Mounted on
//SMB-SERVER.corp.non-97.net/previous-version-test-share cifs 31G 69M 31G 1% /mnt/fsxn/smb
$ sudo journalctl -b -u remote-fs.target
Feb 25 09:47:51 localhost systemd[1]: Reached target remote-fs.target - Remote File Systems.
Feb 25 09:47:52 localhost systemd[1]: Stopped target remote-fs.target - Remote File Systems.
Feb 25 09:48:00 ip-10-0-0-182.ec2.internal systemd[1]: Reached target remote-fs.target - Remote File Systems.
$ sudo dmesg | grep -i cifs
[ 9.581472] Key type cifs.spnego registered
[ 9.581876] Key type cifs.idmap registered
[ 9.583229] CIFS: No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3.1.1), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3.1.1 (or even SMB3 or SMB2.1) specify vers=1.0 on mount.
[ 9.585901] CIFS: Attempting to mount \\SMB-SERVER.corp.non-97.net\previous-version-test-share
$ ls -l /mnt/fsxn/smb | head
total 282897
-rwxr-xr-x. 1 root root 262144 Feb 11 09:01 ASCII_256KiB.txt
-rwxr-xr-x. 1 root root 262144 Feb 11 09:01 ASCII_256KiB_copy.txt
-rwxr-xr-x. 1 root root 524288 Feb 20 04:38 ASCII_512KiB - Copy (2).txt
-rwxr-xr-x. 1 root root 524288 Feb 20 04:48 ASCII_512KiB - Copy (3).txt
-rwxr-xr-x. 1 root root 524288 Feb 20 03:44 ASCII_512KiB - Copy.txt
-rwxr-xr-x. 1 root root 524288 Feb 20 03:44 ASCII_512KiB.txt
-rwxr-xr-x. 1 root root 524288 Feb 20 03:44 ASCII_512KiB_copy.txt
-rwxr-xr-x. 1 root root 524288 Feb 20 03:44 ASCII_512KiB_copy2.txt
-rwxr-xr-x. 1 root root 67108864 Feb 20 05:25 ASCII_64MiB - Copy (2).txt
はい、確かに起動時にSMBでマウントしているようですね。
オプションで_netdev
を付与していなかったので、何かしらエラーが出るのかなと思ったのですが、特にエラーも出ていないです。
実際に運用で使用する場合は_netdev
を付与しておくと安心でしょう。
実際に試します。
$ sudo vi /etc/fstab
$ cat /etc/fstab
#
UUID=4852a7fc-c9bb-4adb-868c-1d581e504784 / xfs defaults,noatime 1 1
UUID=8521-A91D /boot/efi vfat defaults,noatime,uid=0,gid=0,umask=0077,shortname=winnt,x-systemd.automount 0 2
//SMB-SERVER.corp.non-97.net/previous-version-test-share /mnt/fsxn/smb cifs credentials=/root/smb.cred,_netdev,vers=3.1.1,sec=ntlmsspi,seal 0 0
$ sudo systemctl reboot
man mount.cifs
を眺めるとsec
やseal
と認証や暗号化時のオプションもあったので明示的にしています。
sec=arg
Security mode. Allowed values are:
• none - attempt to connection as a null user (no name)
• krb5 - Use Kerberos version 5 authentication
• krb5i - Use Kerberos authentication and forcibly enable packet signing
• ntlm - Use NTLM password hashing
• ntlmi - Use NTLM password hashing and force packet signing
• ntlmv2 - Use NTLMv2 password hashing
• ntlmv2i - Use NTLMv2 password hashing and force packet signing
• ntlmssp - Use NTLMv2 password hashing encapsulated in Raw NTLMSSP message
• ntlmsspi - Use NTLMv2 password hashing encapsulated in Raw NTLMSSP message, and force packet signing
The default in mainline kernel versions prior to v3.8 was sec=ntlm. In v3.8, the default was changed to sec=ntlmssp.
If the server requires signing during protocol negotiation, then it may be enabled automatically. Packet signing may also be enabled automatically if it's enabled in /proc/fs/cifs/SecurityFlags.
seal Request encryption at the SMB layer. The encryption algorithm used is AES-128-CCM. Requires SMB3 or above (see vers).
OS再起動後指定したマウントオプションで正常にマウントおよび、読み書きできることを確認します。
$ mount | grep cifs
//SMB-SERVER.corp.non-97.net/previous-version-test-share on /mnt/fsxn/smb type cifs (rw,relatime,vers=3.1.1,sec=ntlmsspi,cache=strict,username=test-user01,domain=corp.non-97.net,uid=0,noforceuid,gid=0,noforcegid,addr=10.0.8.246,file_mode=0755,dir_mode=0755,seal,soft,nounix,serverino,mapposix,rsize=1048576,wsize=1048576,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1,_netdev)
$ sudo journalctl -b -u remote-fs.target
Feb 26 07:05:48 localhost systemd[1]: Reached target remote-fs.target - Remote File Systems.
Feb 26 07:05:48 localhost systemd[1]: Stopped target remote-fs.target - Remote File Systems.
Feb 26 07:05:56 ip-10-0-0-182.ec2.internal systemd[1]: Reached target remote-fs.target - Remote File Systems.
$ sudo dmesg | grep -i cifs
[ 9.029997] Key type cifs.spnego registered
[ 9.030508] Key type cifs.idmap registered
[ 9.032001] CIFS: Attempting to mount \\SMB-SERVER.corp.non-97.net\previous-version-test-share
$ ls -l /mnt/fsxn/smb | head
total 282897
-rwxr-xr-x. 1 root root 262144 Feb 11 09:01 ASCII_256KiB.txt
-rwxr-xr-x. 1 root root 262144 Feb 11 09:01 ASCII_256KiB_copy.txt
-rwxr-xr-x. 1 root root 524288 Feb 20 04:38 ASCII_512KiB - Copy (2).txt
-rwxr-xr-x. 1 root root 524288 Feb 20 04:48 ASCII_512KiB - Copy (3).txt
-rwxr-xr-x. 1 root root 524288 Feb 20 03:44 ASCII_512KiB - Copy.txt
-rwxr-xr-x. 1 root root 524288 Feb 20 03:44 ASCII_512KiB.txt
-rwxr-xr-x. 1 root root 524288 Feb 20 03:44 ASCII_512KiB_copy.txt
-rwxr-xr-x. 1 root root 524288 Feb 20 03:44 ASCII_512KiB_copy2.txt
-rwxr-xr-x. 1 root root 67108864 Feb 20 05:25 ASCII_64MiB - Copy (2).txt
$ echo test2 > /mnt/fsxn/smb/test2.txt
sh: /mnt/fsxn/smb/test2.txt: Permission denied
$ echo test2 | sudo tee -a /mnt/fsxn/smb/test2.txt >/dev/null
$ ls -l /mnt/fsxn/smb/test2.txt
-rwxr-xr-x. 1 root root 6 Feb 26 07:07 /mnt/fsxn/smb/test2.txt
$ cat /mnt/fsxn/smb/test2.txt
test2
はい、マウントおよび読み書きできることが分かりました。
この時のSMBのセッションは以下のとおりです。
::> cifs session show -instance
Vserver: svm
Node: FsxId0e64a4f5386f74c87-01
Session ID: 12524229088740638762
Connection ID: 338489525
Incoming Data LIF IP Address: 10.0.8.246
Workstation IP Address: 10.0.0.182
Authentication Mechanism: NTLMv2
User Authenticated as: domain-user
Windows User: CORP\test-user01
UNIX User: root
Open Shares: 2
Open Files: 0
Open Other: 0
Connected Time: 2m 13s
Idle Time: 29s
Protocol Version: SMB3_1
Continuously Available: No
Is Session Signed: false
NetBIOS Name: -
SMB Encryption Status: encrypted
Large MTU Enabled: true
Connection Count: 1
Active Shares: ipc$,
previous-version-test-share
Linuxでも簡単にSMBファイルサーバーをSMBでマウントすることは可能
Amazon Linux 2023からSMBファイルサーバーへSMBでアクセスしてみました。
NTLM認証の場合、単純に接続するだけなら手順としてはそこまで難しくないと思います。もし、正常に接続できない場合は以下ドキュメントを見ると良いでしょう。
なお、接続は簡単ですが、file_mode
やdir_mode
、rsize
、multiuser
など実際に本番運用するとなると、考慮が必要なオプションも多くあります。自身の環境に合わせて設定しましょう。
また、そもそもクライアントがNFSしか会話できない場合は以下記事で紹介しているようにネームマッピングすることで対応可能です。
この記事が誰かの助けになれば幸いです。
以上、クラウド事業本部 コンサルティング部の のんピ(@non____97)でした!