Summary: | Регресс директивы include для переменной %i начиная с версии 4.16 | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | GordeevM <max.gordeef> |
Component: | samba | Assignee: | Evgeny Sinelnikov <sin> |
Status: | NEW --- | QA Contact: | qa-sisyphus |
Severity: | normal | ||
Priority: | P5 | CC: | alimektor, max.gordeef, shevchenkodyu, sin, zvn |
Version: | unstable | ||
Hardware: | x86_64 | ||
OS: | Linux |
Description
GordeevM
2024-08-19 10:55:11 MSK
Версия - samba-4.20.4-alt1 Шаги воспроизведения На сервере (от рута): echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf sysctl -f mkdir -p /data/$(ip route get 1.2.3.4 | awk '{print $7}' | xargs) chmod 777 -R /data/ echo "include = /etc/samba/smb-%i.conf" >> /etc/samba/smb.conf cat >> /etc/samba/smb-$(hostname -i).conf <<'EOF' [client_data] comment = Client Data path = /data/%i browseable = yes writable = yes force directory mode = 0770 force create mode = 0660 create mask = 0660 directory mask = 0770 EOF systemctl restart samba testparm На клиенте: smbclient -L dc -U testuser Ожидаемый результат: client_data в списке Enter SAMBA\testuser's password: Sharename Type Comment --------- ---- ------- media Disk media sysvol Disk netlogon Disk SHARE Disk Share directory for AD users client_data Disk Client Data IPC$ IPC IPC Service (Samba 4.14.10) Фактический результат: client_data нет в списке Password for [SAMBA\testuser]: Sharename Type Comment --------- ---- ------- media Disk media sysvol Disk netlogon Disk SHARE Disk Share directory for AD users IPC$ IPC IPC Service (Samba 4.20.4-alt1) Воспроизводится в P10 Не воспроизводится в P9: версия samba-4.14.10-alt2 (Ответ для GordeevM на комментарий #0) Исходя из финальной части вот этой задачи, получается, что проблема только в отображении: > https://bugzilla.samba.org/show_bug.cgi?id=15255#c8 > ... > substitution is working correctly > files all loaded and parsed correctly > shares accessible but not visible. > ... Давайте определимся со следующим: 0) Можно ли сказать, что 4.16.10 и старше проблема имеет место быть только в плане отображения - "shares accessible but not visible"? 1) Насколько данное поведение воспроизводится в последних релизах. Например, на 4.20.4 и старше? 2) В какой степени целесообразно подключаться к исправлению данной проблемы отображения шары доступной только для заданного ip-адреса? 3) Насколько это исправление актуально для ipv6? Исправление только для ipv4 выглядит полумерой, а для полноценного исправления необходимо строить стенды с ipv6. ______________ Если пункт 0) подтверждается, то данная проблема выглядит общей и на фоне множества других проблем не приоритетной. По мере появления ресурсов к ней можно вернуться, но в ближайшее время заниматься ей можно только опционально. Если сосвсем коротко, работать перестало это: /etc/samba/browseable-no.conf browseable = no available = no /etc/samba/browseable-yes.conf browseable = yes available = yes в /etc/samba stat ./browseable-yes-A.B.C.D.conf Файл: ./browseable-yes-A.B.C.D.conf -> browseable-yes.conf где A.B.C.D - адрес интерфейса сервера для доступа без ограничений. в /etc/samba/smb.conf: include = /etc/samba/browseable-no.conf include = /etc/samba/browseable-yes-%i.conf [service1] include = /etc/samba/browseable-yes.conf ... [service2] ... [service3] ... Т.е. сначала включается запрет на видимость и доступность всех сервисов (include = /etc/samba/browseable-no.conf), затем включается видимость и доступность, если подключение к интерфейсу сервера с адресом A.B.C.D Видимость и доступность service1 безусловная, а service2 и service2 не содержат include = /etc/samba/browseable-yes.conf и доступность и видимость зависит от того интерфейса, к которому происходит подключение. С точки зрения производительности выглядит, как необходимость запускать отдельные экземпляры smbd с разными конфигами в рантайме перечитывая дерево вложенных файлов, вычисляя всё это хозяйство для каждого отдельного ip-шника. Странно, что это, вообще, работает. А как это выглядит для ipv6? Или поддержка ipv6 не требуется? Кстати, а каково ожидание от пользователя? Получается, что один и тот же пользователь, обращаясь с разных узлов к одному и тому же серверу, должен получать разные ответы? (Ответ для Evgeny Sinelnikov на комментарий #4) > Странно, что это, вообще, работает. А как это выглядит для ipv6? Или > поддержка ipv6 не требуется? Работает хорошо. ipv6 не требуется. > Кстати, а каково ожидание от пользователя? Получается, что один и тот же > пользователь, обращаясь с разных узлов к одному и тому же серверу, должен > получать разные ответы? Да, именно так, это не зависит от пользователя. Потому что на один интерфейс сервера приходит трафик из сетей, откуда должно быть видно всё, а на другой интерфейс сервера приходит трафик из сети, откуда только ограниченный набор сервисов должен быть виден. (Ответ для zvn на комментарий #5) [...] > Да, именно так, это не зависит от пользователя. > Потому что на один интерфейс сервера приходит трафик из сетей, откуда должно > быть видно всё, а на другой интерфейс сервера приходит трафик из сети, > откуда только ограниченный набор сервисов должен быть виден. А указывается ip-адрес клиента или интерфейса на сервере? Кто прислал запрос или на какой ip-адрес пришёл запрос? (Ответ для Evgeny Sinelnikov на комментарий #6) > (Ответ для zvn на комментарий #5) > [...] > > Да, именно так, это не зависит от пользователя. > > Потому что на один интерфейс сервера приходит трафик из сетей, откуда должно > > быть видно всё, а на другой интерфейс сервера приходит трафик из сети, > > откуда только ограниченный набор сервисов должен быть виден. > > А указывается ip-адрес клиента или интерфейса на сервере? > Кто прислал запрос или на какой ip-адрес пришёл запрос? ... mkdir -p /data/$(ip route get 1.2.3.4 | awk '{print $7}' | xargs) ... Ну, да... ip-адрес, на который пришёл запрос. Никогда такой конфигурацией не пользовался. > Ну, да... ip-адрес, на который пришёл запрос. Никогда такой конфигурацией не
> пользовался.
Непосредственно Вам не предъявляли таких требований.
|