<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>24494</bug_id>
          
          <creation_ts>2010-11-03 17:41:44 +0300</creation_ts>
          <short_desc>Невозможно добавить пользователя из LDAP в системные группы</short_desc>
          <delta_ts>2012-10-31 16:39:14 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>alterator-ldap-users</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>distro-blocker</keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>23155</blocked>
    
    <blocked>27685</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gleb F-Malinovskiy">glebfm</reporter>
          <assigned_to name="Andrey Cherepanov">cas</assigned_to>
          <cc>Dmitriy.Kruglikov</cc>
    
    <cc>aen</cc>
    
    <cc>boyarsh</cc>
    
    <cc>cas</cc>
    
    <cc>dd</cc>
    
    <cc>fotonsalt</cc>
    
    <cc>george</cc>
    
    <cc>kharpost</cc>
    
    <cc>lav</cc>
    
    <cc>manowar</cc>
    
    <cc>sem</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>114809</commentid>
    <comment_count>0</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2010-11-03 17:41:44 +0300</bug_when>
    <thetext>В модуле не прописываются системные группы (wheel) и группы только что созданные в ldap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115247</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitriy Kruglikov">Dmitriy.Kruglikov</who>
    <bug_when>2010-11-13 21:13:24 +0300</bug_when>
    <thetext>Согласно строки
 [ $gid -lt 100 ] || write_enum_item &quot;$name&quot; &quot;$name&quot;
все группы, ниже 100, в список не попадают.
Кто, когда и из каких соображений принял такое решение - мне не ведомо.
Но предыдущий автор модуля сделал именно так.

Оторвать с руками? Без проблем.
А если такое поведение обосновано, то подтвердите.

Касаемо свежесозданных в LDAP групп, то весь модуль 
ldap-groups нужно переделывать в корне.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115249</commentid>
    <comment_count>2</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2010-11-13 21:16:46 +0300</bug_when>
    <thetext>(В ответ на комментарий №1)
&gt; Согласно строки
&gt;  [ $gid -lt 100 ] || write_enum_item &quot;$name&quot; &quot;$name&quot;
&gt; все группы, ниже 100, в список не попадают.
Это было сделано, чтобы не заблудится в куче групп, поэтому user-специфичные системные группы прибили явным списком.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115250</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitriy Kruglikov">Dmitriy.Kruglikov</who>
    <bug_when>2010-11-13 21:36:10 +0300</bug_when>
    <thetext>(В ответ на комментарий №2)
&gt; Это было сделано, чтобы не заблудится в куче групп, поэтому user-специфичные
&gt; системные группы прибили явным списком.
Тогда снимай баг...

А по списку групп, могу локальные группы пометить как-нибудь...
Например, дописать (l) ...
Или еще как...
Сделаете цветовыделение в списке, могу зеленую полосу...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115343</commentid>
    <comment_count>4</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2010-11-15 16:57:38 +0300</bug_when>
    <thetext>(В ответ на комментарий №3)
&gt; А по списку групп, могу локальные группы пометить как-нибудь...
&gt; Например, дописать (l) ...
&gt; Или еще как...
&gt; Сделаете цветовыделение в списке, могу зеленую полосу...
Не надо делать разукрашку. 
Я вижу четыре типа групп:
1. именованные локальные системные (wheel, scanner, disk и т.п.)
2. прочие локальные системные (например, postfix)
3. персональная группа пользователя LDAP
4. отдельно заведённые группы в LDAP.

По идее, в списке должны показываться группы 1 и 4. 2 для пользователя не нужна, 3 не имеет смысла отрывать от пользователя, пусть к нему всегда привязывается.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115922</commentid>
    <comment_count>5</comment_count>
    <who name="Дмитрий Державин">dd</who>
    <bug_when>2010-12-02 14:09:23 +0300</bug_when>
    <thetext>Ещё бы хотелось иметь возможность управлять списком групп, в которые пользователь включается при создании. Чтобы добавлять туда группы, отдельно заведённые в LDAP.

Сейчас этот список захардкоден как default_groups в /usr/lib/alterator/backend3/ldap-users

Предлагаю использовать для этих целей, например, /etc/alterator/ldap-groups/group-init-list</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115925</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitriy Kruglikov">Dmitriy.Kruglikov</who>
    <bug_when>2010-12-02 15:25:45 +0300</bug_when>
    <thetext>(В ответ на комментарий №5)
&gt; Ещё бы хотелось иметь возможность управлять списком групп
Согласен. Думаю над этим...
Кроме того, есть еще список групп для домена и Samba (Domain Admins, Domain Users, etc...)
Думаю, как вывести этот список в модуль и сделать его управляемым.

В связи с крайней загруженностью по работе беру тайм-аут на недельку...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122210</commentid>
    <comment_count>7</comment_count>
    <who name="AEN">aen</who>
    <bug_when>2011-06-18 18:06:32 +0400</bug_when>
    <thetext>Исправлено?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122229</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitriy Kruglikov">Dmitriy.Kruglikov</who>
    <bug_when>2011-06-18 19:38:30 +0400</bug_when>
    <thetext>Скорее, нет.
Сейчас не на чем, к сожалению.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123349</commentid>
    <comment_count>9</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2011-07-20 17:37:01 +0400</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; Исправлено?
Нет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123353</commentid>
    <comment_count>10</comment_count>
    <who name="Dmitriy Kruglikov">Dmitriy.Kruglikov</who>
    <bug_when>2011-07-20 18:54:03 +0400</bug_when>
    <thetext>(В ответ на комментарий №7)
&gt; Исправлено?

Обзавелся полигоном.
Могу привести модули к какому-то знаменателю.
Тут вопрос упирается в политики нумерования системных пользователей и групп.
На том я и остановился в свое время.

Суть проблемы в том, что ели у нас уже есть хоть один пользователь/группа в LDAP, а потом устанавливается некоторый демон, у которого свой пользователь и группа, то UID|GID могут быть созданы автоматически в области выше 5000, &quot;последний+1&quot;.

А хотелось бы &quot;видеть&quot; всех системных &lt; 499...

У себя локально я каких-то костылей  пробовал, но все оказалось малоприемлемо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123844</commentid>
    <comment_count>11</comment_count>
    <who name="AEN">aen</who>
    <bug_when>2011-08-10 20:50:20 +0400</bug_when>
    <thetext>Прошу предлагать возможные решения. Дмитрий описал проблему.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124279</commentid>
    <comment_count>12</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2011-08-19 16:08:08 +0400</bug_when>
    <thetext>Группы показываются в интерфейса с пометкой &apos;(local)&apos;, их можно выбрать. Но есть две проблемы:
а) нет назначенных системных групп при создании нового пользователя (/etc/alterator/ldap-groups/group-init-list есть, но группы оттуда не помечаются * как устанавливаемые по умолчанию);
б) выбранная системная группа не сохраняется. Добавляю wheel, перезапускаю alteratord и группа исчезает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124325</commentid>
    <comment_count>13</comment_count>
    <who name="Dmitriy Kruglikov">Dmitriy.Kruglikov</who>
    <bug_when>2011-08-21 11:25:35 +0400</bug_when>
    <thetext>Ну так как с политикой нумерации групп?
Потому как я не знаю, что и как прибивать гвоздями в модуль...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124372</commentid>
    <comment_count>14</comment_count>
    <who name="Fr. Br. George">george</who>
    <bug_when>2011-08-22 18:06:46 +0400</bug_when>
    <thetext>(В ответ на комментарий №13)
&gt; Ну так как с политикой нумерации групп?
&gt; Потому как я не знаю, что и как прибивать гвоздями в модуль...
По просьбе АЕН провожу экспертизу :P

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

Суть блокера — в этом. По-видимому, необходимо при создании LDAP-ной базы групп набивать её этими группами по умолчанию, и позаботиться о включении пользователя в них.

Вторая проблема — установка дополнительного софта, заводящего своих пользователей и группы, на сервер, и вообще всякое автозаведение ргупп. Для групп есть варианты:
1. Заранее прибить все возможные группы к LDAP-ной базе и надеяться, что пакет при установке не хакает /etc/group, а использует getent group и groupadd; предупредить админа, чтобы не выключал аутентификацию по LDAP при заходе на сервер (выключать логин можно, а вот getent должен работать)
2. Заранее прибить все возможные группы в /etc/group, а в LDAP организовать прямую синхронизацию

Третья проблема — установка дополнительного софта на клиенте. В первом случае придётся предупредить, что установка пакетов должна производиться только при работоспособном LDAP-е, а второй случай вообще не спасает :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124376</commentid>
    <comment_count>15</comment_count>
    <who name="Dmitriy Kruglikov">Dmitriy.Kruglikov</who>
    <bug_when>2011-08-22 19:33:02 +0400</bug_when>
    <thetext>(В ответ на комментарий №14)

&gt; 1. При добавлении LDAP-ного пользователя он должен входить в несколько
&gt; дополнительных групп по умолчанию, тех же, что и локальный (сейчас не входит ни
&gt; в одну).
На том и застрял...
Предположим, что в списке групп есть N локальных (на сервере) групп и M сетевых (в LDAP) групп. И что с ними делать в этом случае?
* Нет гарантии, что GID не пересекаются.
* На сервере (на котором крутится alteratord) тех локальных пользователей и быть-то не должно...
* Сервер (на котором LDAP) может быть и не смотрит в него. Там все локально, или LDAP в контейнере OpenVZ.

Типичная ситуация, когда пользователь из LDAP должен входит в админскую группу на локальной рабочей станции. Но ни alteratord, ни LDAP про эту локальную машинку и ее группы не знают.
 
&gt; Суть блокера — в этом. По-видимому, необходимо при создании LDAP-ной базы групп
&gt; набивать её этими группами по умолчанию, и позаботиться о включении
&gt; пользователя в них.
Базу набить группами можно.
И пользователей в эти группы включить.
Но тогда участник группы &quot;Админы&quot; будет админом на всех рабочих станциях.

&gt; Вторая проблема — установка дополнительного софта, заводящего своих
&gt; пользователей и группы, на сервер, и вообще всякое автозаведение ргупп.
Тут просится полиси и жесткое распределение GID по сервисам.
Тогда эти группы и в LDAP заводить можно/нужно.
Иначе получим перекрытие GID в локальном /etc/group и в LDAP.

&gt; Третья проблема — установка дополнительного софта на клиенте.
Ветвистость дерева вариантов не позволила мне единолично прибить гвоздями какое-либо решение для данного модуля.

А посему, нужно четко выработать политику, отразить ее в ТЗ, а потом что-то писать в код.

P.S.
И таки повынимать все &quot;гвозди&quot; из кода и вынести настройки политик в конфиги.
P.P.S.
Все больше склоняюсь к варианту, что если домен и LDAP, то про локальные группы забыть нужно.
Как минимум, для рабочих станций.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130998</commentid>
    <comment_count>16</comment_count>
    <who name="Fotons">fotonsalt</who>
    <bug_when>2012-05-03 12:02:27 +0400</bug_when>
    <thetext>Думаю, что проще будет создать спецгруппу в LDAP, например &quot;locgroups&quot; и только к ней подключать локальные группы...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130999</commentid>
    <comment_count>17</comment_count>
    <who name="Fotons">fotonsalt</who>
    <bug_when>2012-05-03 12:33:16 +0400</bug_when>
    <thetext>Ну, можно ещё в модуле альтератора вывести отдельным списком локальные группы...

P.S. На одном сайте уже решали проблему с локальным wheel и ldap:
http://www.gentoo.ru/content/ldap-sudo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131000</commentid>
    <comment_count>18</comment_count>
    <who name="Dmitriy Kruglikov">Dmitriy.Kruglikov</who>
    <bug_when>2012-05-03 12:41:19 +0400</bug_when>
    <thetext>(В ответ на комментарий №17)
&gt; Ну, можно ещё в модуле альтератора вывести отдельным списком локальные
&gt; группы...
&gt; 
&gt; P.S. На одном сайте уже решали проблему с локальным wheel и ldap:
&gt; http://www.gentoo.ru/content/ldap-sudo

Перечитайте внимательнейшим образом всё обсуждение...
Не проблема сделать костыль и прибить настройки локальной станции к локальному же LDAP... 
Но если вы хотите настроить произвольный сервер LDAP для ведения пользователей и групп для некоторого числа рабочих станций с произвольного компьютера, который в число тех рабочих станций не входит, тогда &quot;ой&quot;...

Потому как мне, в моих локальных группах, пользователи из LDAP не нужны.
А каким-либо образом править локальные группы на тех рабочих станциях возможности нет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131007</commentid>
    <comment_count>19</comment_count>
    <who name="Andrey Cherepanov">cas</who>
    <bug_when>2012-05-03 18:50:51 +0400</bug_when>
    <thetext>Проблему рано закрывать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131008</commentid>
    <comment_count>20</comment_count>
    <who name="Dmitriy Kruglikov">Dmitriy.Kruglikov</who>
    <bug_when>2012-05-03 19:45:06 +0400</bug_when>
    <thetext>(В ответ на комментарий №19)
&gt; Проблему рано закрывать.

Пока нет четкого понимания сути процесса, делать что-либо не имеет смысла.
Делать подпорки для частных случаев, которые потом будут вызывать больше проблем, чем отсутствие решения, мне не очень хочется...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131186</commentid>
    <comment_count>21</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2012-05-12 15:47:31 +0400</bug_when>
    <thetext>Возможно стоит посмотреть на libnss-role?
Он позволяет задать на машине соответствие между ролями (т.е. группами из LDAP) и локальными группами.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134209</commentid>
    <comment_count>22</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2012-10-26 10:52:02 +0400</bug_when>
    <thetext>alterator-ldap-groups-0.6.1-alt1 -&gt; sisyphus:

* Thu Oct 25 2012 Andrey Cherepanov &lt;cas@altlinux&gt; 0.6.1-alt1
- Move init script from firsttime.d to hostname.d hooks directory.
  Please, run /etc/hooks/hostname.d/91-ldap-groups manually
  to create initial groups for existing domain (ALT #24494)
- Obsoletes alterator-ldap-groups-school-server package
- Hide registered workstations groups (with trailing $)
- Support School Server specific default groups. If they are
  unnecessary, just remove it manually</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>