概要
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]
特段ドメイン等に参加していなければ、ワークグループ:WORKGROUPになっています。
これは、デフォルトの設定です、
エクスプローラーのファイルパスに\\192.168.2.110
と入力すると共有フォルダが出てきました!
ちなみに、\は¥キーになります。
また、わたくしはIPアドレスを指定していますが、DNS設定されていればホスト名でも共有フォルダにアクセスすることが出来ます。(著者は未設定です・・・)
# 下記のどちらでも確認できます。プロンプトでもわかりますね!
[admin@almalinux9 share]$ uname -n
almalinux9
[admin@almalinux9 share]$ hostname
almalinux9
ユーザアクセス設定
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ではないため。
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
[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