Автор Тема: Вход в домен в rc1-centaurus  (Прочитано 6849 раз)

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Re: Вход в домен в rc1-centaurus
« Ответ #15 : 17.07.2013 15:04:39 »
1. При авторизации сама samba интерпретирует пользователя как принадлежащего группе, но локальная система не знает о существовании группы созданной в ldap.
И не должна. Сейчас группы маппируются по gid на системные на клиенте. Трансляция и членство в чистых Samba-группах не реализовано на клиенте.
Цитировать
2. netlogon вешать возможно либо общий, либо netlogon=%u. Однако это проблемно в виду "человеческого фактора".
Он по умолчанию один для всех.
Андрей Черепанов (cas@)

Оффлайн ApB

  • Участник
  • *
  • Сообщений: 412
Re: Вход в домен в rc1-centaurus
« Ответ #16 : 17.07.2013 15:39:23 »
По поводу samba - технически есть разбитие на группы, однако эти группы не функциональны на уровне доступа к файловой системе, при чём, файловой системе непосредственно на домене. И к файловой системе получает доступ просто пользователь, без какой-либо привязки к группе. И причём тут на клиенте, если я пытаюсь получить доступ к шаре на домене?

 "netlogon" один для всех. Но это не константа, да и как централизованно монтировать сетевые ресурсы для различных групп с различными параметрами без его помощи, или  в зависимости от ... групп? Или я что-то не понимаю?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Re: Вход в домен в rc1-centaurus
« Ответ #17 : 17.07.2013 16:28:30 »
По поводу samba - технически есть разбитие на группы, однако эти группы не функциональны на уровне доступа к файловой системе, при чём, файловой системе непосредственно на домене. И к файловой системе получает доступ просто пользователь, без какой-либо привязки к группе. И причём тут на клиенте, если я пытаюсь получить доступ к шаре на домене?
Потому что проблема именно на клиенте.
Группы Samba — да, не функциональны. А вот Unix-группы (даже без маппирования на системные) — вполне работоспособны. Так, можно завести группу в LDAP, залогиниться доменным пользователем и выставить эту группу для созданного им каталога. Известная проблема: нельзя удалённо +w (доступ на запись) добавить для это группы. Но группы работоспособны.
Цитировать
"netlogon" один для всех. Но это не константа, да и как централизованно монтировать сетевые ресурсы для различных групп с различными параметрами без его помощи, или  в зависимости от ... групп? Или я что-то не понимаю?
pam_mount с правильными параметрами монтирует. Группы тут постолько-поскольку, потому что беруться из LDAP посредством nss. Запустите getent group на клиенте.
Андрей Черепанов (cas@)

Оффлайн ApB

  • Участник
  • *
  • Сообщений: 412
Re: Вход в домен в rc1-centaurus
« Ответ #18 : 18.07.2013 16:38:19 »
А как интерпретировать сказанное в отношении win-клиентов (getent group, pam_mount), или я что-то неправильно понял?
Проблема на клиенте - тоже вопрос, ибо вроде как сервер сообщает login script = *, где * может быть как постоянным значением, так и переменным (%g, %u) что соответствует пользователю и группе и сейчас оно просто игнорируется, однако, принадлежность к группе при указании группы в параметрах шары в admin user и valid user - принадлежность к определённой группе вполне отрабатывает. Я не могу понять, какая может быть проблема клиента в интерпретации переданного значения?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Re: Вход в домен в rc1-centaurus
« Ответ #19 : 18.07.2013 16:48:56 »
А как интерпретировать сказанное в отношении win-клиентов (getent group, pam_mount), или я что-то неправильно понял?
C Win-клиентами не проверял из-за отсутствия тесткейсов.
Цитировать
Проблема на клиенте - тоже вопрос, ибо вроде как сервер сообщает login script = *, где * может быть как постоянным значением, так и переменным (%g, %u) что соответствует пользователю и группе и сейчас оно просто игнорируется, однако, принадлежность к группе при указании группы в параметрах шары в admin user и valid user - принадлежность к определённой группе вполне отрабатывает. Я не могу понять, какая может быть проблема клиента в интерпретации переданного значения?
В /etc/samba/smb.conf прибито
logon script = netlogon.bat
P.S. Так что сделать-то предлагаете?
Андрей Черепанов (cas@)

Оффлайн ApB

  • Участник
  • *
  • Сообщений: 412
Re: Вход в домен в rc1-centaurus
« Ответ #20 : 18.07.2013 17:18:17 »
Для начала вопрос - как прибито? Посредством чего? В исходнике?
Я до последнего обновления samba использовал %u в качестве значения logon script, а сейчас вообще переменные не воспринимаются.
Вариантов несколько, но тут встречный вопрос(ы): Что Вы планируете в пределах платформы на будущее? Вспоминая сказанное ранее - переход на функционал smb4 после её стабилизации.
В зависимости от ответа и технической возможности предполагаемые варианты:
- Самый нативный - расшарить переменные или ввести в конфигурационный файл доп значение, в котором возможно использовать переменную.
- Добавить к группе возможность прикручивать скрипт через веб-интерфейс.
- Попробовать получить значение группы встроенными средствами ОС и реализовывать его через единый netlogon и определение групп непосредственно клиентом во время авторизации с публикованием рекомендации в описании wiki по настройке домена при авторизации win-клиентов =) Вот только этим вариантом решения, в виду невозможности реализовать иные, я сейчас и занялся ... пока не преуспел :-/

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Re: Вход в домен в rc1-centaurus
« Ответ #21 : 18.07.2013 17:41:35 »
А что в скрипте будет?
Ведь по аналогии (http://fts.ifac.cnr.it/cgi-bin/dwww/usr/share/doc/samba-doc/examples/logon/ntlogon/README.gz) можно сделать:
[netlogon]
        path = /usr/local/samba/netlogon
        writeable = no
        guest ok = no
        root preexec = /usr/local/samba/bin/ntlogon --user=%U  --os=%m
        root postexec = rm /usr/local/samba/netlogon/%U.bat
См. также http://www.ast.cam.ac.uk/~rgm/cirsi/samba/docs/faq/page4.html и http://dudi.wordpress.com/2009/10/20/automatic-logon-script-for-windows-and-samba/
« Последнее редактирование: 18.07.2013 17:51:25 от Skull »
Андрей Черепанов (cas@)

Оффлайн ApB

  • Участник
  • *
  • Сообщений: 412
Re: Вход в домен в rc1-centaurus
« Ответ #22 : 18.07.2013 18:07:35 »
А что в скрипте будет?
В каком из них? =)
root preexec = > необходимо сделать ссылку на некий script.sh %U, в котором  ... предположим по
net rpc user info $1 -U admin%pass получаить список групп, к которым пользователь принадлежит ... можно с (..| grep -v SomeParam ) если необходимо что-то исключить. Вот только пока ума не приложу, как передать полученные значения (построчно) как перечень необходимых к исполнению файлов для win-машин в директории для исполнения.
Также напрягает, что в открытом виде будет пароль храниться в файле.
Кстати ... я глупость написал. Всё таки переменная %G работает (именно %G а не %g)... но как %U в более ранних версиях samba.
P.S. За линки спасибо =)

« Последнее редактирование: 19.07.2013 08:25:04 от ApB »

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Re: Вход в домен в rc1-centaurus
« Ответ #23 : 19.07.2013 13:35:47 »
А что в скрипте будет?
В каком из них? =)
В .bat
Андрей Черепанов (cas@)

Оффлайн ApB

  • Участник
  • *
  • Сообщений: 412
Re: Вход в домен в rc1-centaurus
« Ответ #24 : 20.07.2013 19:38:38 »
Вариант:
Для smb.conf в раздел netlogon параметр root preexec:
root preexec = net rpc user info %U -U login%pass >> "\files\netlogon\gp_tmp\%U"        ///Вариант спорный ... надо выделить просто отдельную шару для временных файлов ... наверно =)
Получаем список групп, в которые входит пользователь и пишем а файл с именем пользователя вывод того, вкакие группы входит. Неприятным моментом остаётся то, что пароль тут лежит в открытом виде ... однако .. может получится сделать "nologin" для пользователя от которого производятся системные запросы.
В состав самого netlogon.bat, при login script=netlogon.bat  пихаем следующее:
@echo off
SetLocal EnableDelayedExpansion
set /a c=0
for /f "UseBackQ Delims=" %%A IN ("\\server\netlogon\gp_tmp\%USERNAME%") do (
  set /a c+=1
  if !c!==4 set "a=%%A"
start "%%A".bat
)
Тут уже вин-клиент исполняет bat-файл, в функции которого входит построчный разбор файла, куда попал вывод выполнения root preexec и производится попытка вызова файла с именем из строки разбираемого файла + ".bat"
Таким образом, в состав исполняемых файлов попадают все файлы контроля групп, в которые входит пользователь.
В силу того, что я пихаю в эти файлы не только то, что исполняется от имени пользователя (больше чем монтирование шар и настройка почтовых клиентов и ярлыков для web-ресурсов на рабочем столе пользователя на манер ULTEO, ... etc), если кто буде заморачиваться с необходимостью исполнения чего бы то ни было от имени привилегированного пользователя (от монтирования шар для пользователей у которых будут изъяты права powerusers до установки приложений и изменения системных параметров), есть вариант использования программулинки adminlink http://admilink.narod.ru/admilink.htm ... пока ничего интереснее мне найти не удалось =)

Соответственно в директорию netlogon пихаем скрипты, с именем равным имени группы+.bat, или читаем ман к adminlink и ... =)
Для батников ... есть вариант использования штуки типа bat_to_exe_converter, позволяющий перегнать батник в exe файл и скрыть его исполнение.

P.S. За кривое решение чур не пинать - проращиваем руки, откуда получается  ;D
« Последнее редактирование: 20.07.2013 19:51:05 от ApB »

Оффлайн ApB

  • Участник
  • *
  • Сообщений: 412
Re: Вход в домен в rc1-centaurus
« Ответ #25 : 05.08.2013 13:19:04 »
Вариант, что описал ранее не совсем взлетел, так как в ответ на
root preexec = net rpc user info %U -U login%passПолучал ответ имени пользователя = root
в то же время исполнение net rpc user info от имени доменного пользователя вызывало сообщение "Failed to get groups for '%U' with error Could not map names to SID's", хотя если написать имя пользователя константой - всё взлетает и выдаётся требуемый ответ.
вариант какой: привязать переменную к результату исполнения команды whoami и запихать её в net rpc user info и всё это положить в виде коротенького скрипта со ссылкой на него preexec в  параметрах шары netlogon, но разместить сам скрипт в недоступном для samba-пользователей месте.
На текущий момент вариант рабочий, Неприятным моментом данного решения является:
  • в вывод принадлежности к группам попадает не одна обработка данного файла, таким образом скрипты самих групп могут исполняться не раз, но это пресекается проверками в самих скриптах.
  • необходимо удалять файл групп из шары по завершении его исполнения (postexec), иначе результат дописывается в конец файла.