Jump to content

Recommended Posts

Posted

ОС Ubuntu 24 (LTS), Samba 4.19.5.

Хочу настроить автономный (не в домене) файл-сервер.

 

Конфигурация smb.conf:

[global]
workgroup = HOMENET
;realm = HOMENET
server string = %h file server
;server min protocol = NT1
;client min protocol = NT1

### Auth ###
server role = standalone server
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
invalid users = root bin daemon adm sync shutdown halt mail news uucp operator
security = user
username map = /etc/samba/smb.usr
idmap config * : backend = tdb

### Options ###
usershare max shares = 100
usershare allow guests = yes

### Log ###
log level = 5
logging = file
log file = /var/log/samba/log.%m
max log size = 1000
panic action = /usr/share/samba/panic-action %d

### Shares ###
include = /etc/samba/shares.conf
;include = /etc/samba/smb.conf.%m

### Special shares ###

[printers]
comment = All Printers
browseable = no
path = /var/tmp
printable = yes
guest ok = no
read only = yes
create mask = 0700

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
;write list = root, @lpadmin

В smb.usr несколько строк такого вида:

!linux_user = net_user1 net_user2

(имя пользователя в упрощенном формате, без домена домен\пользователь)

 

Ну и в файле shares.conf добавлены расшаренные ресурсы, как обычные (для доступа нужна авторизация), так и публичные (гостевой доступ без авторизации).

 

В файрволе нужные порты разрешены, в apparmor профиль загружен, разрешения на используемые каталоги добавлены.

 

Вначале проблема была следующая — список ресурсов я вижу (хоть через smbclient, хоть в Windows-машины), но при попытке открыть обычный ресурс и попытке авторизоваться получаю ошибку доступа, как будто указываю неправильный пароль. Однако публичные (гостевые) ресурсы открывались нормально.

Предположил, что либо не работает маппинг, либо в бэкэнде tdb пароли свои (не системные) и они не синхронизированы, поэтому указываемый пароль не принимался.

Пробовал поменять пароль через smbpasswd, пробовал настраивать tdb.

Добился того, что теперь по команде smbclient -L localhost -N получаю ошибку NT_STATUS_CONNECTION_DISCONNECTED. Если использовать Windows-машину, то получаю ошибку, что нет прав на использование ресурса.

В более ранних версиях Samba подобное могло быть, если SID пользователя по какой-либо причине сменился и в локальной базе данных сопоставление между пользователем и SID невалидное. Но попробовал удалить файлы в /var/lib/samba/private — они пересоздались, но ничего не поменялось.

 

Может у меня глаз замылился и ошибки в конфиге не замечаю?

Логи смотрел, но они неудобные, слишком много текста и не указываются причины ошибок. По ним пока ничего не выяснил.

Posted

Похоже я испортил tdb-файлы.

Если режим отладки выставить на уровень 10, то в логах попадаются ошибки примерно такого вида:

LEGACY: mapping failed for sid S-1-5-21-4199005761-2810790392-2893276203-514
Could not find map for sid S-1-5-32-546

Не покажете, что там обычно бывает в файлах /var/lib/samba/private? А то у меня есть подозрение, что я их случайно отредактировал или пересоздал.

Posted

Установил на виртуальную машину Ubuntu 24, установил и запустил Samba — все работает.

Сравнил все найденные tdb-файлы — каких-то значимых отличий не нашел. На всякий случай переписал их с виртульной машины (сохранив старые версии) — не помогло.

Сравнил конфигурации (samba, apparmor, pam и все, что еще смог придумать) — тоже все более-менее одинаково.

Удалил с машины все пакеты, относящиеся к samba (с ключом --purge), поискал файлы (у которых в названии есть samba или tdb), удалил вручную то, что могло относится к конфигурации. Переустановил Samba — не работает, все с теми же симптомами.

Уже близок к тому, чтобы переустановить с нуля ОС. Это, конечно, что-то вроде переустановки Windows при любой проблеме, но я уже не знаю, где смотреть.

Posted

Похоже, что придется разбираться.

 

Переустановил ОС, установил Samba, запустил, проверил — работает.

Накатил ПО (пакеты snap и apt), восстановил home, восстановил отдельные файлы в /etc и /usr/share (не связанные с Samba).

Запускаю Samba, пробую подключиться — та же ошибка.

Posted
1 час назад, alibek сказал:

Накатил ПО (пакеты snap

У SNAP и Samba давняя взаимная любовь организмами, преимущественно ретирадного направления. Это видели? Предположу, что оно и в обратную сторону работает.

Posted

Через snap я устанавливал только небольшую часть ПО — Firefox (в дистрибутиве так, не стал менять), VSCode, Inkscape. В основном использую apt.

По ссылке посмотрел, у меня домена и home-каталогов вообще нет. На всякий случай добавил параметр "template homedir", ничего не поменялось.

 

Опять же, на свежеустановленной Ubuntu уже есть десяток установленных snap-пакетов, однако это работе Samba не мешало.

По хорошему мне нужно было проверять работу Samba после каждого действия, но слишком уж это долго было бы, поленился.

Наверное попробую на виртуальной машине в свободное время так сделать.

  • 2 weeks later...
Posted

Наконец дошли руки поэкспериментировать.

 

Судя по всему мешает apparmor.

Отключение юнита (systemctl stop apparmor) не помогало, но когда отключил его в загрузчике GRUB (указал в параметрах apparmor=0), то заработала печать, smbclient стал возвращать список расшаренных ресурсов и заработали анонимные шары.

Правда именные шары (guest ok = no) пока не работают (запрашивают пароль, но не принимают его), но это уже дело десятое, скорее всего с username map что-то намудрил.

 

Совсем отключать apparmor не хочу, вещь полезная, буду разбираться.

Странно, что отключение сервиса не помогает. Но скорее всего что-то не так делаю.

Не посоветуете, где бы почитать про apparmor покороче и попроще? Он вроде бы попроще, чем selinux.

Профиль для Samba у меня установлен (файл /etc/apparmor.d/usr.sbin.smbd), скрипт /usr/share/samba/update-apparmor-samba-profile запускал (он сгенерировал правила для расшаренных каталогов), aa-status показывает, что профиль для Samba загружен (в режиме enforce), но видимо этого недостаточно.

Posted

Ну, собственно Samba AppArmor profile - Documentation / Server Guide - Ubuntu Community Hub и далее по ссылкам. 99% что что-то не так с путями, а в профиле они прибиты гвоздями, и в режиме ENFORCED вся активность пресекается.  У меня, несмотря на неоднократный опыт, каждая новая инсталляция требует ручной правки путей в профилях AppArmor, потому как или сам забудешь про это и сделаешь что-то кастомное при установке пакетов,  или в самих пакетах что-то поменялось, а профили мейнтейнеры поправить забыли. Отчасти поэтому на работе всех загоняю делать через анзибль, и лупить по рукам за действия в консоли - тоже все забывают про SELinux и подобные приблуды, и ручные правки конфигов и FS кончаются печально

Posted
4 часа назад, alibek сказал:

Наконец дошли руки поэкспериментировать.

 

Судя по всему мешает apparmor.

Отключение юнита (systemctl stop apparmor) не помогало, но когда отключил его в загрузчике GRUB (указал в параметрах apparmor=0), то заработала печать, smbclient стал возвращать список расшаренных ресурсов и заработали анонимные шары.

Правда именные шары (guest ok = no) пока не работают (запрашивают пароль, но не принимают его), но это уже дело десятое, скорее всего с username map что-то намудрил.

 

Совсем отключать apparmor не хочу, вещь полезная, буду разбираться.

Странно, что отключение сервиса не помогает. Но скорее всего что-то не так делаю.

Не посоветуете, где бы почитать про apparmor покороче и попроще? Он вроде бы попроще, чем selinux.

Профиль для Samba у меня установлен (файл /etc/apparmor.d/usr.sbin.smbd), скрипт /usr/share/samba/update-apparmor-samba-profile запускал (он сгенерировал правила для расшаренных каталогов), aa-status показывает, что профиль для Samba загружен (в режиме enforce), но видимо этого недостаточно.

Аппармор срет в dmesg обычно, у вас не так?

Posted

В аудите было что-то про denied, после этого я и начал проверять apparmor.

Например что-то вроде такого:

Цитата

kernel: audit: type=1400 audit(1737042742.132:262): apparmor="DENIED" operation="open" class="file" profile="smbd" name="/data/exchange/" pid=10296 comm="smbd[192.168.77" requested_mask="r" denied_mask="r" fsuid=65534 ouid=0

Сейчас переключил smbd в режим complain, на внешних устройствах все работает, а вот локально (smbclient -L localhost -N) ошибку доступа показывает.

Но уже прогресс и есть, куда смотреть.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.