alibek Posted January 1, 2025 Posted January 1, 2025 ОС 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 — они пересоздались, но ничего не поменялось. Может у меня глаз замылился и ошибки в конфиге не замечаю? Логи смотрел, но они неудобные, слишком много текста и не указываются причины ошибок. По ним пока ничего не выяснил. Вставить ник Quote
MMM Posted January 3, 2025 Posted January 3, 2025 а в netstat / ss видно, что порт слушает? Вставить ник Quote
alibek Posted January 3, 2025 Author Posted January 3, 2025 Да, smbd порт 445 слушает. Да и кто-то ведь возвращает ошибку доступа (а не таймаут). Вставить ник Quote
alibek Posted January 4, 2025 Author Posted January 4, 2025 Похоже я испортил 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? А то у меня есть подозрение, что я их случайно отредактировал или пересоздал. Вставить ник Quote
alibek Posted January 5, 2025 Author Posted January 5, 2025 Установил на виртуальную машину Ubuntu 24, установил и запустил Samba — все работает. Сравнил все найденные tdb-файлы — каких-то значимых отличий не нашел. На всякий случай переписал их с виртульной машины (сохранив старые версии) — не помогло. Сравнил конфигурации (samba, apparmor, pam и все, что еще смог придумать) — тоже все более-менее одинаково. Удалил с машины все пакеты, относящиеся к samba (с ключом --purge), поискал файлы (у которых в названии есть samba или tdb), удалил вручную то, что могло относится к конфигурации. Переустановил Samba — не работает, все с теми же симптомами. Уже близок к тому, чтобы переустановить с нуля ОС. Это, конечно, что-то вроде переустановки Windows при любой проблеме, но я уже не знаю, где смотреть. Вставить ник Quote
alibek Posted January 5, 2025 Author Posted January 5, 2025 Похоже, что придется разбираться. Переустановил ОС, установил Samba, запустил, проверил — работает. Накатил ПО (пакеты snap и apt), восстановил home, восстановил отдельные файлы в /etc и /usr/share (не связанные с Samba). Запускаю Samba, пробую подключиться — та же ошибка. Вставить ник Quote
jffulcrum Posted January 5, 2025 Posted January 5, 2025 1 час назад, alibek сказал: Накатил ПО (пакеты snap У SNAP и Samba давняя взаимная любовь организмами, преимущественно ретирадного направления. Это видели? Предположу, что оно и в обратную сторону работает. Вставить ник Quote
alibek Posted January 5, 2025 Author Posted January 5, 2025 Через snap я устанавливал только небольшую часть ПО — Firefox (в дистрибутиве так, не стал менять), VSCode, Inkscape. В основном использую apt. По ссылке посмотрел, у меня домена и home-каталогов вообще нет. На всякий случай добавил параметр "template homedir", ничего не поменялось. Опять же, на свежеустановленной Ubuntu уже есть десяток установленных snap-пакетов, однако это работе Samba не мешало. По хорошему мне нужно было проверять работу Samba после каждого действия, но слишком уж это долго было бы, поленился. Наверное попробую на виртуальной машине в свободное время так сделать. Вставить ник Quote
alibek Posted January 16, 2025 Author Posted January 16, 2025 Наконец дошли руки поэкспериментировать. Судя по всему мешает 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), но видимо этого недостаточно. Вставить ник Quote
jffulcrum Posted January 16, 2025 Posted January 16, 2025 Ну, собственно Samba AppArmor profile - Documentation / Server Guide - Ubuntu Community Hub и далее по ссылкам. 99% что что-то не так с путями, а в профиле они прибиты гвоздями, и в режиме ENFORCED вся активность пресекается. У меня, несмотря на неоднократный опыт, каждая новая инсталляция требует ручной правки путей в профилях AppArmor, потому как или сам забудешь про это и сделаешь что-то кастомное при установке пакетов, или в самих пакетах что-то поменялось, а профили мейнтейнеры поправить забыли. Отчасти поэтому на работе всех загоняю делать через анзибль, и лупить по рукам за действия в консоли - тоже все забывают про SELinux и подобные приблуды, и ручные правки конфигов и FS кончаются печально Вставить ник Quote
sirmax Posted January 16, 2025 Posted January 16, 2025 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 обычно, у вас не так? Вставить ник Quote
jffulcrum Posted January 17, 2025 Posted January 17, 2025 С какой-то версии бубунты в dmesg не пишет, надо аудит включать Вставить ник Quote
alibek Posted January 17, 2025 Author Posted January 17, 2025 В аудите было что-то про 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) ошибку доступа показывает. Но уже прогресс и есть, куда смотреть. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.