Skip to content

cifs: Samba (smbd) integration seam — lifecycle + smb.conf generation via CommandRunner #61

Description

@hartsock

Goal

Introduce a Samba (smbd) management seam — the real SMB data plane — driven
through the existing CommandRunner abstraction (the pattern the ZFS backend uses
for zfs/zpool). No production pure-Rust SMB server exists, so bundling Samba
is the faithful path; this is the deliberate, user-accepted deviation from the "no
real service" thesis (#30), scoped to CIFS and off by default.

Scope

  • A nessie-backend-cifs (or smb module) that owns: locate/launch smbd,
    generate smb.conf (global section from the CIFS service; [share] sections
    from shares), reload on change, and lifecycle (start/stop/health).
  • All shell-outs go through CommandRunner so they are unit-testable with a
    mock (assert the generated smb.conf + argv; no real smbd in unit tests).
  • cifs.enabled config (default false); when off, zero Samba footprint.

Dependencies

#60. Blocks the CIFS auth/wiring/deploy sub-issues.

Acceptance

  • Unit tests assert the generated smb.conf + smbd argv for a sample service+share
    via the mock runner. A live smoke (root) starts smbd.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:cifsCIFS/SMB protocol / data plane

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions