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

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

    <bug>
          <bug_id>30206</bug_id>
          
          <creation_ts>2014-07-22 23:24:48 +0400</creation_ts>
          <short_desc>hasher-priv: chrootuid: unshare CLONE_NEWNET: File exists</short_desc>
          <delta_ts>2014-07-26 06:24:40 +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>hasher-priv</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <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="Vitaly Lipatov">lav</reporter>
          <assigned_to name="Dmitry V. Levin">ldv</assigned_to>
          <cc>evg</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>147178</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-07-22 23:24:48 +0400</bug_when>
    <thetext>При сборке в контейнере OpenVZ у нас стала появляться следующая ошибка:
hasher-priv: chrootuid: unshare CLONE_NEWNET: File exists

О такой же ошибке писали ещё три года назад:
http://lists.altlinux.org/pipermail/devel/2011-June/191197.html

Фатальность вызвана кодом в
static int
test_unshare(int clone_flags, int share_flag)
{
...
        if (errno == ENOSYS || errno == EINVAL || errno == EPERM)
                return share_flag ? 0 : -1;
        return -1;
}

который не поддерживает код возврата
unshare(CLONE_NEWNET)                   = -1 EEXIST (File exists)

В принципе, для OpenVZ можно выключить
CAPABILITY=&quot;SYS_ADMIN:on&quot;
и File exists появляться не будет...

Ещё странно, что при проверке через
$ unshare -n CLONE_NEWNET sh
EEXIST возвращается только под рутом.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147179</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-07-22 23:38:16 +0400</bug_when>
    <thetext>(In reply to comment #0)
&gt; При сборке в контейнере OpenVZ у нас стала появляться следующая ошибка:
&gt; hasher-priv: chrootuid: unshare CLONE_NEWNET: File exists

Ошибка проявляется сразу, или спустя некоторое время после загрузки ядра?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147184</commentid>
    <comment_count>2</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-07-23 22:40:20 +0400</bug_when>
    <thetext>(В ответ на комментарий №1)
&gt; (In reply to comment #0)
&gt; &gt; При сборке в контейнере OpenVZ у нас стала появляться следующая ошибка:
&gt; &gt; hasher-priv: chrootuid: unshare CLONE_NEWNET: File exists
&gt; 
&gt; Ошибка проявляется сразу, или спустя некоторое время после загрузки ядра?

Я проверял так:
установил последнее ядро (2.6.32-ovz-el-alt122),
перезагрузился, зашёл в контейнер и получил ошибку командой
# unshare -n CLONE_NEWNET sh</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147185</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-07-23 23:05:09 +0400</bug_when>
    <thetext>(In reply to comment #2)
&gt; Я проверял так:
&gt; установил последнее ядро (2.6.32-ovz-el-alt122),
&gt; перезагрузился, зашёл в контейнер и получил ошибку командой
&gt; # unshare -n CLONE_NEWNET sh

У меня на этом ядре
# unshare -n CLONE_NEWNET /bin/true
unshare: unshare failed: Operation not permitted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147186</commentid>
    <comment_count>4</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2014-07-23 23:18:59 +0400</bug_when>
    <thetext>(В ответ на комментарий №3)
...
&gt; У меня на этом ядре
&gt; # unshare -n CLONE_NEWNET /bin/true
&gt; unshare: unshare failed: Operation not permitted

В OpenVZ-контейнере, запущенном с 
CAPABILITY=&quot;SYS_ADMIN:on&quot;
?

Я не представляю, что сломалось. В /etc хост-машины ничего не менялось.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147187</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2014-07-23 23:38:26 +0400</bug_when>
    <thetext>(In reply to comment #4)
&gt; (В ответ на комментарий №3)
&gt; ...
&gt; &gt; У меня на этом ядре
&gt; &gt; # unshare -n CLONE_NEWNET /bin/true
&gt; &gt; unshare: unshare failed: Operation not permitted
&gt; 
&gt; В OpenVZ-контейнере, запущенном с 
&gt; CAPABILITY=&quot;SYS_ADMIN:on&quot;
&gt; ?

Нет, со стандратным набором capabilities.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>