Hermes LXCのSambaマウント作業記録(2026-10-09)

Hermes LXCからSamba共有を利用するための作業記録

記録日: 2026-10-09(UTC)
最終読み取り再確認: 2026-10-09 11:33 UTC

1. 目的と到達点

HermesからSambaの share 全体へアクセスし、素材や文書を利用できるようにする。利用者の合意した方針はRW(読み書き)であり、Assets専用の読み取り専用共有へ切り替える作業ではない。

到達点: ホストでCIFSマウントした共有を非特権LXCへバインドし、実行ユーザー hermes でAssetsとPatchouliの一覧取得、および実ファイルの読み取りに成功。

RWマウントは確認したが、実際の書き込みは未テスト。Proxmoxホスト再起動後の自動復旧も未確認。

2. 確認した構成

Sambaサーバー 192.168.0.199(Proxmox CT 199、名前 samba)
  /srv/share
  SMB共有 //192.168.0.199/share
          ↓ CIFS、SMB 3.1.1、RW、認証ユーザー lulu
Proxmoxホスト(端末プロンプト root@minase)
  /mnt/bindmounts/hermes-share
          ↓ CT 103 の mp0 によるバインド
Hermes(Proxmox CT 103、非特権LXC)
  /mnt/share
  実行ユーザー hermes(UID/GID 1000)

利用者が提示した pct config 103 の関連項目:

hostname: hermes
mp0: /mnt/bindmounts/hermes-share,mp=/mnt/share
unprivileged: 1
onboot: 1
net0: name=eth0,bridge=vmbr0,gw=192.168.0.1,hwaddr=BC:24:11:D8:F0:01,ip=192.168.0.103/24,type=veth

コンテナで確認したUID/GIDマッピング(双方同じ):

0 100000 65536

ホスト側のCIFS所有者指定は uid=101000,gid=101000。コンテナではこれが実行ユーザーのUID/GID 1000に対応している。これはクライアント側の所有者表示・アクセス設定であり、サーバー側のUnix認可とは別。

3. アクセス拒否の状況

当初、共有直下では Games、Assets、Media、Zotero-backup、Patchouli、obsidian の一覧を取得できた。一方、/mnt/share/Assets と /mnt/share/Patchouli は Permission denied で一覧取得や内部ファイルの読み取りができなかった。

利用者がSambaサーバーで提示した情報:

uid=1001(lulu) gid=1001(lulu) groups=1001(lulu),1003(share)
/srv/share           root:share     drwxrwx---
/srv/share/Assets    minase:minase  drwxrwx---
/srv/share/Patchouli minase:minase  drwxrwx---

変更前の有効な共有設定:

[share]
        create mask = 0660
        directory mask = 0770
        path = /srv/share
        read only = No
        valid users = minase lulu

表示された通常のUnix権限では、luluはshareグループに属するがminaseグループには属さず、対象の子ディレクトリへのアクセス権を持たない状態だった。ACL全体の調査はしていないため、モード表示だけを完全な権限監査結果とは扱わない。

注意: sudo -u lulu -- ls -ld <ディレクトリ> はディレクトリ自身のメタデータ確認であり、内部を一覧取得できることの証明ではない。

4. 合意したサーバー側の変更

利用者に影響範囲を説明し、同意を得て、Sambaサーバーの /etc/samba/smb.conf の [share] に次の1行を追加する方式を採用した。

        force user = minase

変更後の意図した設定:

[share]
        create mask = 0660
        directory mask = 0770
        path = /srv/share
        read only = No
        valid users = minase lulu
        force user = minase

認証はluluのまま、当該共有でのファイル操作をminaseのUnix権限で行う方針。この設定は当該共有へ許可された接続全体に影響し、luluによる操作もUnix上ではminaseとして扱われる。新規ファイルの所有者・Unixレベルの操作帰属をluluと分ける方式ではない。

既存ファイルへの再帰的なchmod/chown、luluのminaseグループへの追加、LXCの特権化は実施していない。

利用者に案内したコマンド(Sambaサーバー上):

cp -ai /etc/samba/smb.conf /etc/samba/smb.conf.before-force-user
nano /etc/samba/smb.conf
# [share] に force user = minase を追加

testparm -s
# 検査で問題がない場合だけ再読み込み
smbcontrol smbd reload-config
testparm -s --section-name=share

利用者は設定変更済みと報告した。変更後のtestparm全文とバックアップファイルの実在は、この会話では読み戻していない。上記を「全コマンドの実行ログが確認済み」とは扱わない。

5. 新規接続と既存マウントの切り分け

利用者が次の新規接続でAssetsの一覧取得成功を報告:

smbclient //192.168.0.199/share -U lulu -W WORKGROUP \
  -c 'cd Assets; ls'

しかしHermes側の既存CIFSマウントでは、引き続きAssets/Patchouliへのアクセスが拒否された。ホスト側でも次の一覧取得が Permission denied だった。

ls -la /mnt/bindmounts/hermes-share/Assets

新しい接続は成功し、ホスト側の既存接続は失敗する状況だったため、既存マウントの再接続へ進んだ。設定再読み込みと、すでに有効な接続への設定反映は区別した。

6. ホスト側の再接続手順

以下は利用者へ案内した手順。実行場所はすべてProxmoxホストのroot端末。Hermes自身のCTを停止するとチャット応答も一時的に止まることを事前に説明した。

pct shutdown 103 --timeout 60
pct status 103
# status: stopped を確認してから次へ

umount /mnt/bindmounts/hermes-share
# 解除成功時だけ次へ

mount -t cifs //192.168.0.199/share /mnt/bindmounts/hermes-share \
  -o username=lulu,domain=WORKGROUP,vers=3.1.1,rw,uid=101000,gid=101000,forceuid,forcegid,file_mode=0600,dir_mode=0700,nosuid,nodev,noexec
# パスワードは端末のプロンプトへ入力

findmnt -M /mnt/bindmounts/hermes-share -o TARGET,SOURCE,FSTYPE,OPTIONS
ls -la /mnt/bindmounts/hermes-share/Assets

pct start 103
pct status 103

失敗時の扱い:

利用者が「戻ったよ」と報告し、その後のHermes側でアクセス成功を確認した。ホスト上の手順全体の実行ログは受け取っていないため、成功証拠は復帰後の実測を中心とする。

7. 復帰後の実測結果

実行ユーザー:

uid=1000(hermes) gid=1000(hermes) groups=1000(hermes)

findmnt -M /mnt/share でCIFSの共有が確認できた。下層のext4バインドも同じパスに表示されるが、実際の一覧・ファイル読み取りは共有側で成功した。

関連する実測マウントオプション:

source=//192.168.0.199/share
fstype=cifs
rw,nosuid,nodev,noexec,vers=3.1.1
username=lulu,domain=WORKGROUP
uid=101000,forceuid,gid=101000,forcegid
file_mode=0600,dir_mode=0700

確認項目:

8. 未検証事項と認証情報の扱い

9. 今後確認するなら

  1. ホスト側の永続マウント設定と秘密情報の保管境界を、秘密そのものを出力せず確認する。
  2. ホスト起動時のマウントとCT起動の順序を確認する。
  3. 必要なら合意した専用ディレクトリで、空ディレクトリ作成・削除などの最小限のRW試験を行う。
  4. 再起動試験は通信断と復旧手段を事前に説明してから行う。

この文書は作業記録であり、自動実行スクリプトではない。未検証事項を完了済みとして扱わない。

出典