見出し画像

397.1 CIFS連携


主題397:LinuxおよびWindowsクライアントの操作
397.1 CIFS連携

LinuC300の試験範囲である主題390~397まであるうちの「主題397:LinuxおよびWindowsクライアントの操作」から「397.1 CIFS連携」についてのまとめ

  • 重要度:3

  • 説明:
    混在環境におけるCIFSの使い方に習熟している。

  • 主要な知識範囲:
    - SMB/CIFSの概念を理解する 
    - LinuxクライアントからリモートCIFS 共有にアクセスしマウントする
    - CIFS認証情報を安全に保存する
    - CIFSの機能と利点を理解する
    - リモートCIFS 共有のファイル所有権および許可について理解する

  • 重要なファイル、用語、ユーティリティ:
    - SMB/CIFS
    - mount、mount.cifs
    - smbclient
    - smbget
    - smbtar
    - smbtree
    - findsmb
    - smb.conf
    - smbcquotas
    - /etc/fstab


(補足)
Sambaユーザーは事前に作成されています。
(別記事 Appendix (準備その4)ユーザーを作成する 参照)


SMB/CIFSの概念を理解する

SMBもCIFSもファイル共有をするためのプロトコル。

(注意)
SMB/CIFSプロトコルに関しては時代の流れとともに紆余曲折があったようで、インターネットの情報にもその記事が書かれた年代によって表現が異なっているので注意が必要。
様々な情報を整理すると、SMBの変遷は SMB → CIFS → SMB1.0 → SMB2.0 → SMB3.0 ということになりそうです。

  • SMB(Server Message Block):

    • NetBIOSインターフェイスを利用するプロトコルのうち、NetBEUI上で動作するものはNBF(NetBIOS Frames)と呼ばれている。
      NIC → NetBEUI → NetBIOSインターフェイス → SMB(139/tcp,udp)

    • NetBIOSインターフェイスを利用するプロトコルのうち、TCP/IP上で動作するものはNBT(NetBIOS over TCP/IP)と呼ばれている。
      NIC → TCP/IP → NetBIOSインターフェイス → SMB(139/tcp,udp)

    • SMBには様々なバージョンがあり、機能や性能に差がある。
      SMB:WindowsNT?
      SMB1.0:WindowsXP、WindowsServer2003R2
      SMB2.0:WindowsVista、WindowsServer2008
      SMB2.1:Windows7、WindowsServer2008R2
      SMB3.0:Windows8、WindowsServer 2012
      SMB3.0.2:Windows8.1、WindowsServer 2012R2
      SMB3.1.1:Windows 10、Windows Server 2016

  • CIFS(Common Internet File System):

    • (WindowsNT時代の)SMBをWindows以外のプラットフォームでも利用できるように拡張したもの。

    • NetBIOSインターフェースに依存せずTCP/IPを利用するプロトコル。
      NIC → TCP/IP → CIFS(445/tcp)

  • ダイレクトホスティングSMB、SMB over TCP/IP(445/tcp)

    • Windows2000以降に実装されたプロトコルで、NBT(NetBIOS over TCP/IP)でNetBIOSインターフェースを介さずにTCP/IP→SMBという通信ができるようしたもの。

    • 同じ445/tcpを使うCIFSは(WindowsNT時代の)SMBをWindows以外のプラットフォームでも利用できるように拡張したものであり、ダイレクトホスティングSMBは含まれていない。
      後にCIFSを拡張したSMB1.0にはダイレクトホスティングSMBが含まれている。
      また、ダイアレクト(後述)はSMB1.0とCIFSはいずれもNT LM 0.12となっており区別されなくなっている。

  • ダイアレクト:
    SMB/CIFSプロトコルのバージョンを区別する情報

    • SMB = ?

    • SMB1.0/CIFS = NT LM 0.12

    • SMB2.0 = 2.0.2

    • SMB2.1 = 2.1.0

    • SMB3.0 = 3.0.0

    • SMB3.0.2 = 3.0.2

    • SMB3.1.1 = 3.1.1

(参考)
[MS-SMB2]: Server Message Block (SMB) Protocol Versions 2 and 3 | Microsoft Learn
[MS-SMB]: Server Message Block (SMB) Protocol | Microsoft Learn
[MS-CIFS]: Common Internet File System (CIFS) Protocol | Microsoft Learn
第20回 ファイル共有プロトコルSMB/CIFS(その1)
第21回 ファイル共有プロトコルSMB/CIFS(その2)
第22回 ファイル共有プロトコルSMB/CIFS(その3)
445/tcpポート(Direct Hosting of SMBに対するアクセスを抑止する
Server Message Block - Wikipedia


LinuxクライアントからリモートCIFS 共有にアクセスしマウントする

(準備1)
Sambaサーバー側で共有フォルダと確認用のテストファイルを用意する。

★ 共有フォルダの設定 ★
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# testparm -s
Load smb config files from /usr/local/samba/lib/smb.conf
Processing section "[homes]"
Processing section "[share1]"
Processing section "[share2]"
Loaded services file OK.
Server role: ROLE_STANDALONE
[global]
        dos charset = CP932
        workgroup = MYGROUP
        server string = Samba Server
        log file = /usr/local/samba/var/log.%m
        max log size = 50
        dns proxy = No
        idmap config * : backend = tdb
        create mask = 0644

[homes]
        comment = Home Directories
        read only = No
        browseable = No

[share1]
        comment = %L share directory
        path = /var/samba_share/share1
        read only = No
        guest ok = Yes

[share2]
        comment = %L share directory
        path = /var/samba_share/share2
        read only = No
        guest ok = Yes
[share3]
        comment = %L share directory
        path = /var/samba_share/share3
        read only = No
        guest ok = Yes
[root@rocky-samba35 ~]#

★ 動作確認用のテストファイルを用意 ★
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share1
合計 2
-rw-r--r-- 1 root root 14  94 22:28 share1-text00.txt
-rw-r--r-- 1 root root 14  94 22:28 share1-text01.txt
-rw-r--r-- 1 root root 14  94 22:28 share1-text02.txt
-rw-r--r-- 1 root root 14  94 22:28 share1-text03.txt
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share2
合計 2
-rw-r--r-- 1 root root 14  94 22:30 share2-text00.txt
-rw-r--r-- 1 root root 14  94 22:30 share2-text01.txt
-rw-r--r-- 1 root root 14  94 22:30 share2-text02.txt
-rw-r--r-- 1 root root 14  94 22:30 share2-text03.txt
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share3
合計 2
-rw-r--r-- 1 root root 14  94 22:26 share3-text00.txt
-rw-r--r-- 1 root root 14  94 22:26 share3-text01.txt
-rw-r--r-- 1 root root 14  94 22:26 share3-text02.txt
-rw-r--r-- 1 root root 14  94 22:26 share3-text03.txt
[root@rocky9-samba35 ~]#

★ サーバー側でユーザーごとにフィルを作る(実行例はuser00のみ) ★
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# su - user00
[user00@rocky9-samba35 ~]$
[user00@rocky9-samba35 ~]$ base64 /dev/urandom | head -c 512 > user00-home-text0
0.txt
[user00@rocky9-samba35 ~]$
[user00@rocky9-samba35 ~]$ ls -l
合計 1
-rw-r--r-- 1 user00 user00 512  91 22:11 user00-home-text00.txt
[user00@rocky9-samba35 ~]$
[user00@rocky9-samba35 ~]$ cat user00-home-text00.txt
DqKlhSn4WAH3w0OxUXueNW+WonAjfELEP06oKDdMWacaZSn/6GVDdJpC30a+5shjSt9U9XxsXK6w
ynIpYxN3h1ouRc7Fh5DFZbK/qqtr3kRmR+G1qWcty3dsZoitJ8Or7SwmrkGE2houAlBgkgKbpENg
agtioIX3rzUD8R8+Tbe1RChQufs4pZ15XuePvBFZ6pkKXGX1K8ySPxtqpHcmvSMFxGMmg+fKXFn9
8hFl9qBdXxGEKJfiUUT5flmAGwQrCbDji2rAJ1n9SvK/QNG0/n1HZAzIskdQV2GIGmKIxGRndcb7
JkjcBYg/iOH8ZwXAzz4GQzrgfJdNn8fYSuBrxEWB2p/nn4jFYrqcBIduzQfHxusCA6rVemZYfyCk
JHwauC3gfawGCADWNZ+UKTiQdARYphRuamDiANEa4AKzDYhanoS/7R4XbAqZUqeerUxTPu9t1RcD
qefc75aXD/i5fK9wA3huXt8yPa6myRkNg3+qOr+Yudy7fdPJXZ[user00@rocky9-samba35 ~]$
[user00@rocky9-samba35 ~]$

(準備2)
SambaサーバーがSamba3の場合は、Sambaクライアント側でclient min protocol = NT1の設定を追加する。

[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# rpm -qa | grep samba-client
samba-client-libs-4.17.5-103.el9_2.x86_64
samba-client-4.17.5-103.el9_2.x86_64
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# vi /etc/samba/smb.conf
 :
[global]
       :
        client min protocol = NT1
        :
[root@rocky9-client1 ~]#

(準備3)
LXDコンテナでクライアント操作を確認する場合は設定変更が必要。

ubuntu@linuc300:~$
ubuntu@linuc300:~$ lxc config set rocky9-client1 security.privileged true
ubuntu@linuc300:~$ lxc restart rocky9-client1
ubuntu@linuc300:~$

~smbclient コマンド~

  • smbclient 共有フォルダ 引数・・・
    -U | --user=[DOMAIN/]USERNAME[%PASSWORD]:
    接続するユーザーを指定する
    -L | --list=HOST:
    接続するサーバーを指定する
    -c | --command:
    実行するコマンドを指定する

[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ smbclient //192.168.56.35/share1 --user=user00%password00 -c "ls"
  .                                   D        0  Tue Aug 15 22:44:25 2023
  ..                                  D        0  Tue Aug 15 22:27:14 2023
  share1-text02.txt                   N       14  Tue Aug 15 22:45:00 2023
  share1-text03.txt                   N       14  Tue Aug 15 22:45:06 2023
  share1-text00.txt                   N       14  Tue Aug 15 22:44:50 2023
  share1-text01.txt                   N       14  Tue Aug 15 22:44:56 2023

                43020160 blocks of size 1024. 41987968 blocks available
[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ smbclient //192.168.56.35/share2 --user=user00%password00 -c "ls"
  .                                   D        0  Tue Aug 15 22:45:43 2023
  ..                                  D        0  Tue Aug 15 22:27:14 2023
  share2-text03.txt                   N       14  Tue Aug 15 22:45:43 2023
  share2-text02.txt                   N       14  Tue Aug 15 22:45:36 2023
  share2-text01.txt                   N       14  Tue Aug 15 22:45:31 2023
  share2-text00.txt                   N       14  Tue Aug 15 22:45:23 2023

                43020160 blocks of size 1024. 41987968 blocks available
[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ smbclient //192.168.56.35/share1 --user=user00%password00
Try "help" to get a list of possible commands.
smb: \>
smb: \> ls
  .                                   D        0  Tue Aug 15 22:44:25 2023
  ..                                  D        0  Tue Aug 15 22:27:14 2023
  share1-text02.txt                   N       14  Tue Aug 15 22:45:00 2023
  share1-text03.txt                   N       14  Tue Aug 15 22:45:06 2023
  share1-text00.txt                   N       14  Tue Aug 15 22:44:50 2023
  share1-text01.txt                   N       14  Tue Aug 15 22:44:56 2023

                43020032 blocks of size 1024. 41987968 blocks available
smb: \>
smb: \> exit
[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ smbclient //192.168.56.35/share2 --user=user00%password00
Try "help" to get a list of possible commands.
smb: \>
smb: \> ls
  .                                   D        0  Tue Aug 15 22:45:43 2023
  ..                                  D        0  Tue Aug 15 22:27:14 2023
  share2-text03.txt                   N       14  Tue Aug 15 22:45:43 2023
  share2-text02.txt                   N       14  Tue Aug 15 22:45:36 2023
  share2-text01.txt                   N       14  Tue Aug 15 22:45:31 2023
  share2-text00.txt                   N       14  Tue Aug 15 22:45:23 2023

                43020032 blocks of size 1024. 41987968 blocks available
smb: \>
smb: \> exit
[user00@rocky9-client1 ~]$

~mountコマンド~

  • mount -t cifs -o オプション 共有フォルダ マウントポイント
    -t:
    マウントするファイルシステムを指定する。
    SMBの共有フォルダの場合は "cifs" となる。
    -o:
    オプションをカンマ区切りで指定する
    username | user = 接続するユーザ名
    password | pass = 接続するユーザのパスワード
    domain | dom | workgroup = ドメイン名またはワークグループ名
    vers = SMBバージョン(*)
    (*)Sambaサーバーのmax protocolの設定値に合わせる
    max protocol = NT1 → vers=1.0
    max protocol = SMB2 → vers=2.0
    max protocol = SMB2_10 → vers=2.1
    max protocol = SMB3_00 → vers=3.0 or 3
    max protocol = SMB3_02 → vers=3.02 or 3
    max protocol = SMB3_11 → vers=3.1.1 or 3.11 or 3

★ マウントポイントを準備する ★
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mkdir /mnt/samba-share1
[root@rocky9-client1 ~]# mkdir /mnt/samba-share2
[root@rocy9-client1 ~]#

★ マウントする ★
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount -t cifs -o username=user00,password=password00,vers=1.0 //192.168.56.35/share1 /mnt/samba-share1
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
default/containers/rocky9-client1    41G  570M   41G    2% /
none                                492K  4.0K  488K    1% /dev
udev                                1.9G     0  1.9G    0% /dev/fuse
tmpfs                               100K     0  100K    0% /dev/lxd
tmpfs                               100K     0  100K    0% /dev/.lxd-mounts
tmpfs                               2.0G     0  2.0G    0% /dev/shm
tmpfs                               783M  8.1M  775M    2% /run
tmpfs                               4.0M     0  4.0M    0% /sys/fs/cgroup
//192.168.56.35/share1               42G  932M   41G    3% /mnt/samba-share1
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount | grep samba
//192.168.56.35/share1 on /mnt/samba-share1 type cifs (rw,relatime,vers=1.0,cache=strict,username=user00,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1)
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# ls -l /mnt/samba-share1
合計 4096
-rw-r--r-- 1 root root 14  815 22:44 share1-text00.txt
-rw-r--r-- 1 root root 14  815 22:44 share1-text01.txt
-rw-r--r-- 1 root root 14  815 22:45 share1-text02.txt
-rw-r--r-- 1 root root 14  815 22:45 share1-text03.txt
[root@rocky9-client1 ~]#

~fstabを用いたマウント~
基本的にはmountコマンドの内容を/etc/fstabに記述することで、mount -aコマンドだけでマウントできたり、Linuxシステムが起動する際に自動的にマウントすることができる。

★ マウント前 ★
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
default/containers/rocky9-client1    41G  570M   41G    2% /
none                                492K  4.0K  488K    1% /dev
udev                                1.9G     0  1.9G    0% /dev/fuse
tmpfs                               100K     0  100K    0% /dev/lxd
tmpfs                               100K     0  100K    0% /dev/.lxd-mounts
tmpfs                               2.0G     0  2.0G    0% /dev/shm
tmpfs                               783M  8.1M  775M    2% /run
tmpfs                               4.0M     0  4.0M    0% /sys/fs/cgroup
[root@rocky9-client1 ~]# 

★ /etc/fstabに記述してマウントする ★
[root@rocky9-client1 ~]# 
[root@rocky9-client1 ~]# cat /etc/fstab
# cifs mount
//192.168.56.35/user01 /mnt/samba-homes cifs username=user01,password=password01,vers=1.0,defaults 0 0

[root@rocky9-client1 ~]#

★ マウント後 ★
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount -a
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
default/containers/rocky9-client1    41G  570M   41G    2% /
none                                492K  4.0K  488K    1% /dev
udev                                1.9G     0  1.9G    0% /dev/fuse
tmpfs                               100K     0  100K    0% /dev/lxd
tmpfs                               100K     0  100K    0% /dev/.lxd-mounts
tmpfs                               2.0G     0  2.0G    0% /dev/shm
tmpfs                               783M  8.1M  775M    2% /run
tmpfs                               4.0M     0  4.0M    0% /sys/fs/cgroup
//192.168.56.35/user01               42G  932M   41G    3% /mnt/samba-homes
[root@rocky9-client1 ~]#

~その他のコマンド~

  • smbtree
    共有リソースをブラウジングをするコマンド。

[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ smbtree --user=user00%password00
MYGROUP
        \\ROCKY9-SAMBA35                Samba Server
                \\ROCKY9-SAMBA35\share1                 rocky9-samba35 share directory
                \\ROCKY9-SAMBA35\share2                 rocky9-samba35 share directory
                \\ROCKY9-SAMBA35\IPC$                   IPC Service (Samba Server)
                \\ROCKY9-SAMBA35\user00                 Home Directories
WORKGROUP
smbc_opendir: 成功です
[user00@rocky9-client1 ~]$
  • smbget
    ファイルをダウンロードするwgetのようなコマンド。
    ダウンロードしたいファイルは smb://サーバー/パス/ファイル名 で指定する。

[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ ls -l
合計 0
[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ smbget -v smb://192.168.56.35/user00/user00-home-text00.txt --user=user00%password00
Using workgroup MYGROUP, user user00
smb://192.168.56.35/user00/user00-home-text00.txt
Downloaded 512b in 0 seconds
[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ ls -l
合計 1
-rwxr-xr-x 1 user00 user00 512  92 00:11 user00-home-text00.txt
[user00@rocky9-client1 ~]$
  • smbtar
    SMB/CIFSの共有ディレクトリからバックアップを取るためのコマンド。
    コマンドの実態はsmbclientコマンドを実行するシェルスクリプトになっている。

[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ ls -l
合計 0
[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ smbtar -v -s 192.168.56.35 -x share1 -u user00 -p password00 -t share1-ba
ckup.tar
server    is 192.168.56.35
share     is share1\\
tar args  is v
tape      is share1-backup.tar
blocksize is
tar:1730 DUMP:t->to_process        = 1
tar:1731 DUMP:t->mode.operation    = TAR_CREATE
tar:1732 DUMP:t->mode.selection    = TAR_INCLUDE
tar:1733 DUMP:t->mode.blocksize    = 20
tar:1734 DUMP:t->mode.hidden       = 1
tar:1735 DUMP:t->mode.system       = 1
tar:1736 DUMP:t->mode.incremental  = 0
tar:1737 DUMP:t->mode.reset        = 0
tar:1738 DUMP:t->mode.dry          = 0
tar:1739 DUMP:t->mode.verbose      = 1
tar:1740 DUMP:t->total_size        = 0
tar:1741 DUMP:t->tar_path          = share1-backup.tar
tar:1742 DUMP:t->path_list_size    = 0
tar:1748 DUMP:t->path_list @ (nil) (0 elem)
added interface eth1 ip=192.168.56.147 bcast=192.168.56.255 netmask=255.255.255.0
added interface eth0 ip=10.138.204.201 bcast=10.138.204.255 netmask=255.255.255.0
Cannot do GSE to an IP address
tarmode is now full, system, hidden, noreset, verbose
a \share1-text02.txt
a \share1-text03.txt
a \share1-text00.txt
a \share1-text01.txt
tar: dumped 4 files and 0 directories
Total bytes written: 56 (0.0 MiB/s)
[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ ls -l
合計 1
-rw-r--r-- 1 user00 user00 5120  92 00:16 share1-backup.tar
[user00@rocky9-client1 ~]$
[user00@rocky9-client1 ~]$ tar -tf share1-backup.tar
./share1-text02.txt
./share1-text03.txt
./share1-text00.txt
./share1-text01.txt
[user00@rocky9-client1 ~]$
  • findsmb
    サブネット内の共有サーバーを検索する。
    Smaba4には含まれていない。
    コマンドの実態はPerlクリプトで、Perlスクリプトからsmbclientやnmbclientコマンドを呼び出している。

★ perlをインストールする ★
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# dnf install -y perl
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# which perl
/usr/bin/perl
[root@rocky9-samba35 ~]#

★ findsmbを編集する ★
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# which findsmb
/usr/local/samba/bin/findsmb
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# vi /usr/local/samba/bin/findsmb
#!/usr/bin/perl   <--- 1行目にperlのパスを記述する
 :
 :
[root@rocky9-samba35 bin]#

★ findsmbを実行する ★
[root@rocky9-samba35 bin]#
[root@rocky9-samba35 bin]# findsmb

                                *=DMB
                                +=LMB
IP ADDR         NETBIOS NAME     WORKGROUP/OS/VERSION
---------------------------------------------------------------------
192.168.56.35   ROCKY9-SAMBA35+[MYGROUP] [Unix] [Samba 3.6.25]
[root@rocky9-samba35 ~]#
  • smbcquotas
    SMB ファイル共有に対して NT Quota の操作を行う。

[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]#

CIFS認証情報を安全に保存する

LinuxホストでSambaサーバーの共有フォルダをCIFSマウントをするにはユーザーとパスワードが必要になるが、コマンド操作において認証情報(username=****** やpassword=******)を入力することは避けたい。
そこで活用したいのがmountコマンドのオプションのcredentialsである。 このオプションは事前に用意した認証情報を記述したファイルを使って認証しマウントすることができるようになる。

~使用例~

  • mount -t cifs -o オプション 共有フォルダ マウントポイント
    -o:
    オプションをカンマ区切りで指定する
    credentials | cred = 認証情報を記述したファイル

★ 認証情報を記述したファイルを作成する ★
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# vi .samba-user01
username=user01
password=password01
domain=MYGROUP
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# chmod 600 .samba-user01
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# ls -la .samba-user01
-rw------- 1 root root 51  816 00:16 .samba-user01
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# readlink -f .samba-user01
/root/.samba-user01
[root@rocky9-client1 ~]#

★ 認証情報を記述したファイルを使ってマウントする ★
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount -t cifs -o credentials=/root/.samba-user01,vers=1.0 //192.168.56.35/share1 /mnt/samba-share1
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
default/containers/rocky9-client1    41G  570M   41G    2% /
none                                492K  4.0K  488K    1% /dev
udev                                1.9G     0  1.9G    0% /dev/fuse
tmpfs                               100K     0  100K    0% /dev/lxd
tmpfs                               100K     0  100K    0% /dev/.lxd-mounts
tmpfs                               2.0G     0  2.0G    0% /dev/shm
tmpfs                               783M  8.1M  775M    2% /run
tmpfs                               4.0M     0  4.0M    0% /sys/fs/cgroup
//192.168.56.35/share1               42G  932M   41G    3% /mnt/samba-share1
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount | grep samba
//192.168.56.35/share1 on /mnt/samba-share1 type cifs (rw,relatime,vers=1.0,cache=strict,username=user01,domain=MYGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1)
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# ls -l /mnt/samba-share1
合計 4096
-rw-r--r-- 1 root root 14  815 22:44 share1-text00.txt
-rw-r--r-- 1 root root 14  815 22:44 share1-text01.txt
-rw-r--r-- 1 root root 14  815 22:45 share1-text02.txt
-rw-r--r-- 1 root root 14  815 22:45 share1-text03.txt
[root@rocky9-client1 ~]#

~fstabを用いたマウント~
credentialsオプションを使うことで、/etc/fstabに認証情報を直接記述せずにマウントすることができる。

★ マウント前 ★
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
default/containers/rocky9-client1    41G  570M   41G    2% /
none                                492K  4.0K  488K    1% /dev
udev                                1.9G     0  1.9G    0% /dev/fuse
tmpfs                               100K     0  100K    0% /dev/lxd
tmpfs                               100K     0  100K    0% /dev/.lxd-mounts
tmpfs                               2.0G     0  2.0G    0% /dev/shm
tmpfs                               783M  8.1M  775M    2% /run
tmpfs                               4.0M     0  4.0M    0% /sys/fs/cgroup
[root@rocky9-client1 ~]#

★ 認証情報を記述したファイルを使ってマウントする ★
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# cat /etc/fstab
# cifs mount
//192.168.56.35/user01 /mnt/samba-homes cifs credentials=/root/.samba-user01,vers=1.0,defaults 0 0

[root@rocky9-client1 ~]#

★ マウント後 ★
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount -a
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
default/containers/rocky9-client1    41G  570M   41G    2% /
none                                492K  4.0K  488K    1% /dev
udev                                1.9G     0  1.9G    0% /dev/fuse
tmpfs                               100K     0  100K    0% /dev/lxd
tmpfs                               100K     0  100K    0% /dev/.lxd-mounts
tmpfs                               2.0G     0  2.0G    0% /dev/shm
tmpfs                               783M  8.1M  775M    2% /run
tmpfs                               4.0M     0  4.0M    0% /sys/fs/cgroup
//192.168.56.35/user01               42G  932M   41G    3% /mnt/samba-homes
[root@rocky9-client1 ~]#

CIFSの機能と利点を理解する

~CIFSの主な機能~
[MS-CIFS]: Overview | Microsoft Learn より

  • 輸送の独立性
    CIFS プロトコル自体は、 クライアントとサーバーの間でSMBメッセージを渡すために使用されるトランスポート プロトコルにいかなる要件も課しません。CIFS は通常、コネクション型プロトコルで伝送されますが、コネクションレス型プロトコルも CIFS トランスポートとして使用されています。

  • 柔軟な接続性
    1 つのクライアントは複数のサーバーに接続でき、各サーバーに対して 1 つ以上の接続を確立できます。複数のクライアント プロセスのアクティビティを 1 つの接続上で多重化できます。

  • 機能ネゴシエーション
    プロトコルの方言とサポートされる機能セットは、接続ごとにネゴシエートされます。

  • リソースへのアクセス
    クライアントは、ターゲット サーバー上の複数の共有リソース (ファイル、名前付きパイプ、印刷キュー) に同時にアクセスできます。

  • セキュリティコンテキスト
    クライアントは、接続を介して 1 つ以上のセキュリティ コンテキストを作成して使用できます。

  • ファイルアクセス
    クライアントは、ターゲット サーバー上の複数のファイルを開いて、読み取り、書き込み、変更、削除、および閉じることができます。ファイル共有はサーバーによって管理されるため、複数のクライアントが同じファイルを同時に開くことができます。

  • 拡張サブプロトコル
    CIFS は、追加のサーバー機能への直接アクセスを提供する一連のサブプロトコルをサポートしています。

  • 名前付きパイプのプロセス間通信
    クライアントは、ターゲット サーバー上の名前付きパイプを開いたり、読み取り、書き込み、閉じたりできます。名前付きパイプは、クライアント プロセスとサーバー プロセス間の通信パスを提供します。

  • ファイルとレコードのロック、および安全なキャッシュ
    CIFS は、ファイルとレコードのロックに加えて、クライアントがデータをキャッシュしてパフォーマンスを向上できるようにするファイルの日和見ロックもサポートしています。

  • ファイル、ディレクトリ、およびボリュームの属性。
    CIFS は、拡張属性を含むファイル、ディレクトリ、およびボリュームの属性をクエリおよび (制限付きで) 設定する機能を提供します。CIFS は、アクセス コントロール リスト (ACL)の使用のサポートも提供します。

  • ファイルとディレクトリの変更通知
    CIFS クライアントは、サーバー上のディレクトリまたはディレクトリ ツリー内のファイルに変更が加えられたときに通知を受け取るリクエストを送信できます。

  • バッチ化されたコマンド
    CIFS AndX メッセージはチェーンしてサーバー上で順番に実行できるため、複数のメッセージの往復が回避されます。

  • 分散ファイル システム (DFS) のサポート
    DFS名前空間がサポートされています。DFS は、さまざまなサーバーと共有のコレクションにまたがることができる、単一の一貫したオブジェクト命名スキーム (統一された名前空間) を提供します。採用されている DFS モデルは、 [MS-DFSC]で指定されている紹介ベースのモデルです。CIFS は、クライアントとサーバーが紹介を受信して処理する方法を指定します。

  • リモート プロシージャ コール トランスポート
    CIFS は、RPC [MS-RPCE] や RAP [MS-RAP]などのリモート プロシージャ コール プロトコルに認証されたトランスポートを提供します。

  • メッセージの検証
    [KB887429]で説明されているように、CIFS はメッセージ署名をサポートしています。これは、メッセージが転送中に変更されていないことを保証するために使用されます。

  • Unicode ファイル名のサポート
    CIFS は、拡張 ASCII (OEM) 文字セットと Unicode ファイル名の両方をサポートします。CIFS は、8.3 名前 形式のファイル名、拡張 ASCII 文字セット (8 ビット文字) を使用した長いファイル名、およびUnicodeの長いファイル名をサポートしています。

~CIFSの利点~

・・・ 調査中 ・・・


リモートCIFS 共有のファイル所有権および許可について理解する

Sambaサーバーの共有ディレクトリをリモートマシンにマウントすることができる。
マウントする際にドメイン名、ユーザー名、パスワードを指定する。
noprepオプションあり/なし、sec=noneオプションあり/なしで挙動が変わる。

~noprepオプションなし~
マウント時に指定したユーザーとファイル操作するユーザーが一致しているときだけマウント時に指定したユーザーとして書き込みができる。

(準備)
Sambaサーバー(rocky9-samba35)では以下のような環境になっている。

[root@rocky9-samba35 ~]# 
[root@rocky9-samba35 ~]# testparm -s
  :
  :
[share1]
        comment = %L share directory
        path = /var/samba_share/share1
        read only = No
        guest ok = Yes

[share2]
        comment = %L share directory
        path = /var/samba_share/share2
        read only = No
        guest ok = Yes

[share3]
        comment = %L share directory
        path = /var/samba_share/sharer3
        read only = No
        guest ok = Yes
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -ld /var/samba_share/
drwxr-xr-x 5 root root 5  94 22:25 /var/samba_share/
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/
合計 2
drwxrwxrwt 2 nobody nobody 6  94 22:47 share1
drwxrwxrwt 2 nobody nobody 6  94 22:47 share2
drwxrwxrwt 2 nobody nobody 6  94 22:26 share3
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share1
合計 2
-rw-r--r-- 1 root root 14  94 22:28 share1-text00.txt
-rw-r--r-- 1 root root 14  94 22:28 share1-text01.txt
-rw-r--r-- 1 root root 14  94 22:28 share1-text02.txt
-rw-r--r-- 1 root root 14  94 22:28 share1-text03.txt
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share2
合計 2
-rw-r--r-- 1 root root 14  94 22:30 share2-text00.txt
-rw-r--r-- 1 root root 14  94 22:30 share2-text01.txt
-rw-r--r-- 1 root root 14  94 22:30 share2-text02.txt
-rw-r--r-- 1 root root 14  94 22:30 share2-text03.txt
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share3
合計 2
-rw-r--r-- 1 root root 14  94 22:26 share3-text00.txt
-rw-r--r-- 1 root root 14  94 22:26 share3-text01.txt
-rw-r--r-- 1 root root 14  94 22:26 share3-text02.txt
-rw-r--r-- 1 root root 14  94 22:26 share3-text03.txt
[root@rocky9-samba35 ~]#

192.168.56.35(rocky9-samba35)というSambaサーバーの共有ディレクトリをLinuxクライアントでマウントする。
・//192.168.56.35/share1 → /mnt/samba-share1 ・・・user01でマウント
・//192.168.56.35/share2 → /mnt/samba-share2 ・・・user02でマウント
・//192.168.56.35/share3 → /mnt/samba-share3 ・・・user03でマウント

[root@rocky9-client1 ~]# 
[root@rocky9-client1 ~]# mount -t cifs -o domain=MYGROUP,username=user01,password=password01,vers=1.0 //192.168.56.35/share1 /mnt/samba-share1
[root@rocky9-client1 ~]# mount -t cifs -o domain=MYGROUP,username=user02,password=password02,vers=1.0 //192.168.56.35/share2 /mnt/samba-share2
[root@rocky9-client1 ~]# mount -t cifs -o domain=MYGROUP,username=user03,password=password03,vers=1.0 //192.168.56.35/share3 /mnt/samba-share3
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount | grep share
//192.168.56.35/share1 on /mnt/samba-share1 type cifs (rw,relatime,vers=1.0,cache=strict,username=user01,domain=MYGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
//192.168.56.35/share2 on /mnt/samba-share2 type cifs (rw,relatime,vers=1.0,cache=strict,username=user02,domain=MYGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
//192.168.56.35/share3 on /mnt/samba-share3 type cifs (rw,relatime,vers=1.0,cache=strict,username=user03,domain=MYGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
default/containers/rocky9-client1    41G  573M   41G    2% /
none                                492K  4.0K  488K    1% /dev
udev                                1.9G     0  1.9G    0% /dev/fuse
tmpfs                               100K     0  100K    0% /dev/lxd
tmpfs                               100K     0  100K    0% /dev/.lxd-mounts
tmpfs                               2.0G     0  2.0G    0% /dev/shm
tmpfs                               783M  8.1M  775M    2% /run
tmpfs                               4.0M     0  4.0M    0% /sys/fs/cgroup
//192.168.56.35/share1               42G 1008M   41G    3% /mnt/samba-share1
//192.168.56.35/share2               42G 1008M   41G    3% /mnt/samba-share2
//192.168.56.35/share3               42G 1008M   41G    3% /mnt/samba-share3
[root@rocky9-client1 ~]#

ファイルを作成する。

★ user01 でログインしたLinuxクライアント ★
[user01@rocky9-client1 ~]$
[user01@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share1/user01-test.txt
[user01@rocky9-client1 ~]$
[user01@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share2/user01-test.txt
-bash: /mnt/samba-share2/user01-test.txt: 許可がありません
[user01@rocky9-client1 ~]$
[user01@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share3/user01-test.txt
-bash: /mnt/samba-share3/user01-test.txt: 許可がありません
[user01@rocky9-client1 ~]$

★ user02 でログインしたLinuxクライアント ★
[user02@rocky9-client1 ~]$
[user02@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share1/user02-test.txt
-bash: /mnt/samba-share1/user02-test.txt: 許可がありません
[user02@rocky9-client1 ~]$
[user02@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share2/user02-test.txt
[user02@rocky9-client1 ~]$
[user02@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share3/user02-test.txt
-bash: /mnt/samba-share3/user02-test.txt: 許可がありません
[user02@rocky9-client1 ~]$
  • /mnt/samba-share1はuser01でマウントしている場合:
    user01:ファイル作成 ◯ / 書き込み ◯ / ユーザー user01
    user02:ファイル作成 ◯ / 書き込み ✕ / ユーザー user01

  • /mnt/samba-share2はuser02でマウントしている場合:
    user01:ファイル作成 ◯ / 書き込み ✕ / ユーザー user02
    user02:ファイル作成 ◯ / 書き込み ◯ / ユーザー user02

  • /mnt/samba-share3はuser03でマウントしている場合:
    user01:ファイル作成 ◯ / 書き込み ✕ / ユーザー user03
    user02:ファイル作成 ◯ / 書き込み ✕ / ユーザー user03

マウント時に指定したユーザーとファイル操作するユーザーが一致しているときだけマウント時に指定したユーザーとして書き込みができる。

★ Sambaサーバー側の状態 ★
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share1
合計 4
-rw-r--r-- 1 root   root    14  94 22:28 share1-text00.txt
-rw-r--r-- 1 root   root    14  94 22:28 share1-text01.txt
-rw-r--r-- 1 root   root    14  94 22:28 share1-text02.txt
-rw-r--r-- 1 root   root    14  94 22:28 share1-text03.txt
-rw-r--r-- 1 user01 user01 512  94 22:50 user01-test.txt <--- ★ user01が作成したファイル
-rw-r--r-- 1 user01 user01   0  94 22:51 user02-test.txt <--- ★ user02が作成したファイル
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share2
合計 4
-rw-r--r-- 1 root   root    14  94 22:30 share2-text00.txt
-rw-r--r-- 1 root   root    14  94 22:30 share2-text01.txt
-rw-r--r-- 1 root   root    14  94 22:30 share2-text02.txt
-rw-r--r-- 1 root   root    14  94 22:30 share2-text03.txt
-rw-r--r-- 1 user02 user02   0  94 22:50 user01-test.txt <--- ★ user01が作成したファイル
-rw-r--r-- 1 user02 user02 512  94 22:51 user02-test.txt <--- ★ user02が作成したファイル
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share3
合計 3
-rw-r--r-- 1 root   root   14  94 22:26 share3-text00.txt
-rw-r--r-- 1 root   root   14  94 22:26 share3-text01.txt
-rw-r--r-- 1 root   root   14  94 22:26 share3-text02.txt
-rw-r--r-- 1 root   root   14  94 22:26 share3-text03.txt
-rw-r--r-- 1 user03 user03  0  94 22:50 user01-test.txt <--- ★ user01が作成したファイル
-rw-r--r-- 1 user03 user03  0  94 22:51 user02-test.txt <--- ★ user02が作成したファイル
[root@rocky9-samba35 ~]#

~nopermオプションあり~
マウント時に指定したユーザーとファイル操作するユーザーが異なっていてもマウント時に指定したユーザーとして書き込みができる。

192.168.56.35(rocky9-samba35)というSambaサーバーの共有ディレクトリをLinuxクライアントでnopermオプション付きでマウントする。
・//192.168.56.35/share1 → /mnt/samba-share1 ・・・user01でマウント
・//192.168.56.35/share2 → /mnt/samba-share2 ・・・user02でマウント
・//192.168.56.35/share3 → /mnt/samba-share3 ・・・user03でマウント

[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount -t cifs -o domain=MYGROUP,username=user01,password=password01,vers=1.0,noperm //192.168.56.35/share1 /mnt/samba-share1
[root@rocky9-client1 ~]# mount -t cifs -o domain=MYGROUP,username=user02,password=password02,vers=1.0,noperm //192.168.56.35/share2 /mnt/samba-share2
[root@rocky9-client1 ~]# mount -t cifs -o domain=MYGROUP,username=user03,password=password03,vers=1.0,noperm //192.168.56.35/share3 /mnt/samba-share3
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# df -h | grep share
ファイルシス                      サイズ  使用  残り 使用% マウント位置
default/containers/rocky9-client1    41G  573M   41G    2% /
none                                492K  4.0K  488K    1% /dev
udev                                1.9G     0  1.9G    0% /dev/fuse
tmpfs                               100K     0  100K    0% /dev/lxd
tmpfs                               100K     0  100K    0% /dev/.lxd-mounts
tmpfs                               2.0G     0  2.0G    0% /dev/shm
tmpfs                               783M  8.2M  775M    2% /run
tmpfs                               4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                               392M     0  392M    0% /run/user/1001
tmpfs                               392M     0  392M    0% /run/user/1002
//192.168.56.35/share1               42G 1008M   41G    3% /mnt/samba-share1
//192.168.56.35/share2               42G 1008M   41G    3% /mnt/samba-share2
//192.168.56.35/share3               42G 1008M   41G    3% /mnt/samba-share3
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount | grep share
//192.168.56.35/share1 on /mnt/samba-share1 type cifs (rw,relatime,vers=1.0,cache=strict,username=user01,domain=MYGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,noperm,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
//192.168.56.35/share2 on /mnt/samba-share2 type cifs (rw,relatime,vers=1.0,cache=strict,username=user02,domain=MYGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,noperm,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
//192.168.56.35/share3 on /mnt/samba-share3 type cifs (rw,relatime,vers=1.0,cache=strict,username=user03,domain=MYGROUP,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,noperm,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
[root@rocky9-client1 ~]#

ファイルを作成する。

★ user01 でログインしたLinuxクライアント ★
[user01@rocky9-client1 ~]$
[user01@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share1/user01-test-noperm.txt
[user01@rocky9-client1 ~]$
[user01@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share2/user01-test-noperm.txt
[user01@rocky9-client1 ~]$
[user01@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share3/user01-test-noperm.txt
[user01@rocky9-client1 ~]$

★ user02 でログインしたLinuxクライアント ★
[user02@rocky9-client1 ~]$
[user02@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share1/user02-test-noperm.txt
[user02@rocky9-client1 ~]$
[user02@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share2/user02-test-noperm.txt
[user02@rocky9-client1 ~]$
[user02@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share3/user02-test-noperm.txt
[user02@rocky9-client1 ~]$
  • /mnt/samba-share1はuser01でマウントしている場合:
    user01:ファイル作成 ◯ / 書き込み ◯ / ユーザー user01
    user02:ファイル作成 ◯ / 書き込み ◯ / ユーザー user01

  • /mnt/samba-share2はuser02でマウントしている場合:
    user01:ファイル作成 ◯ / 書き込み ◯ / ユーザー user02
    user02:ファイル作成 ◯ / 書き込み ◯ / ユーザー user02

  • /mnt/samba-share3はuser03でマウントしている場合:
    user01:ファイル作成 ◯ / 書き込み ◯ / ユーザー user03
    user02:ファイル作成 ◯ / 書き込み ◯ / ユーザー user03

マウント時に指定したユーザーとファイル操作するユーザーが異なっていてもマウント時に指定したユーザーとして書き込みができる。

[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share1
合計 6
-rw-r--r-- 1 root   root    14  94 22:28 share1-text00.txt
-rw-r--r-- 1 root   root    14  94 22:28 share1-text01.txt
-rw-r--r-- 1 root   root    14  94 22:28 share1-text02.txt
-rw-r--r-- 1 root   root    14  94 22:28 share1-text03.txt
-rw-r--r-- 1 user01 user01 512  94 23:06 user01-test-noperm.txt <--- ★ user01が作成したファイル
-rw-r--r-- 1 user01 user01 512  94 22:50 user01-test.txt
-rw-r--r-- 1 user01 user01 512  94 23:07 user02-test-noperm.txt <--- ★ user02が作成したファイル
-rw-r--r-- 1 user01 user01   0  94 22:51 user02-test.txt
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share2
合計 6
-rw-r--r-- 1 root   root    14  94 22:30 share2-text00.txt
-rw-r--r-- 1 root   root    14  94 22:30 share2-text01.txt
-rw-r--r-- 1 root   root    14  94 22:30 share2-text02.txt
-rw-r--r-- 1 root   root    14  94 22:30 share2-text03.txt
-rw-r--r-- 1 user02 user02 512  94 23:06 user01-test-noperm.txt <--- ★ user01が作成したファイル
-rw-r--r-- 1 user02 user02   0  94 22:50 user01-test.txt
-rw-r--r-- 1 user02 user02 512  94 23:07 user02-test-noperm.txt <--- ★ user02が作成したファイル
-rw-r--r-- 1 user02 user02 512  94 22:51 user02-test.txt
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share3
合計 5
-rw-r--r-- 1 root   root    14  94 22:26 share3-text00.txt
-rw-r--r-- 1 root   root    14  94 22:26 share3-text01.txt
-rw-r--r-- 1 root   root    14  94 22:26 share3-text02.txt
-rw-r--r-- 1 root   root    14  94 22:26 share3-text03.txt
-rw-r--r-- 1 user03 user03 512  94 23:06 user01-test-noperm.txt <--- ★ user01が作成したファイル
-rw-r--r-- 1 user03 user03   0  94 22:50 user01-test.txt
-rw-r--r-- 1 user03 user03 512  94 23:07 user02-test-noperm.txt <--- ★ user02が作成したファイル
-rw-r--r-- 1 user03 user03   0  94 22:51 user02-test.txt
[root@rocky9-samba35 ~]#

~sec=noneオプションあり~
マウント時にsec=noneとしユーザーを指定しない場合はファイル操作するユーザーに関係なくsmb.confのguest accountで指定したユーザー(既定値nobody)として書き込みができる。

192.168.56.35(rocky9-samba35)というSambaサーバーの共有ディレクトリをLinuxクライアントでユーザー名を指定せずにsec=noneとしてマウントする。
・//192.168.56.35/share1 → /mnt/samba-share1 ・・・sec=none
・//192.168.56.35/share2 → /mnt/samba-share2 ・・・sec=none
・//192.168.56.35/share3 → /mnt/samba-share3 ・・・sec=none

[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount -t cifs -o sec=none,vers=1.0,noperm //192.168.56.35/share1 /mnt/samba-share1
[root@rocky9-client1 ~]# mount -t cifs -o sec=none,vers=1.0,noperm //192.168.56.35/share2 /mnt/samba-share2
[root@rocky9-client1 ~]# mount -t cifs -o sec=none,vers=1.0,noperm //192.168.56.35/share3 /mnt/samba-share3
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# df -h
ファイルシス                      サイズ  使用  残り 使用% マウント位置
default/containers/rocky9-client1    41G  573M   41G    2% /
none                                492K  4.0K  488K    1% /dev
udev                                1.9G     0  1.9G    0% /dev/fuse
tmpfs                               100K     0  100K    0% /dev/lxd
tmpfs                               100K     0  100K    0% /dev/.lxd-mounts
tmpfs                               2.0G     0  2.0G    0% /dev/shm
tmpfs                               783M   15M  768M    2% /run
tmpfs                               4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                               392M     0  392M    0% /run/user/1001
tmpfs                               392M     0  392M    0% /run/user/1002
//192.168.56.35/share1               42G 1008M   41G    3% /mnt/samba-share1
//192.168.56.35/share2               42G 1008M   41G    3% /mnt/samba-share2
//192.168.56.35/share3               42G 1008M   41G    3% /mnt/samba-share3
[root@rocky9-client1 ~]#
[root@rocky9-client1 ~]# mount | grep share
//192.168.56.35/share1 on /mnt/samba-share1 type cifs (rw,relatime,vers=1.0,sec=none,cache=strict,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,noperm,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
//192.168.56.35/share2 on /mnt/samba-share2 type cifs (rw,relatime,vers=1.0,sec=none,cache=strict,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,noperm,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
//192.168.56.35/share3 on /mnt/samba-share3 type cifs (rw,relatime,vers=1.0,sec=none,cache=strict,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.56.35,soft,unix,posixpaths,serverino,mapposix,acl,noperm,rsize=1048576,wsize=65536,bsize=1048576,echo_interval=60,actimeo=1,closetimeo=1)
[root@rocky9-client1 ~]#

ファイルを作成する。

★ user01 でログインしたLinuxクライアント ★
[user01@rocky9-client1 ~]$
[user01@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share1/user01-test-sec_none.txt
[user01@rocky9-client1 ~]$
[user01@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share2/user01-test-sec_none.txt
[user01@rocky9-client1 ~]$
[user01@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share3/user01-test-sec_none.txt
[user01@rocky9-client1 ~]$

★ user02 でログインしたLinuxクライアント ★
[user02@rocky9-client1 ~]$
[user02@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share1/user02-test-sec_none.txt
[user02@rocky9-client1 ~]$
[user02@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share2/user02-test-sec_none.txt
[user02@rocky9-client1 ~]$
[user02@rocky9-client1 ~]$ base64 /dev/urandom | head -c 512 > /mnt/samba-share3/user02-test-sec_none.txt
[user02@rocky9-client1 ~]$
  • /mnt/samba-share1はsec=noneでマウントしている場合:
    user01:ファイル作成 ◯ / 書き込み ◯ / ユーザー nobody
    user02:ファイル作成 ◯ / 書き込み ◯ / ユーザー nobody

  • /mnt/samba-share2はsec=noneでマウントしている場合:
    user01:ファイル作成 ◯ / 書き込み ◯ / ユーザー nobody
    user02:ファイル作成 ◯ / 書き込み ◯ / ユーザー nobody

  • /mnt/samba-share3はsec=noneでマウントしている場合:
    user01:ファイル作成 ◯ / 書き込み ◯ / ユーザー nobody
    user02:ファイル作成 ◯ / 書き込み ◯ / ユーザー nobody

マウント時にsec=noneとしユーザーを指定しない場合はファイル操作するユーザーに関係なくsmb.confのguest accountで指定したユーザー(既定値nobody)として書き込みができる。

[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share1
合計 8
-rw-r--r-- 1 root   root    14  94 22:28 share1-text00.txt
-rw-r--r-- 1 root   root    14  94 22:28 share1-text01.txt
-rw-r--r-- 1 root   root    14  94 22:28 share1-text02.txt
-rw-r--r-- 1 root   root    14  94 22:28 share1-text03.txt
-rw-r--r-- 1 user01 user01 512  94 23:06 user01-test-noperm.txt
-rw-r--r-- 1 nobody nobody 512  94 23:49 user01-test-sec_none.txt <--- ★ user01が作成したファイル
-rw-r--r-- 1 user01 user01 512  94 22:50 user01-test.txt
-rw-r--r-- 1 user01 user01 512  94 23:07 user02-test-noperm.txt
-rw-r--r-- 1 nobody nobody 512  94 23:51 user02-test-sec_none.txt <--- ★ user02が作成したファイル
-rw-r--r-- 1 user01 user01   0  94 22:51 user02-test.txt
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share2
合計 8
-rw-r--r-- 1 root   root    14  94 22:30 share2-text00.txt
-rw-r--r-- 1 root   root    14  94 22:30 share2-text01.txt
-rw-r--r-- 1 root   root    14  94 22:30 share2-text02.txt
-rw-r--r-- 1 root   root    14  94 22:30 share2-text03.txt
-rw-r--r-- 1 user02 user02 512  94 23:06 user01-test-noperm.txt
-rw-r--r-- 1 nobody nobody 512  94 23:49 user01-test-sec_none.txt <--- ★ user01が作成したファイル
-rw-r--r-- 1 user02 user02   0  94 22:50 user01-test.txt
-rw-r--r-- 1 user02 user02 512  94 23:07 user02-test-noperm.txt
-rw-r--r-- 1 nobody nobody 512  94 23:51 user02-test-sec_none.txt <--- ★ user02が作成したファイル
-rw-r--r-- 1 user02 user02 512  94 22:51 user02-test.txt
[root@rocky9-samba35 ~]#
[root@rocky9-samba35 ~]# ls -l /var/samba_share/share3
合計 7
-rw-r--r-- 1 root   root    14  94 22:26 share3-text00.txt
-rw-r--r-- 1 root   root    14  94 22:26 share3-text01.txt
-rw-r--r-- 1 root   root    14  94 22:26 share3-text02.txt
-rw-r--r-- 1 root   root    14  94 22:26 share3-text03.txt
-rw-r--r-- 1 user03 user03 512  94 23:06 user01-test-noperm.txt
-rw-r--r-- 1 nobody nobody 512  94 23:49 user01-test-sec_none.txt <--- ★ user01が作成したファイル
-rw-r--r-- 1 user03 user03   0  94 22:50 user01-test.txt
-rw-r--r-- 1 user03 user03 512  94 23:07 user02-test-noperm.txt
-rw-r--r-- 1 nobody nobody 512  94 23:51 user02-test-sec_none.txt <--- ★ user02が作成したファイル
-rw-r--r-- 1 user03 user03   0  94 22:51 user02-test.txt
[root@rocky9-samba35 ~]#

参考文献


この記事が気に入ったらサポートをしてみませんか?