Что было. Нужно раздать один каталог по SMB так, чтобы администратор и один пользователь могли писать, а остальные только читать. Администратор сделал две шары на один каталог с разными именами: неудобно и путает пользователей.
Решение (подтверждено). Одна секция в smb.conf с разграничением по спискам:
[projects]
path = /srv/samba/projects
valid users = admin, user1, @readers
write list = admin, user1
read only = yes
create mask = 0664
directory mask = 2775
force group = projects
read only = yes делает шару по умолчанию только для чтения, write list перечисляет исключения; @readers подключает группу. force group и setgid в directory mask гарантируют, что созданные файлы принадлежат общей группе и читаемы всем. testparm проверяет синтаксис, smbcontrol all reload-config применяет без перезапуска.
Права файловой системы обязательны. Samba не может дать больше, чем позволяет ФС: каталог /srv/samba/projects должен принадлежать группе projects с правами 2775, а пользователи из write list быть в этой группе (usermod -aG projects user1). Для читателей достаточно r-x для «остальных» или членства в группе с read list. Проверка от имени пользователя: sudo -u user1 touch /srv/samba/projects/t && rm ….
Учётные записи Samba отдельны от системных: smbpasswd -a user1 после создания системного пользователя; отключённые системные пользователи всё равно должны существовать для сопоставления uid. Для ролей «только чтение» удобна отдельная группа; для гостевого чтения guest ok = yes с map to guest = Bad User в [global] (осторожно с сетями, где это недопустимо).
Диагностика «пишет / не пишет».
smbstatusпоказывает, кто подключён и под каким пользователем (Windows иногда подставляет кэшированные учётные данные другого пользователя:net use * /deleteна клиенте).- Журнал
/var/log/samba/log.<клиент>сlog level = 2: отказыNT_STATUS_ACCESS_DENIEDс указанием, ФС или списки. - Клиенты Windows кэшируют права на сессию: после изменения
smb.confпереподключить диск.
Про две шары на один путь. Работает, но ломает ссылки между файлами у пользователей, удваивает записи в проводнике и усложняет аудит. Один путь, одна шара, списки.
Параметры описаны в документации Samba.