0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AlmaLinux9 間でのフォルダ共有を Samba で実現する手順

0
Posted at

自分用の備忘録です。

Samba を使用して、Linux 仮想ホスト間でフォルダを共有します。また、共有フォルダをマウントします。

Samba は Windows からもアクセスできるため、パーミッションまわりが複雑です。この記事の手順を踏んだ場合、Linux にマウントした際、共有元と異なるパーミッションになります。

Linux 内のみで共有する場合は NFS, SSHFS をまず検討しましょう。

参考

環境

  • AlmaLinux 9
    • Oracle VM VurtialBox の仮想マシンに構築
    • 「最小インストール」でインストール済

構成

マシン等の構成は下記のとおりです。

LSF 構築の一環で作業をしていたのでファイル名やユーザ名が引っ張られていますが、当然、ほかのファイル名・ユーザ名でもかまいません。

仮想マシン構成

ホスト名 IPアドレス 補足
lsf01 192.168.56.33 Samba サーバを立てる。
lsf02 192.168.56.34
  • 上記の各マシンの /etc/hosts に全仮想マシンのホスト名を登録する

ユーザ

各ホストに下記のユーザを作成しておく。

ユーザ名 UID 主グループ ホームディレクトリ 補足
se なんでも なんでも なんでも 主にこのユーザで構築作業をする。sudo 権が必要。名前は違っていてもよい。
lsf なんでも なんでも なんでも Sambaのログインユーザとして使う。SSH ログインできる必要は無い

共有フォルダとマウント先

ホスト lsf01 の /usr/share/lsf を、ホスト lsf02 の /usr/share/lsf にマウントする1。

1. Samba によるファイル共有を準備 (ホスト: lsf01)

LSF では連携するノード間で同じファイルを共有するために、ファイルを共有できるようマウントします。今回は、lsf01 に /usr/share/lsf を作成し、それを他のホストの /usr/share/lsf2 にマウントします3。

そのために、まず lsf01 で samba をインストールしセットアップします。その後、lsf02 で cifs-utils を使用して lsf01 の共有ディレクトリをマウントします。

Samba 用のディレクトリの作成

下記のように、Samba で共有する予定のディレクトリを作成します。

# mkdir /usr/share/lsf
# chown lsf:users /usr/share/lsf
# chmod 755 /usr/share/lsf
# chcon -t samba_share_t /usr/share/lsf

また、接続確認をしやすくするために、適当なファイルを一つ作っておきます。

$ sudo -u lsf touch /usr/share/lsf/tmp.txt

samba のインストール

lsf01 で、次のように samba をインストールします。

# dnf install samba samba-common samba-client

(略)
アップグレード済み:
  libldb-4.21.3-7.el9_6.x86_64  libtalloc-2.4.2-1.el9.x86_64  libtdb-1.4.12-1.el9.x86_64  libtevent-0.16.1-1.el9.x86_64
インストール済み:
  avahi-libs-0.8-22.el9_6.x86_64                                cups-libs-1:2.3.3op2-33.el9.x86_64
  libicu-67.1-9.el9.x86_64                                      libnetapi-4.21.3-7.el9_6.x86_64
  libsmbclient-4.21.3-7.el9_6.x86_64                            libtirpc-1.3.3-9.el9.x86_64
  libwbclient-4.21.3-7.el9_6.x86_64                             samba-4.21.3-7.el9_6.x86_64
  samba-client-4.21.3-7.el9_6.x86_64                            samba-client-libs-4.21.3-7.el9_6.x86_64
  samba-common-4.21.3-7.el9_6.noarch                            samba-common-libs-4.21.3-7.el9_6.x86_64
  samba-common-tools-4.21.3-7.el9_6.x86_64                      samba-dcerpc-4.21.3-7.el9_6.x86_64
  samba-ldb-ldap-modules-4.21.3-7.el9_6.x86_64                  samba-libs-4.21.3-7.el9_6.x86_64

完了しました!

samba の設定

Samba を起動する前に設定を変更します。

設定ファイル /etc/samba/smb.conf を次のように編集します。

/etc/samba/smb.conf
[global]
        workgroup = LSF
        security = user

[lsf]
        comment = Shared directory for LSF
        path = /usr/share/lsf
        valid users = lsf
        browseable = yes
        read only = no
        guest ok = no

今回は Windows との共有やプリンタの共有を想定していないため、既存の設定はほとんど削除しました。[lsf] のセクションで今回共有するディレクトリを設定しています。今回は lsf として Samba にログインした場合のみ使用できるようにするため、guest ok = no, valid users = lsf を指定しています。

設定を変更したら、testparm コマンドで設定にエラーが無いことを確認します。

# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

パスワードの設定

lsf ユーザは Samba の /lsf へログインするときに使用します。このログインのためのパスワードをここで設定します。

# smbpasswd -a lsf
New SMB password:
Retype new SMB password:
Added user lsf.

この記事では、ここで lsf00 をパスワードに設定したつもりで進めます。

OS の lsf ユーザのログインパスワードがすでに設定されていて Samba にも同じパスワードでログインしたい場合、この操作は必要ありません。また、匿名ユーザでも共有ディレクトリを見られるよう設定する場合も不要です。

samba の起動と登録

設定ができたら、Samba のサービスを起動・登録します。下記のコマンドでは起動と登録(自動起動設定)を同時に実施しています。

# systemctl enable --now smb

samba のインストール時に nmb というサービスも追加されていますが、今回は Linux のみを対象とするため不要です。そのため起動・登録しません。

ローカルで動作確認

下記のように smbclient //<ホスト名>/<共有名> で接続を確認します。パスワードを聞かれるので、上の作業で smbpasswd で設定したパスワードを入力します。

$ smbclient //lsf01/lsf -U lsf
Password for [LSF\lsf]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sat Jul 19 20:53:15 2025
  ..                                  D        0  Sat Jul 19 20:53:15 2025
  tmp.txt                             N        0  Sat Jul 19 20:53:15 2025

                17756160 blocks of size 1024. 16011620 blocks available
smb: \>

上の例では smbclient の対話コンソールで ls コマンドを使用することで、事前に共有ディレクトリ内に作成しておいた tmp.txt が見えることを確認しています。-U <ユーザ> を無くしたり誤ったパスワードを入力したりするとエラーになることもここで確認できます。

ファイアーウォールの設定

他のホストからのアクセスを遮断してしまっては期待通りに動作しないため、Samba がアクセスを受け付けるポートを開放します。

# firewall-cmd --add-port=445/tcp --permanent
# firewall-cmd --reload

2. Samba の共有ディレクトリのマウント (ホスト: lsf02)

Samba サーバの準備ができたので、各ホストから Samba の共有ディレクトリを参照し、マウントします。

この記事では、この段階では lsf01, lsf02 のみを作成していて、lsf03 以降は後で lsf02 の仮想マシンを複製して作成する想定です。そのためこの工程を lsf02 のみに対して実施しています。

もし実マシンを使用しているなどの理由で3つ目以降のホストもすでに作成している場合、lsf01 以外の全ホストでこの作業を実施してください。

samba-client のインストール

Samba にアクセスするためのクライアントソフトウェアと、そのマウントに使用するライブラリをインストールします。

# dnf install samba-client cifs-utils

(略)
アップグレード済み:
  libldb-4.21.3-7.el9_6.x86_64  libtalloc-2.4.2-1.el9.x86_64  libtdb-1.4.12-1.el9.x86_64  libtevent-0.16.1-1.el9.x86_64
インストール済み:
  avahi-libs-0.8-22.el9_6.x86_64      cifs-utils-7.1-2.el9.x86_64              keyutils-1.6.3-1.el9.x86_64
  libicu-67.1-9.el9.x86_64            libsmbclient-4.21.3-7.el9_6.x86_64       libtirpc-1.3.3-9.el9.x86_64
  libwbclient-4.21.3-7.el9_6.x86_64   samba-client-4.21.3-7.el9_6.x86_64       samba-client-libs-4.21.3-7.el9_6.x86_64
  samba-common-4.21.3-7.el9_6.noarch  samba-common-libs-4.21.3-7.el9_6.x86_64

完了しました!

インストール出来たら、動作を確認します。

$ smbclient //lsf01/lsf -U lsf

lsf01 で試したときと同じように lsf01 へ接続して動作するはずです。

共有フォルダのマウントテスト (一時的なマウントで動作確認)

この共有フォルダを今回は /usr/share/lsf として使えるようにしたいので、そこへマウントします。

マウントするためにはマウントポイントにディレクトリがある必要があるので作成します。

# mkdir -m 755 /usr/share/lsf

まずはマウントそのものができることを確認するために、簡単な方法(再起動で解除される方法)でマウントしてみます。lsf00 は前の工程で決めたパスワードです。

# mount -t cifs -o username=lsf,password=lsf00,uid=10600,gid=100 //lsf01/lsf /usr/share/lsf

実際にマウントできたことを確認してみましょう。マウント時のオプションに uid=10600,gid=100 を指定しているので所有者・所有グループが lsf (10600) と users (100) になっています。

# ls -la /usr/share/lsf
合計 4
drwxr-xr-x.  2 lsf  users    0  7月 19 20:53 .
drwxr-xr-x. 80 root root  4096  7月 20 13:42 ..
-rwxr-xr-x.  1 lsf  users    0  7月 19 20:53 tmp.txt

では、一時的なマウントをできることが確認できたので一度アンマウントします。

# umount /usr/share/lsf
# ls -la /usr/share/lsf
合計 4
drwxr-xr-x.  2 root root     6  7月 20 13:42 .
drwxr-xr-x. 80 root root  4096  7月 20 13:42 ..

共有フォルダの恒久的なマウント

次は、再起動しても継続するマウントを設定します。

設定は /etc/fstab に書くのですが、このファイルは全ユーザに読み取り権限があるため lsf のログインパスワードを書くべきではありません。そこで、Samba への認証情報を書いたファイルを用意します。

$ sudo -u lsf touch /home/lsf/samba_credencials
$ sudo -u lsf chmod 600 /home/lsf/samba_credencials

中には次のようにSambaへのログインに使用するユーザ名とパスワードを記載します。

/home/lsf/samba_credencials
username=lsf
password=lsf00

ここまでの準備ができたら、マウント設定を /etc/fstab の末尾に追加します。

/etc/fstab
+ //lsf01/lsf /usr/share/lsf cifs credentials=/home/lsf/samba_credencials,uid=10600,gid=100 0 0

その後、編集した /etc/fstab を次のようにロードさせることで、新しい設定どおりにマウントされます。

# systemctl daemon-reload
# mount -a

マウントされたことを確認しましょう。

# ls -la /usr/share/lsf
合計 4
drwxr-xr-x.  2 lsf  users    0  7月 19 20:53 .
drwxr-xr-x. 80 root root  4096  7月 20 13:42 ..
-rwxr-xr-x.  1 lsf  users    0  7月 19 20:53 tmp.txt

再起動してみてもマウントが維持されるはずなので、可能なら確認しましょう。

  1. 必ずしも元と先が同じディレクトリである必要は無い。 ↩

  2. パスは IBM のドキュメント に記載の構成例に準拠 ↩

  3. lsf01 の別の共有専用ディレクトリを全ホスト (lsf01 を含む) の /usr/share/lsf へマウントすることも考えましたが、lsf01 起動時の自動マウントが機能しない (自動マウント時にSambaがまだ起動していない?) ためやめました。 ↩

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?