| 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, varaksaaa, zvn |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| See Also: | https://bugzilla.altlinux.org/show_bug.cgi?id=55254 | ||
Версия
- 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-адрес, на который пришёл запрос. Никогда такой конфигурацией не
> пользовался.
Непосредственно Вам не предъявляли таких требований.
Ошибка актуальна для p11 и sisyphus. [sisyphus] samba-4.21.7-alt1.x86_64 [p11+387440] samba-4.21.7-alt1.x86_64 [p11] samba-4.20.8-alt2.x86_64 |
Для include до версии 4.16 работало, а теперь не работает. man smb.conf, раздел VARIABLE SUBSTITUTIONS %i the local IP address to which a client connected. Before 4.0.0 it could contain IPv4 mapped IPv6 addresses, now it only contains IPv4 or IPv6 addresses Похожие баги апстрима для других переменных: https://bugzilla.samba.org/show_bug.cgi?id=15243 https://bugzilla.samba.org/show_bug.cgi?id=15255