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

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

    <bug>
          <bug_id>4388</bug_id>
          
          <creation_ts>2004-06-17 13:34:52 +0400</creation_ts>
          <short_desc>Samba+LDAP - проблемы с созданием машинных аккаунтов</short_desc>
          <delta_ts>2006-02-17 18:50:59 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>samba</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>NOTABUG</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vladimir Lettiev">crux</reporter>
          <assigned_to name="Evgeny Sinelnikov">sin</assigned_to>
          <cc>sin</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15200</commentid>
    <comment_count>0</comment_count>
    <who name="Vladimir Lettiev">crux</who>
    <bug_when>2004-06-17 13:34:53 +0400</bug_when>
    <thetext>Имеется сервер c samba-3.0.3-alt1.1, в качестве бэкенда для хранения базы
пользователей используется ldap. Системные пользователи также хранятся в ldap
(настроен nss_ldap, pam_ldap). При создании машинных аккаунтов наблюдается такая
ошибка:

[root@fs samba]# pdbedit -d 1 -a -m testcomputer
ldapsam_modify_entry: Failed to add user dn=
uid=testcomputer$,ou=Computers,dc=syktsu,dc=ru with: Object class violation
        object class &apos;sambaSamAccount&apos; requires attribute &apos;sambaSID&apos;
ldapsam_add_sam_account: failed to modify/add user with uid = testcomputer$ (dn
= uid=testcomputer$,ou=Computers,dc=syktsu,dc=ru)
Unable to add machine! (does it already exist?)

Если предварительно создать в LDAP нормальный posixAccount, то попытка добавить
аттрибуты sambaSamAccount с помошью pdbedit также не дают никаких результатов.

Если создать системного пользователя командой: &apos;useradd -g machines
testcomputer$&apos;, то последующая команда &apos;pdbedit -a -m testcomputer&apos; вполне
нормально срабатывает.

Т.о. требуется обязательное наличие локального системного пользователя в
/etc/passwd для машинных аккаунтов, что не совсем то, что хотелось...

Я попытался разобраться в проблеме. Действительно на bugzilla.samba.org висят
пара багов по подобной проблеме:
https://bugzilla.samba.org/show_bug.cgi?id=623
https://bugzilla.samba.org/show_bug.cgi?id=1052
Но они до сих пор в состоянии NEW и неизвестно возьмуться ли разрабботчики
решать эту проблему...

Просмотрев код pdbedit.c я наткнулся на любопытный момент:
pdbedit.c:508
        if ((pwd = getpwnam_alloc(machineaccount))) {
                if (!NT_STATUS_IS_OK(pdb_init_sam_pw( &amp;sam_pwent, pwd))) {
                        fprintf(stderr, &quot;Could not init sam from pw\n&quot;);
                        passwd_free(&amp;pwd);
                        return -1;
                }
                passwd_free(&amp;pwd);
        } else {
                if (!NT_STATUS_IS_OK(pdb_init_sam (&amp;sam_pwent))) {
                        fprintf(stderr, &quot;Could not init sam from pw\n&quot;);
                        return -1;
                }
        }

Т.е. в зависимости от того, что вернула getpwnam_alloc() по разному
инициализируются машинные аккаунты. Причём сюдя по отладочным сообщениям как раз
на этой вилке и происходит проблема: если пользователь есть в /etc/passwd, то
вариант `then`, если нет, то `else`.
Если покопать код дальше, то видно, что getpwnam_alloc() просто дёргает
системный вызов getpwnam(), который, судя по ману, просто роется в /etc/passwd в
поиске учётной записи и не производит проверки в ldap.
Это всего лишь предположение, прошу сильно не пинать, если не прав.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15204</commentid>
    <comment_count>1</comment_count>
    <who name="Alexander Bokovoy">ab</who>
    <bug_when>2004-06-17 14:12:20 +0400</bug_when>
    <thetext>getpwnam() ищет по базам, указанным в /etc/nsswitch.conf в том порядке, в
котором они там прописаны. Так что если записи в LDAP не находятся, то причиной
может быть отсутствие записи &quot;ldap&quot; в /etc/nsswitch.conf.

С другой стороны, другие записи, видимо, доступны по getent passwd, значит,
настроено в /etc/nsswitch.conf верно. Тогда может быть проблема в двух местах:

1. Схема в LDAP не соответствует реальности Samba 3.0.3-alt1.1. Это может быть,
если соответствующее хранилище создавалось до 3.0.2.
2. Ошибка в nss_ldap при работе с символом $.

Судя по приведенному сообщению от pdbedit, очень похоже на (1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15220</commentid>
    <comment_count>2</comment_count>
      <attachid>433</attachid>
    <who name="Vladimir Lettiev">crux</who>
    <bug_when>2004-06-17 16:17:35 +0400</bug_when>
    <thetext>Created attachment 433
pdbedit output

Я смотрел новую схему, у меня действительно была старая, но, к сожалению,
добавление машинных аккаунтов не работало ещё на сборке alt46, поэтому
установка новой схемы и рестарт ldap и samba ничего не изменило. Отличия в
схеме слишком незначительные (на мой взгляд).
Настройку samba+ldap я делал ещё в прошлом году и по итогам написал статью
http://unix.nordcomp.ru/articles.html?id=17 , изложенная там конфигурация
практически ничем отличается от того, что у меня сейчас (за исключением
обновлённой версии samba).

Приведу вывод pdbedit на уровне отладки 11, для двух случаев: добавление
аккаунта с пользователем в /etc/passwd и без него:

1.
# useradd -g machines -d /dev/null testcomp$
# pdbedit -d 11 -a -m testcomp
вывод в атачменте pdbedit.1.txt

2.
# pdbedit -x testcomp$
# userdel testcomp$
# pdbedit -d 11 -a -m testcomp
вывод в атачменте pdbedit.2.txt

Хочу обратить внимание на то, что после записи

pdb backend guest has a valid init

идёт расхождение в действиях pdbedit, если пользователь есть в /etc/passwd, то
идёт создание sid&apos;а (18-ый элемент) для него, а если нет, то -- нет... И это
как раз различие в функциях pdb_init_sam_pw() и pdb_init_sam()

element 18 -&gt; now SET
pdb_set_user_sid_from_rid:
	setting user sid S-1-5-21-2614677957-1106234284-1388258010-3372 from
rid 3372


А как можно проверить второй вариант (Ошибка в nss_ldap при работе с символом
$.)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16622</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Bokovoy">ab</who>
    <bug_when>2004-07-06 19:21:57 +0400</bug_when>
    <thetext>Знак $ является специальным символом в shell, соответственно, для того чтобы его
передать приложению, его надо экранировать с использованием символа \. Таким
образом, это не ошибка Самбы, а ошибка входных параметров в useradd (нужно было
написать либо testcomp\$, либо &apos;testcomp$&apos;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>433</attachid>
            <date>2004-06-17 16:17:35 +0400</date>
            <delta_ts>2004-06-17 16:17:35 +0400</delta_ts>
            <desc>pdbedit output</desc>
            <filename>pdbedit.tar.bz2</filename>
            <type>application/octet-stream</type>
            <size>4187</size>
            <attacher name="Vladimir Lettiev">crux</attacher>
            
              <data encoding="base64">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
OKGRzJIup9S6w4un+5D/+LuSKcKEhVYWS3A=
</data>

          </attachment>
      

    </bug>

</bugzilla>