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

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

    <bug>
          <bug_id>35210</bug_id>
          
          <creation_ts>2018-08-04 12:27:34 +0300</creation_ts>
          <short_desc>Не видит пользователей в /etc/tcb при составлении списка</short_desc>
          <delta_ts>2024-02-19 18:22:34 +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>accountsservice</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=48825</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fr. Br. George">george</reporter>
          <assigned_to name="Alexey Shabalin">shaba</assigned_to>
          <cc>aris</cc>
    
    <cc>shaba</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173171</commentid>
    <comment_count>0</comment_count>
    <who name="Fr. Br. George">george</who>
    <bug_when>2018-08-04 12:27:34 +0300</bug_when>
    <thetext>Когда accountsservice составляет список пользователей, которых можно предлагать DM-у для логина, оно тупо открывает /etc/shadow и читает оттуда!

Поэтому lightdm, например, не показывает никакого списка пользователей, если accounts-daemon запущен.

Сейчас попробую запатчить на getspent() вместо fgetspent()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173172</commentid>
    <comment_count>1</comment_count>
    <who name="Yuri N. Sedunov">aris</who>
    <bug_when>2018-08-04 13:05:33 +0300</bug_when>
    <thetext>Э-э-э, Гоша, не торопись, ты, наверное, не разобрался.
GDM успешно получает список от accountsservice.

ls /var/lib/AccountsService/users/
?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173175</commentid>
    <comment_count>2</comment_count>
      <attachid>7688</attachid>
    <who name="Fr. Br. George">george</who>
    <bug_when>2018-08-04 19:44:37 +0300</bug_when>
    <thetext>Created attachment 7688
Use getspent_r() instead of fgetspent_r() (TCB)

 fgetspent_r() слегка несовмевстимо с TCB (надо по многу раз вызывать для каждого /etc/tcb/&lt;user&gt;/shadow). В данном случае, хоть оно и встречается в итераторе, но вызывается только в первой итерации.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173176</commentid>
    <comment_count>3</comment_count>
    <who name="Fr. Br. George">george</who>
    <bug_when>2018-08-04 19:51:31 +0300</bug_when>
    <thetext>(В ответ на комментарий №1)
&gt; Э-э-э, Гоша, не торопись, ты, наверное, не разобрался.
&gt; GDM успешно получает список от accountsservice.
Возможно, он потом лезет сам куда-то.

В коде accountsservice явно написано открывать _файл_ /etc/shadow и читать оттуда с помощью fgetspent_r(). С файлами они рабоают потому что внутри итератора, открытый файл в текущем состоянии можно записать в контекст, а как обеспечить контекст для getpwent(), например, непонятно. Но именно shadow там засасывается целиком в первой итерации, так что fgetspent_r вполне можно поменять на getspent_r, что я и сделал.

&gt; ls /var/lib/AccountsService/users/
&gt; ?
Пусто</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173177</commentid>
    <comment_count>4</comment_count>
    <who name="Fr. Br. George">george</who>
    <bug_when>2018-08-04 20:12:35 +0300</bug_when>
    <thetext>(В ответ на комментарий №3)
&gt; &gt; ls /var/lib/AccountsService/users/
&gt; &gt; ?
&gt; Пусто
Точнее, один я)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173367</commentid>
    <comment_count>5</comment_count>
    <who name="Fr. Br. George">george</who>
    <bug_when>2018-08-13 18:28:34 +0300</bug_when>
    <thetext>(В ответ на комментарий №2)
&gt; Created an attachment (id=7688) [details]
&gt; Use getspent_r() instead of fgetspent_r() (TCB)

Это плохой патч, негодный. Потому что так всё идёт _мимо_ nsswitch, а с патчем getspent_r() ьуда таки ходит.

Я лучше посмотрю, так ли нужна информация из shadow по ходу.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173377</commentid>
    <comment_count>6</comment_count>
      <attachid>7708</attachid>
    <who name="Fr. Br. George">george</who>
    <bug_when>2018-08-14 18:06:13 +0300</bug_when>
    <thetext>Created attachment 7708
Патч, игнорирующий несоответствие /etc/passwd  и /etc/shadow

Как выяснилось, accountsservice вполне может работать с учётной записью в passwd, даже если в shadow такой нет. См. задание 211373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173389</commentid>
    <comment_count>7</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2018-08-15 13:43:09 +0300</bug_when>
    <thetext>accountsservice-0.6.50-alt2.S1 -&gt; sisyphus:

Tue Aug 14 2018 Fr. Br. George &lt;george@altlinux.ru&gt; 0.6.50-alt2.S1
- Ignore ALT-specific empty /etc/shadow (closes: #35210)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7688</attachid>
            <date>2018-08-04 19:44:37 +0300</date>
            <delta_ts>2018-08-14 18:06:13 +0300</delta_ts>
            <desc>Use getspent_r() instead of fgetspent_r() (TCB)</desc>
            <filename>0001-Use-getspent_r-instead-of-fgetspent_r-TCB.patch</filename>
            <type>text/plain</type>
            <size>1957</size>
            <attacher name="Fr. Br. George">george</attacher>
            
              <data encoding="base64">RnJvbSAzNzg2MTYxNzZkMmRlNDQwNzVlZWYwNjA0M2M0YTEyZWE0OTFhMzk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiAiR2VvcmdlIFYuIEtvdXJ5YWNoeSAoRnIuIEJyLiBHZW9yZ2Up
IiA8Z2VvcmdlQGFsdGxpbnV4LnJ1PgpEYXRlOiBTYXQsIDQgQXVnIDIwMTggMTk6MTQ6NDYgKzAz
MDAKU3ViamVjdDogW1BBVENIXSBVc2UgZ2V0c3BlbnRfcigpIGluc3RlYWQgb2YgZmdldHNwZW50
X3IoKSAoVENCKQoKLS0tCiBzcmMvZGFlbW9uLmMgfCA2ICsrKystLQogMSBmaWxlIGNoYW5nZWQs
IDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZGFlbW9u
LmMgYi9zcmMvZGFlbW9uLmMKaW5kZXggZTcxMWE0Ni4uMDI4ZGU3NyAxMDA2NDQKLS0tIGEvc3Jj
L2RhZW1vbi5jCisrKyBiL3NyYy9kYWVtb24uYwpAQCAtMTc5LDExICsxNzksMTMgQEAgZW50cnlf
Z2VuZXJhdG9yX2ZnZXRwd2VudCAoRGFlbW9uICAgICAgICpkYWVtb24sCiAgICAgICAgICAgICAg
ICAgRklMRSAqZnA7CiAgICAgICAgICAgICAgICAgc3RydWN0IHNwd2QgKnNoYWRvd19lbnRyeTsK
IAorCQkvKgogICAgICAgICAgICAgICAgIGZwID0gZm9wZW4gKFBBVEhfU0hBRE9XLCAiciIpOwog
ICAgICAgICAgICAgICAgIGlmIChmcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3dhcm5pbmcgKCJVbmFibGUgdG8gb3BlbiAlczogJXMiLCBQQVRIX1NIQURPVywgZ19zdHJl
cnJvciAoZXJybm8pKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAg
ICAgICAgICAgICAgIH0KKwkJKi8KIAogICAgICAgICAgICAgICAgIHNoYWRvd191c2VycyA9IGdf
aGFzaF90YWJsZV9uZXdfZnVsbCAoZ19zdHJfaGFzaCwgZ19zdHJfZXF1YWwsIGdfZnJlZSwgZ19m
cmVlKTsKIApAQCAtMTkyLDcgKzE5NCw3IEBAIGVudHJ5X2dlbmVyYXRvcl9mZ2V0cHdlbnQgKERh
ZW1vbiAgICAgICAqZGFlbW9uLAogCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dfZW50
cnlfYnVmZmVycyA9IGdfbWFsbG9jMCAoc2l6ZW9mICgqc2hhZG93X2VudHJ5X2J1ZmZlcnMpKTsK
IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZmdldHNwZW50X3IgKGZwLCAmc2hhZG93
X2VudHJ5X2J1ZmZlcnMtPnNwYnVmLCBzaGFkb3dfZW50cnlfYnVmZmVycy0+YnVmLCBzaXplb2Yg
KHNoYWRvd19lbnRyeV9idWZmZXJzLT5idWYpLCAmc2hhZG93X2VudHJ5KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldCA9IGdldHNwZW50X3IgKCZzaGFkb3dfZW50cnlfYnVmZmVycy0+c3Bi
dWYsIHNoYWRvd19lbnRyeV9idWZmZXJzLT5idWYsIHNpemVvZiAoc2hhZG93X2VudHJ5X2J1ZmZl
cnMtPmJ1ZiksICZzaGFkb3dfZW50cnkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJl
dCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfaGFzaF90YWJsZV9p
bnNlcnQgKHNoYWRvd191c2VycywgZ19zdHJkdXAgKHNoYWRvd19lbnRyeS0+c3BfbmFtcCksIHNo
YWRvd19lbnRyeV9idWZmZXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBA
IC0yMDQsNyArMjA2LDcgQEAgZW50cnlfZ2VuZXJhdG9yX2ZnZXRwd2VudCAoRGFlbW9uICAgICAg
ICpkYWVtb24sCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSB3
aGlsZSAoc2hhZG93X2VudHJ5ICE9IE5VTEwpOwogCi0gICAgICAgICAgICAgICAgZmNsb3NlIChm
cCk7CisgICAgICAgICAgICAgICAgLy9mY2xvc2UgKGZwKTsKIAogICAgICAgICAgICAgICAgIGlm
IChnX2hhc2hfdGFibGVfc2l6ZSAoc2hhZG93X3VzZXJzKSA9PSAwKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZzaGFkb3dfdXNlcnMsIGdfaGFzaF90YWJsZV91
bnJlZik7Ci0tIAoyLjEwLjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>7708</attachid>
            <date>2018-08-14 18:06:13 +0300</date>
            <delta_ts>2018-08-14 18:06:13 +0300</delta_ts>
            <desc>Патч, игнорирующий несоответствие /etc/passwd  и /etc/shadow</desc>
            <filename>0001-Ignore-ALT-specific-empty-etc-shadow.patch</filename>
            <type>text/plain</type>
            <size>715</size>
            <attacher name="Fr. Br. George">george</attacher>
            
              <data encoding="base64">RnJvbSA3M2IyN2FiY2U4NGUwYWVlNjdlODgxM2YyYWY5NThlOGEwMjRmMmVjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiAiR2VvcmdlIFYuIEtvdXJ5YWNoeSAoRnIuIEJyLiBHZW9yZ2Up
IiA8Z2VvcmdlQGFsdGxpbnV4LnJ1PgpEYXRlOiBUdWUsIDE0IEF1ZyAyMDE4IDE2OjM4OjEzICsw
MzAwClN1YmplY3Q6IFtQQVRDSF0gSWdub3JlIEFMVC1zcGVjaWZpYyBlbXB0eSAvZXRjL3NoYWRv
dwoKLS0tCiBzcmMvZGFlbW9uLmMgfCA0ICsrKysKIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlv
bnMoKykKCmRpZmYgLS1naXQgYS9zcmMvZGFlbW9uLmMgYi9zcmMvZGFlbW9uLmMKaW5kZXggZTcx
MWE0Ni4uOTAzMThjNyAxMDA2NDQKLS0tIGEvc3JjL2RhZW1vbi5jCisrKyBiL3NyYy9kYWVtb24u
YwpAQCAtMjM3LDYgKzIzNywxMCBAQCBlbnRyeV9nZW5lcmF0b3JfZmdldHB3ZW50IChEYWVtb24g
ICAgICAgKmRhZW1vbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3BlbnQgPSAmc2hh
ZG93X2VudHJ5X2J1ZmZlcnMtPnNwYnVmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBwd2VudDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkJCWVsc2UgeworCQkJICAg
ICpzcGVudCA9IE5VTEw7CisJCQkgICAgcmV0dXJuIHB3ZW50OworCQkJfQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCi0tIAoyLjE3LjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>