Bug 39758

Summary: Неверное имя компьютера
Product: Branch p9 Reporter: Арбичев Игорь <arbich>
Component: sambaAssignee: Evgeny Sinelnikov <sin>
Status: CLOSED FIXED QA Contact: qa-p9 <qa-p9>
Severity: normal    
Priority: P5 CC: mike, zerg
Version: не указана   
Hardware: x86_64   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=39761
https://bugzilla.altlinux.org/show_bug.cgi?id=41234

Description Арбичев Игорь 2021-03-04 17:37:16 MSK
При запуске файлового менеджера Dolphin в терминале выдается сообщение:

[admin@comp-core2-duo-4e3cb5 ~]$ dolphin
kf5.kio.core: "Невозможно войти в папку tags:/."
kf5.kio.core: Your samba 'netbios name' parameter was longer than the authorized 15 characters.
 It may be because your hostname is longer than 13 and samba default 'netbios name' defaults to 'hostname-W', here: "comp-core2-duo-4e3cb5-W" 
 If that it is the case simply define a 'netbios name' parameter in /etc/samba/smb.conf at most 15 characters long

Я посчитал - в моем случае имя компьютера состоит из 21 символа. Неужели в установщике Alt KWorkstation нельзя было встроить проверку сгенерированного автоматически имени компьютера на превышение допустимой длины 'netbios name'?
Comment 1 Sergey V Turchin 2021-03-05 11:04:07 MSK
samba сама может отрезать себе нужное кол-во символов от имени хоста.
Comment 2 Evgeny Sinelnikov 2021-03-05 11:58:09 MSK
(Ответ для Sergey V Turchin на комментарий #1)
> samba сама может отрезать себе нужное кол-во символов от имени хоста.

Я с таким как-то не сталкивался. Видимо, потому что не давал таких длинных имён хостам. Нужно проверять.

Я думаю, что это не проблема samba. Думаю, что это проблема alterator-net-eth на текущий момент. Это если мы хотим согласованности в задании NETBIOS имени и имени хоста.

Вообще, хотелось бы определиться - какое поведение мы хотим для таких случаев, когда имя хоста более 15 символов?
Comment 3 Арбичев Игорь 2021-03-05 12:46:42 MSK
Я тоже думаю, что это проблема не samba, а установщика. Установщик должен проверять длину автоматически сгенерированного им имени компьютера, чтобы отсекать недопустимые значения.
Comment 4 Evgeny Sinelnikov 2021-03-05 13:56:05 MSK
(In reply to Арбичев Игорь from comment #3)
> Я тоже думаю, что это проблема не samba, а установщика. Установщик должен
> проверять длину автоматически сгенерированного им имени компьютера, чтобы
> отсекать недопустимые значения.

Недопустимые в каком плане. В плане того, что допустимо в протоколах проекта samba? Не думаю. Ведь в системе може и не быть samba. Или smb-сервис может не использоваться.

Делать при некоторых условиях предупреждение и предлагать изменить имя более удачный вариант я думаю. И не к инсталлятору это имеет отношение, а к пакету управляющему заданием имени хоста - alterator-net-eth.
Comment 5 Evgeny Sinelnikov 2021-03-05 13:57:26 MSK
Ну, хотя я понял. К генератору хостнейма в иснталляторе это тоже относится. Я не понимаю зачем делать такой длинный хостнейм.
Comment 6 Sergey V Turchin 2021-03-05 15:02:00 MSK
(Ответ для Evgeny Sinelnikov на комментарий #2)
> Вообще, хотелось бы определиться - какое поведение мы хотим для таких
> случаев, когда имя хоста более 15 символов?
Чтоб ругалось, но работало. Разве есть смысл в другом поведении?
Comment 7 Sergey V Turchin 2021-03-05 15:12:05 MSK
Повесил bug#39758
Comment 8 Арбичев Игорь 2021-03-06 13:18:35 MSK
(Ответ для Sergey V Turchin на комментарий #7)
> Повесил bug#39758

Что вы хотели этим сказать?
Comment 9 Michael Shigorin 2021-03-06 21:11:39 MSK
(Ответ для Арбичев Игорь на комментарий #8)
> > Повесил bug#39758
> Что вы хотели этим сказать?
Думаю, zerg@ про bug#39761 (гм, там тоже перевели? а ну-ка: ошибка#39761)
Comment 10 Sergey V Turchin 2021-03-09 13:49:16 MSK
(Ответ для Sergey V Turchin на комментарий #1)
> samba сама может отрезать себе нужное кол-во символов от имени хоста.
А может она и так это делает и ругается на всякий, т.к. различия имени в smb:/ и остальных местах не есть хорошо.
Comment 11 Арбичев Игорь 2021-03-09 18:31:47 MSK
(Ответ для Арбичев Игорь на комментарий #8)
> (Ответ для Sergey V Turchin на комментарий #7)
> > Повесил bug#39758
> 
> Что вы хотели этим сказать?

Уважаемый Сергей!
Я прошу вас ответить мне конкретно, вы будете заниматься устранением этой ошибки в инсталляторе Alt KWorkstation? Если вы не хотите этим заниматься, то я напишу письмо Михаилу Шигорину, и пусть он примет окончательное решение.
Comment 12 Арбичев Игорь 2021-03-09 18:37:14 MSK
Я вспомнил, что пару лет назад в переписке со мной Михаил Шигорин сказал, что в KDE вообще все плохо с samba. Ну так это еще один пример того, что действительно плохо.
Comment 13 Michael Shigorin 2021-03-10 10:26:19 MSK
(Ответ для Арбичев Игорь на комментарий #12)
> Я вспомнил, что пару лет назад в переписке со мной Михаил Шигорин сказал,
> что в KDE вообще все плохо с samba.
Что-то не помню такого -- возможно, или сказал не я, или сказал иное (что Вы запомнили так, а я вообще забыл).

> Если вы не хотите этим заниматься, то я напишу письмо Михаилу Шигорину,
> и пусть он примет окончательное решение.
Ну я-то отвечаю за эльбрусы, а не КРабочую станцию и тем более за zerg@.

А так изложенное sin@ в comment 4 поддерживаю.
Comment 14 Sergey V Turchin 2021-03-10 11:04:57 MSK
(Ответ для Арбичев Игорь на комментарий #11)
> Я прошу вас ответить мне конкретно, вы будете заниматься устранением этой
> ошибки в инсталляторе Alt KWorkstation?
Будем, поэтому завёл ошибка#39761
Но, позже, т.к. обходной доступен даже чайнику как при установке так и после.
Comment 15 Sergey V Turchin 2021-03-10 11:07:12 MSK
Тут ещё раз спрошу: samba сама может отрезать себе нужное кол-во символов от имени хоста? Она это делает или нет? Она ругается, но работает или встаёт в позу?
Comment 16 Evgeny Sinelnikov 2021-03-10 15:42:08 MSK
(In reply to Sergey V Turchin from comment #15)
> Тут ещё раз спрошу: samba сама может отрезать себе нужное кол-во символов от
> имени хоста? Она это делает или нет?

Я не очень понимаю смысла этого вопроса. Что имеется в виду под действием "отрезать себе нужное кол-во символов"? Мне кажется не логичным что-то резать.

Я проверил - написал вот такой скрипт на питоне:
sin@xpi ~ $ cat samba-netbiosname.py 
#!/usr/bin/python3

from samba import getopt as options
import optparse

parser = optparse.OptionParser()
sambaopts = options.SambaOptions(parser)
lp = sambaopts.get_loadparm()

print(lp.get("netbiosname"))

1) Проверка без netbios name в smb.conf для короткого hostname:

sin@xpi ~ $ grep netbios /etc/samba/smb.conf
#       netbios name = XPI
sin@xpi ~ $ hostname
xpi
sin@xpi ~ $ ./samba-netbiosname.py 
XPI

2) Проверка без netbios name в smb.conf для длинного hostname:

sin@xpi ~ $ sudo hostname super-pupper-xpi-computer-for-long-name
[sudo] password for sin:
sin@xpi ~ $ ./samba-netbiosname.py 
SUPER-PUPPER-XPI-COMPUTER-FOR-LONG-NAME

Вывод - не режет.

3) Проверка с заданным netbios name в smb.conf для длинного hostname:

sin@xpi ~ $ hostname
super-pupper-xpi-computer-for-long-name
sin@xpi ~ $ ./samba-netbiosname.py 
SUPER-PUPPER-XPI-COMPUTER-FOR-LONG-NAME

sin@xpi ~ $ grep netbios /etc/samba/smb.conf
        netbios name = XPI
sin@xpi ~ $ ./samba-netbiosname.py 
XPI


> Она ругается, но работает или встаёт в
> позу?

Честно говоря, я пока не видел для рассматриваемой проблемы вывода о том, что samba на что-то ругается. Вывод был от kf5.kio.core и непонятно, где эта проверка делается.

Я снова проверил:

clw2 ~ # hostname
clw2.domain.alt

clw2 ~ # sudo mcedit /etc/samba/smb.conf

clw2 ~ # grep netbios /etc/samba/smb.conf
#       netbios name = CLW2

clw2 ~ # hostname super-computer-for-long-name-clw2.domain.alt

clw2 ~ # kinit administrator
Password for administrator@DOMAIN.ALT: 
Warning: Your password will expire in 35 days on Wed Apr 14 22:36:00 2021

clw2 ~ # net ads join -k
Our netbios name can be at most 15 chars long, "SUPER-COMPUTER-FOR-LONG-NAME-CLW2" is 33 chars long
Invalid configuration.  Exiting....
Failed to join domain: The format of the specified computer name is invalid.

______________________

Вывод - не режет, но урезанный вариант нужно явно прописывать в smb.conf.

Ещё один вывод kf5.kio.core, похоже, возвращает ошибку от samba.
Comment 17 Sergey V Turchin 2021-03-10 16:06:55 MSK
(Ответ для Evgeny Sinelnikov на комментарий #16)
> Ещё один вывод kf5.kio.core, похоже, возвращает ошибку от samba.
По любому не сам выдумывает.
https://www.novell.com/documentation/open-enterprise-server-2018/file_samba_cifs_lx/data/bc855e3.html?view=print
Comment 18 Sergey V Turchin 2021-03-10 16:09:15 MSK
(Ответ для Evgeny Sinelnikov на комментарий #16)
> Our netbios name can be at most 15 chars long,
> "SUPER-COMPUTER-FOR-LONG-NAME-CLW2" is 33 chars long
> Invalid configuration.  Exiting....
> Вывод - не режет
Значит, ругается и не работает.

>, но урезанный вариант нужно явно прописывать в smb.conf.
А почему бы ей по умолчанию самой не отрезать?
Comment 19 Evgeny Sinelnikov 2021-03-10 18:49:25 MSK
(In reply to Sergey V Turchin from comment #17)
> (Ответ для Evgeny Sinelnikov на комментарий #16)
> > Ещё один вывод kf5.kio.core, похоже, возвращает ошибку от samba.
> По любому не сам выдумывает.
> https://www.novell.com/documentation/open-enterprise-server-2018/
> file_samba_cifs_lx/data/bc855e3.html?view=print

Я имел в виду, что строка ошибки, судя по всему, прилетает из libsmclient или другой samba-библиотеки.
Comment 20 Evgeny Sinelnikov 2021-03-10 19:46:46 MSK
(In reply to Sergey V Turchin from comment #18)
> (Ответ для Evgeny Sinelnikov на комментарий #16)
> > Our netbios name can be at most 15 chars long,
> > "SUPER-COMPUTER-FOR-LONG-NAME-CLW2" is 33 chars long
> > Invalid configuration.  Exiting....
> > Вывод - не режет
> Значит, ругается и не работает.
> 
> >, но урезанный вариант нужно явно прописывать в smb.conf.
> А почему бы ей по умолчанию самой не отрезать?

Я против такого неявного варианта решения, поскольку появляется множество неоднозначных, трудновосроизводимых сайд-эффектов.

Более того, это совершенно нерабочий вариант для машины в домене, у которой доменное имя хоста прилетает из ниоткуда путём отрезания. При этом получается странная конфигурация, когда имя хоста не соответствует имени NETBIOSNAME. Этот вариант нужно проверять на работе в режиме длинного имени хоста и явно заданного, укороченного NETBIOSNAME.

Какую задачу мы хотим решить?

Я вижу условия и решение таким образом:
- генератор имён сейчас задаёт слишком длинные имена узлов;
- для имён узлов больше 15 символов, возникает сбой при работе с библиотеками и протколами samba (обращение к сети, ввод в домен);
- если samba не используется, то проблема не возникает;
- проблема возникает при явном участии пользователя, который (на этапе установки или на этапе смены имени хоста);
- мы можем минимизировать неоднозначность и неудобство от такой нецелостной конфигурации за счёт введения проверок и предупреждений на этапе использования наших графических инструментов (в консольном виде пользователь/администратор столкнётся в проблемой явно);
- в случае попытки задания имени слишком длинного имени хоста, в alterator-net-eth можно выкатить диалог с предупреждением и предложением выбрать вариант решения:
 + оставить, как есть;
 + урезать имя хоста;
 + указать урезанный вариант имени хоста в smb.conf.
Comment 21 Sergey V Turchin 2021-03-11 10:32:29 MSK
(Ответ для Evgeny Sinelnikov на комментарий #20)
> выкатить диалог
Такое нужно искоренять. Без всплывающих выкатываний, пожалуйста.
Comment 22 Evgeny Sinelnikov 2021-03-11 13:12:38 MSK
(Ответ для Sergey V Turchin на комментарий #21)
> (Ответ для Evgeny Sinelnikov на комментарий #20)
> > выкатить диалог
> Такое нужно искоренять. Без всплывающих выкатываний, пожалуйста.

Ну, я не знаю как реагировать на необоснованные требования.
Допустим. Пусть всплывающие диалоги - это плохо и дурной стиль (кстати, а каком смысле?).

Что мы имеем?

- у нас одна и та же настройка (имя хоста) оказывается задействована в разных службах;
- и одна из этих служб (samba) фиксирует собственные дополнительные ограничения на это имя хоста;
- у сущности, которая соответствует имени хоста, в этой службе есть специальное название - NETBIOSNAME (или netbios name), которое задаётся в /etc/samba/smb.conf
- при этом, имя хоста влияет на netbios name в случае, если эта опция не задана явно.

Вот какой вариант решения я вижу по этому поводу (пока без деталей реализации):
- нужно вместе в именем хоста иметь возможность явно задавать netbios name;
- при этом требуется сохранить возможность задать любую конфигурацию, в том числе и несогласованную для какого либо варианта использования (ну, не всем нужна samba, скажем так);
- однако хотелось бы предоставить пользователю информацию об ограничениях, к которым приводит конфигурация несогласованная для какого либо варианта (в данном случае, слишком длинное имя хоста).

Будут при этом всплывать диалоги или нет - вопрос второй или даже третий. Могу предложить другой вариант доработки alterator-net-eth:
- в этот модуль нужно добавить дополнительное более ввода и checkbox для управления netbios name;
- если checkbox не включен, то netbios name не меняется (остаётся, как есть);
- при этом, если эта опция не задана, а имя хоста оказалась более 15 символов, то хотелось бы получит в том или ином виде предупреждение;
- возможно, предупреждение в виде диалога - это лишнее и достаточно строки с пояснением под checkbox'ом вида: "данная настройка позволяет задать имя хоста в сетях windows (netbios name), имя хоста должно удовлетворять следующим ограничениям".

Однако хотелось бы определиться - насколько гибридный вариант с различающимися именем хоста и netbios name технически актуальна? Можно ли рассчитывать, что такой вариант, в принципе, стоит рассматривать как поддерживаемый?

Ещё один вариант - это не добавлять дополнительное поле в alterator-net-eth для netbios name, а только один checkbox - "совместимость с имени хоста с сетями windows (netbios name)". И, если эта настройка, задана, то ограничивать допустимый хостнейм 15 символами.

Ref:
- https://www.zubairalexander.com/blog/windows-computer-name-best-practices-and-recommendations/
"Computer name and NetBIOS name are the same. NetBIOS name is the technical name, but people often find it easier to use the term Computer name."

PS: Кстати, не пора ли перенести логику управления именем хоста из alterator-net-eth в отдельный модуль и, соответственно, в отдельное окно инсталлятора?
Ведь кроме имени хоста имеется ещё имя домена, которая то ли задана, то ли не задана. Имеется два источника хранения настроек имени хоста: /etc/sysconfig/network и /etc/hostname. А тут вот ещё этот netbios name появился.
Comment 23 Sergey V Turchin 2021-03-11 13:41:23 MSK
(Ответ для Evgeny Sinelnikov на комментарий #22)
> Ну, я не знаю как реагировать на необоснованные требования.
Запустите `alterator-standalone net-eth` и представьте, что по нажатию любой из кнопок вам выкатитсья по 3, как-минимум, различных диалога с различными настройками и вопросами про то, о чем вы до выкатывания конкретного диалога никогда в жизни не догадаетесь.

> Пусть всплывающие диалоги - это плохо и дурной стиль
В данном контексте да.
Comment 24 Sergey V Turchin 2021-03-11 13:44:44 MSK
(Ответ для Evgeny Sinelnikov на комментарий #22)
> Ещё один вариант - это не добавлять дополнительное поле в alterator-net-eth
> для netbios name, а только один checkbox - "совместимость с имени хоста с
> сетями windows (netbios name)". И, если эта настройка, задана, то
> ограничивать допустимый хостнейм 15 символами.
Мне нравится. В справке это не забыть отразить про 15.
Comment 25 Арбичев Игорь 2021-03-14 12:53:00 MSK
"- генератор имён сейчас задаёт слишком длинные имена узлов;"
Абсолютно здравая мысль! Я не понимаю, почему нельзя задушить проблему в зародыше - внести изменения в алгоритм работы генератора имен, чтобы он не выдавал имена, которые не нравятся самбе.
Comment 26 Sergey V Turchin 2021-07-29 10:17:26 MSK
Исправление давно в p9.