Slide 1

Slide 1 text

KSMBDでSMB共有 Kenichiro Matohara(matoken) 1

Slide 2

Slide 2 text

matoken @ 鹿児島の右下の山奥から参加 好きなLinuxディストリビューションは Debian map: © OpenStreetMap contributors Kenichiro Matohara(matoken) https://matoken.org matoken@inari.opencocon.org 2

Slide 3

Slide 3 text

AndroidでPC上のPDF読んだりしたいな 寒くなってきたので布団から出てPC触るのつらく スマホでSNS見たりするよりはPC上のPDF読んだほうがまだまし か データ共有PC間だとSSHFSを使いがちだけどAndroidだと面倒そ う Androidアプリが対応しているプロトコルはSMB共有が多そう? SMB共有のメジャーどころとしては だけど大袈裟な感じも そういえばKSMBDがあったな samba 3

Slide 4

Slide 4 text

KSMBD Linux kernelベースのSMB3プロトルサーバ実装 KSMBDはLinux 5.11以降に含まれる ksmbd→カーネルデーモンで主な処理を行う ksmbd.mountd→ユーザ管理のためのユーザ空間デーモン KSMBD - SMB3 Kernel Server — The Linux Kernel documentation 4

Slide 5

Slide 5 text

KSMBD導入 今回Raspberry Pi bookworm armhf/Debian sid amd64で試 した 6

Slide 6

Slide 6 text

sambaの停止 sambaを動かしている場合は停止しておく $ sudo systemctl stop smbd nmbd winbind samba-ad-dc 7

Slide 7

Slide 7 text

ksmbd-toolsの導入 KSMBD自体はkernel moduleだが,ユーザランドのksmbd- toolsというツールが別途必要なので導入する $ sudo apt install ksmbd-tools cifsd-team/ksmbd-tools: ksmbd kernel server userspace utilities Debian — パッケージ検索結果 — ksmbd-tools 8

Slide 8

Slide 8 text

設定ファイルの用意 最低限の設定を書いたり 既存のsmb.confを流用したり, ksmbd-toolsに付属のksmbd.conf.exampleをコピーして使った り, $ echo '[global] [share] path=/tmp ' | sudo tee /etc/ksmbd/ksmbd.conf $ sudo cp -p /etc/samba/smbd.conf /etc/ksmbd/ksmbd.conf $ sudo cp -p /etc/ksmbd/ksmbd.conf.example /etc/ksmbd/ksmbd.conf 9

Slide 9

Slide 9 text

smb.confとだいたい同じように書ける [homes]のような特殊な共有名や, path = %H や path = /media/%u のような変数は動かないよう 以下のようなissueがあるのでおそらく未実装 詳細はKSMBD.CONF(5)を Add support for special [homes] section · Issue #229 · cifsd-team/ksmbd-tools Variable substitutions · Issue #215 · cifsd- team/ksmbd-tools 10

Slide 10

Slide 10 text

共有のユーザ,パスワードの設 定 ksmbd-tools付属のksmbd.adduserコマンドで共有にアクセスす るためのユーザ名とパスワードを設定 パスワードファイルは /etc/ksmbd/ksmbdpwd.db で, ID:passwordhash のような形式で保存される $ sudo ksmbd.adduser -a 11

Slide 11

Slide 11 text

KSMBDモジュールの読み込み KSMBDモジュールを読み込む モジュールがない場合kernel sourceからmenuconfigなどで KSMBDモジュールを有効にする $ sudo modprobe -v ksmbd $ lsmod | grep ksmbd ksmbd 249856 1 cifs_arc4 12288 1 ksmbd nls_ucs2_utils 12288 1 ksmbd 12

Slide 12

Slide 12 text

ksmbd.mountdの起動 ユーザー空間用のデーモンを起動 $ sudo ksmbd.mountd 13

Slide 13

Slide 13 text

動作確認 適当なファイラーや,smbclientなどからアクセス出来るのを確認 $ smbclient //192.168.0.23/home Password for [WORKGROUP\matoken]: Try "help" to get a list of possible commands. smb: \> ls . D 0 Tue Nov 17 06:17:29 2020 .. D 0 Mon May 20 18:03:24 2024 nitter D 0 Mon Nov 23 23:14:29 2020 huginn D 0 Sat Oct 24 16:03:31 2020 pi D 0 Mon Aug 12 06:12:17 2024 matoken D 0 Sat Dec 14 00:06:23 2024 gitea D 0 Fri Nov 13 09:43:48 2020 29948557 blocks of size 4096. 2496118 blocks available smb: \> cd matoken smb: \matoken\> 14

Slide 14

Slide 14 text

設定の再読込 設定ファイルを編集した場合,設定を反映するために ksmbd.controlコマンドで再読込が必要 $ sudo ksmbd.control --reload 15

Slide 15

Slide 15 text

KSMBD停止 $ sudo ksmbd.control -s [ksmbd.control/30908]: INFO: Terminated ksmbd.mountd [ksmbd.control/30908]: INFO: Killed ksmbd $ sudo modprobe -r ksmbd 16

Slide 16

Slide 16 text

永続化 動いたので次回起動時以降に起動してくるよう永続化する sambaの無効化 モジュールの自動読み込み設定 ksmbdデーモンの自動起動設定 再起動してKSMBDでSMB共有が利用できるのを確認 $ sudo systemctl disable smbd nmbd winbind samba-ad-dc $ echo ksmbd | sudo tee -a /etc/modules $ sudo systemctl enable ksmbd 17

Slide 17

Slide 17 text

Androidからのアクセス SMBに対応した動画プレイヤーのVLCで動画再生OK PDFなどの閲覧にCIFS Documents ProviderでSMBアクセスを 設定し,Filesアプリで共有を開きPDFなどを閲覧できた ただ,一旦ローカルにコピーするらしく開くまで間がある&操作が少し 煩わしい とりあえず目的達成 VLC | F-Droid - Free and Open Source Android App Repository CIFS Documents Provider | F-Droid - Free and Open Source Android App Repository 19

Slide 18

Slide 18 text

matoken :fox: @matoken@inari.opencocon.org Follow KSMBD経由でAndroidのvlcやMuPDFで動画やPDFが閲覧できるのを確認  20

Slide 19

Slide 19 text

まとめ SMB共有のためにsambaより省リソースそうなKSMBDを試した 多分sambaより省リソースで高速 ただし便利機能がなかったりセキュリティホールにもなりがち シンプルな自宅個人ファイルサーバなどに良いかもしれない sambaとKSMBDの速度,リソースの差などを調べたい AndroidのSMB対応PDFビュワーを探したい [OpenWrt Wiki] ksmbd $ w3m -dump https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=ksmbd | grep ^CVE-2024- | wc -l 17 21

Slide 20

Slide 20 text

SEE ALSO smbdirect(RDMA)も気になります ksmbd+smbdirect works! - しげふぁみ 22

Slide 21

Slide 21 text

奥付 発表 2024-12-14(sat) 発表者 利用ソフトウェア + + ライセンス 東海道らぐ 2024年12月オフな集まり@メリーアヒルヤキ(m 〇ikutterの作者は誰?) Kenichiro Matohara(matoken) Neovim textlint Asciidoctor Reveal.js CC BY 4.0 23

Slide 22

Slide 22 text

No content