Files
samba/CHANGELOG.md
Struchkov Mark 07633cdc86 fix: resolve bugs in samba.sh and Dockerfile
- Fix chown syntax: changed 'smbuser.' to 'smbuser:smb' for correct group assignment
- Fix paths with spaces in perms(): use 'while read' instead of 'for' loop
- Add quotes to $file variable in import() to prevent word splitting
- Remove /etc from VOLUME declaration (too broad, causes unexpected behavior)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 22:17:37 +03:00

2.0 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

[Unreleased]

Fixed

  • Fixed chown syntax error in perms function (samba.sh:122)

    • Changed smbuser. to smbuser:smb for correct group assignment
  • Fixed paths with spaces handling in perms function (samba.sh:121)

    • Replaced for loop with while IFS= read -r to correctly handle paths containing spaces
  • Fixed unquoted variables in import function (samba.sh:112-113)

    • Added quotes around $file variable to prevent word splitting issues
  • Removed /etc from VOLUME declaration (Dockerfile:83)

    • /etc is too broad and can cause unexpected behavior with system configurations
  • Share-specific parameters not overriding global settings (#issue)

    Problem: When creating public shares with guest write access, the -G parameters for individual shares did not override the global force user and force group settings from the base smb.conf.

    Example that didn't work:

    -s "public;/cloud/share;yes;no;yes"
    -G "public;force user = nobody"
    -G "public;force group = nogroup"
    

    testparm -s showed that the share used global force user = smbuser and force group = smb instead of the specified values.

    Root cause:

    1. When using environment variables, GENERIC was processed before SHARE, so share sections didn't exist when -G options tried to modify them.
    2. The regex \s in sed was not POSIX-compatible for Alpine/busybox.

    Solution:

    • Reordered environment variable processing: SHARE is now processed before GENERIC
    • Replaced \s with POSIX-compatible [[:space:]] in regex patterns
    • Added ^ anchor to sed append command for precise matching

Changed

  • Environment variable processing order: GLOBAL -> SHARE -> GENERIC (was: GENERIC -> GLOBAL -> SHARE)