Bug 30206 - hasher-priv: chrootuid: unshare CLONE_NEWNET: File exists
Summary: hasher-priv: chrootuid: unshare CLONE_NEWNET: File exists
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: hasher-priv (show other bugs)
Version: unstable
Hardware: all Linux
: P3 normal
Assignee: Dmitry V. Levin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-07-22 23:24 MSK by Vitaly Lipatov
Modified: 2014-07-26 06:24 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2014-07-22 23:24:48 MSK
При сборке в контейнере 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="SYS_ADMIN:on"
и File exists появляться не будет...

Ещё странно, что при проверке через
$ unshare -n CLONE_NEWNET sh
EEXIST возвращается только под рутом.
Comment 1 Dmitry V. Levin 2014-07-22 23:38:16 MSK
(In reply to comment #0)
> При сборке в контейнере OpenVZ у нас стала появляться следующая ошибка:
> hasher-priv: chrootuid: unshare CLONE_NEWNET: File exists

Ошибка проявляется сразу, или спустя некоторое время после загрузки ядра?
Comment 2 Vitaly Lipatov 2014-07-23 22:40:20 MSK
(В ответ на комментарий №1)
> (In reply to comment #0)
> > При сборке в контейнере OpenVZ у нас стала появляться следующая ошибка:
> > hasher-priv: chrootuid: unshare CLONE_NEWNET: File exists
> 
> Ошибка проявляется сразу, или спустя некоторое время после загрузки ядра?

Я проверял так:
установил последнее ядро (2.6.32-ovz-el-alt122),
перезагрузился, зашёл в контейнер и получил ошибку командой
# unshare -n CLONE_NEWNET sh
Comment 3 Dmitry V. Levin 2014-07-23 23:05:09 MSK
(In reply to comment #2)
> Я проверял так:
> установил последнее ядро (2.6.32-ovz-el-alt122),
> перезагрузился, зашёл в контейнер и получил ошибку командой
> # unshare -n CLONE_NEWNET sh

У меня на этом ядре
# unshare -n CLONE_NEWNET /bin/true
unshare: unshare failed: Operation not permitted
Comment 4 Vitaly Lipatov 2014-07-23 23:18:59 MSK
(В ответ на комментарий №3)
...
> У меня на этом ядре
> # unshare -n CLONE_NEWNET /bin/true
> unshare: unshare failed: Operation not permitted

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

Я не представляю, что сломалось. В /etc хост-машины ничего не менялось.
Comment 5 Dmitry V. Levin 2014-07-23 23:38:26 MSK
(In reply to comment #4)
> (В ответ на комментарий №3)
> ...
> > У меня на этом ядре
> > # unshare -n CLONE_NEWNET /bin/true
> > unshare: unshare failed: Operation not permitted
> 
> В OpenVZ-контейнере, запущенном с 
> CAPABILITY="SYS_ADMIN:on"
> ?

Нет, со стандратным набором capabilities.