1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AlmaLinux Samba

Last updated at Posted at 2024-02-10

概要

Windowsのファイル共有では、SMBというプロトコルが使用されています。

ファイル共有のモデル

◇公開フォルダモデル
1つの共有フォルダを公開し、だれでも利用できるフォルダのこと。
ユーザ名・パスワードの入力が不要で、だれでもフォルダを使用することが出来る。

◇ユーザによるアクセス管理モデル
共有フォルダへのアクセスを行う際に、ユーザ名・パスワードを入力します。
ファイルのアクセス権、所有者、グループなどを使用して、細かなアクセス制限を行うことが出来ます。

◇ユーザ専用フォルダ
アクセス時には、ユーザ名・パスワードを入力します。
Linux上のユーザホームディレクトリを使って、ユーザ専用のフォルダとしてアクセスできる。

インストール

Windowsファイル共有を行うには、sambaパッケージをインストールする。

[admin@almalinux9 ~]$ sudo yum install -y samba
メタデータの期限切れの最終確認: 0:22:45 前の 2024年02月10日 20時32分48秒 に実施しました。
依存関係が解決しました。
=============================================================================================================================================================
パッケージ                                   アーキテクチャー             バージョン                                     リポジトリー                 サイズ
=============================================================================================================================================================
インストール:
samba                                        x86_64                       4.18.6-101.el9_3.alma.1                        baseos                       932 k

(途中省略)

完了しました!

パケットフィルタリング設定

# 事前にファイアウォールの確認
[admin@almalinux9 ~]$ sudo firewall-cmd --list-services
cockpit dhcp dhcpv6-client ssh

# サービスの追加
[admin@almalinux9 ~]$ sudo firewall-cmd --add-service=samba
success

# 設定の保存
[admin@almalinux9 ~]$ sudo firewall-cmd --runtime-to-permanent
success

共有フォルダの作成

設定項目 パラメータ
共有の名称 share
ワークグループ名 PRIVATE
共有フォルダを配置するディレクトリ /share
ファイルを管理するユーザ/グループ winshare
# 管理用のユーザを作成(同時にグループもできる)
[admin@almalinux9 ~]$ sudo useradd winshare

# 共有用のディレクトリを作成
[admin@almalinux9 ~]$ sudo mkdir /share

# 上記のディレクトリの所有者とグループをwinshareに変更
[admin@almalinux9 ~]$ sudo chown winshare:winshare /share

# グループが書き込み可能で、受け継がれる
[admin@almalinux9 ~]$ sudo chmod g+ws /share

SELinux設定変更

# SELinuxのコンテキスト設定を追加
[admin@almalinux9 ~]$ sudo semanage fcontext -a -t samba_share_t "/share(/*)?"

# コンテキストの設定を反映
[admin@almalinux9 ~]$ sudo restorecon /share

# コンテキストの確認
[admin@almalinux9 ~]$ ls -lZd /share
drwxrwsr-x. 2 winshare winshare unconfined_u:object_r:samba_share_t:s0 6  2月 10 21:08 /share

公開フォルダの設定

作成したフォルダを共有するようにSambaを設定します。
/etc/samba/smb.confが設定ファイルで、全体の共有設定を定義している[global]セクションを編集します。

元のファイルの中身
[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
変更後
[admin@almalinux9 ~]$ sudo vim /etc/samba/smb.conf

[global]
        workgroup = PRIVATE
        security = user
        guest account = winshare
        dos charset = CP932
        unix charset = UTF-8
        map to guest = Bad Password
#       passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

また、新たにブロックを作成して下記の内容を追加する。
[share]は、共有名shareの設定ブロックを開始するという意味でパスには共有ディレクトリを指定する。
public = yesは、ユーザを問わずに公開するという意味です。
共有フォルダへの書き込みを許可するためにwritable = yesに設定(noだと読み込み専用)

[share]
        path = /share
        public = yes
        writable = yes

サービスの起動設定

[admin@almalinux9 ~]$ sudo systemctl start nmb.service
[admin@almalinux9 ~]$ sudo systemctl start smb.service
[admin@almalinux9 ~]$ sudo systemctl is-active nmb.service
active
[admin@almalinux9 ~]$ sudo systemctl is-active smb.service
active

サービスの自動起動設定

[admin@almalinux9 ~]$ sudo systemctl enable nmb.service
Created symlink /etc/systemd/system/multi-user.target.wants/nmb.service → /usr/lib/systemd/system/nmb.service.

[admin@almalinux9 ~]$ sudo systemctl enable smb.service
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.

Windowsパソコンから確認

ここまでの作業で、Linux上に作成したディレクトリにWindowsのクライアントからでもフォルダへ書き込みができるようになっているので、確認してみましょう。

ワークグループの変更

Ctrl+Rのファイル名を指定して実行でsysdm.cplを入力して[OK]
image.png

特段ドメイン等に参加していなければ、ワークグループ:WORKGROUPになっています。
これは、デフォルトの設定です、
image.png

image.png

エクスプローラーのファイルパスに\\192.168.2.110と入力すると共有フォルダが出てきました!
ちなみに、\は¥キーになります。
また、わたくしはIPアドレスを指定していますが、DNS設定されていればホスト名でも共有フォルダにアクセスすることが出来ます。(著者は未設定です・・・)

ホスト名確認コマンド
# 下記のどちらでも確認できます。プロンプトでもわかりますね!
[admin@almalinux9 share]$ uname -n
almalinux9

[admin@almalinux9 share]$ hostname
almalinux9

image.png

ユーザアクセス設定

Sambaには、共有フォルダ上のファイルへのアクセスをユーザによって制限することが出来ます。
Windowsでネットワーク資格情報の入力が表示されますが、Linuxサーバに登録されたSamba専用のユーザのデータベースによって認証されます。

通常のLinuxユーザの作成

「user1」というユーザを作成し、セカンダリグループに「winshare」へ登録する。

[admin@almalinux9 ~]$ sudo useradd -G winshare user1

# ユーザ作成後の確認
[admin@almalinux9 ~]$ id user1
uid=1002(user1) gid=1002(user1) groups=1002(user1),1001(winshare)

Samba専用のユーザの作成

[admin@almalinux9 ~]$ sudo pdbedit -a -u user1
new password:
retype new password:
Unix username:        user1
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-3357234804-3473786163-3967365635-1000
Primary Group SID:    S-1-5-21-3357234804-3473786163-3967365635-513
Full Name:
Home Directory:       \\ALMALINUX9\user1
HomeDir Drive:
Logon Script:
Profile Path:         \\ALMALINUX9\user1\profile
Domain:               ALMALINUX9
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          木, 07  2月 2036 00:06:39 JST
Kickoff time:         木, 07  2月 2036 00:06:39 JST
Password last set:    土, 10  2月 2024 22:11:57 JST
Password can change:  土, 10  2月 2024 22:11:57 JST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Samba専用ユーザの削除

sudo pdbedit -x -u ユーザ名

Sambaのユーザアクセス設定

では、セキュリティを高めるために設定ファイルの内容を変更します。

[global]
        map to guest = Never  ←Bad Passwordから変更
        passdb backend = tdbsam ←アンコメント

[share]
        public = no ←yesから変更する ←この行を追加
        valid user = user1,user2,user3 ←この行を追加
        read list = user3
# smbサービスの再読み込み
[admin@almalinux9 ~]$ sudo systemctl reload smb.service

確認ですが、adminユーザで共有フォルダにアクセスしたところ、無事に拒否されました。
user1とuser2とuser3ではないため。

image.png

IPアドレスでのアクセス制限

今回の設定では、127.0.0.1と192.168.2.0/24を許可して、そのほかのアドレスを拒否する設定です。
※IPアドレスを範囲で指定する際は、CIDRではなくネットマスクで表記することが必要です。
例)バツ:192.168.2.0/24
マル:192.168.2.0/255.255.255.0

IPアドレスの制限設定
[global]
        hosts allow = 127.0.0.1 192.168.2.0/255.255.255.0
        hosts deny = ALL

ホスト名を調べる設定

標準では、設定にホスト名は指定できません。
ホスト名を指定したい場合には、[global]に下記の設定を行う。

[global]
        hostname lookups = yes

アクセス権とファイルの隠蔽

読み込みできないファイルを見せないようにする設定は

[share]
        hide unreadable = yes

書き込みできないファイルを見せないようにする設定は

[share]
        hide unwriteable = yes

ユーザ専用フォルダの設定

Sambaには、ユーザ個人用のフォルダを作成する機能があります。
この機能は、[home]という共有名で作成されており、有効になっております。

AlmaLinux9では、この機能が完全に利用できる状態にはなっていないので、
実際に利用する際にはSELinuxの制限を解除する必要があります。

[admin@almalinux9 ~]$ sudo setsebool -P samba_enable_home_dirs on
``
`
# 隠しファイルの制御
Linuxでは、「.」で始まるファイル・ディレクトリは隠し扱いになります。
下記は、隠しファイルの種類を増やす設定になります。
```shell
[share]
        hide files = /.*/*~/

WindowsファイルサーバをLinuxから使用する。

上記の例とは反対に、WindowsファイルサーバをAlmaLinux9からマウントすることも可能です。

パッケージのインストール

[admin@almalinux9 ~]$ sudo yum install -y cifs-utils
AlmaLinux 9 - AppStream                                                                       4.3 kB/s | 4.1 kB     00:00
AlmaLinux 9 - BaseOS                                                                          5.3 kB/s | 3.8 kB     00:00
AlmaLinux 9 - Extras                                                                          5.4 kB/s | 3.8 kB     00:00
依存関係が解決しました。
==============================================================================================================================
 パッケージ                      アーキテクチャー            バージョン                     リポジトリー                サイズ
==============================================================================================================================
インストール:
 cifs-utils                      x86_64                      7.0-1.el9                      baseos                       94 k

トランザクションの概要
==============================================================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 94 k
インストール後のサイズ: 220 k
パッケージのダウンロード:
cifs-utils-7.0-1.el9.x86_64.rpm                                                               411 kB/s |  94 kB     00:00
------------------------------------------------------------------------------------------------------------------------------
合計                                                                                          112 kB/s |  94 kB     00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                      1/1
  インストール中   : cifs-utils-7.0-1.el9.x86_64                                                                          1/1
  scriptletの実行中: cifs-utils-7.0-1.el9.x86_64                                                                          1/1
  検証             : cifs-utils-7.0-1.el9.x86_64                                                                          1/1

インストール済み:
  cifs-utils-7.0-1.el9.x86_64

完了しました!

Windowsファイル共有のマウント

パッケージをインストールしたら、mountコマンドを使ってWindowsファイルサーバをマウントすることができます。
次は「\samba\documentes」というWindowsファイル共有をマウントする場合の例のことです。

# マウントする場所の作成
[admin@almalinux9 ~]$ mkdir /home/admin/documents

[admin@almalinux9 ~]$ sudo mount -t cifs -o user=admin,password=XXXX //samba/documents /home/admin/documents

アンマウントの方法

[admin@almalinux9 ~]$ sudo umount /home/admin/documents
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?