Как создать пользователя cgroups с systemd

Просто переустановите Windows 7 и восстановите GRUB. Техника для восстановления загрузчика GRUB К счастью охвачена в Руководстве Fedora:

Во многих случаях загрузчик GRUB может по ошибке быть удален, поврежден или заменен другими операционными системами.

Следующие шаги детализируют процесс о том, как GRUB переустанавливается на главной загрузочной записи:

  • Загрузитесь система от установки загружают носитель.
  • Ввести linux rescue в установке загружают подсказку для вхождения в спасательную среду.
  • Ввести chroot /mnt/sysimage смонтировать корневой раздел.
  • Ввести /sbin/grub-install *bootpart* переустановить загрузчик GRUB, где *bootpart* раздел начальной загрузки (обычно, /dev/sda).
  • Рассмотрите /boot/grub/grub.conf файл, поскольку дополнительные записи могут быть необходимы, чтобы GRUB управлял дополнительными операционными системами.
  • Перезагрузите систему.

14
03.12.2014, 11:15
3 ответа

Лучшее и безопасное решение для установки CGManager и запустить его с Systemctl Запуск CGManager (на Systemd дистрибутив). Вы можете, чем у вас root , или если у вас есть sudo права на хост Создать cgroups для вашего безвисиловного пользователя во всех контроллерах с:

sudo cgm create all $USER
sudo cgm chown all $USER $(id -u $USER) $(id -g $USER)

один раз Они были созданы для вашего безвискивающегося пользователя, она / он может перемещать процессы, которые у него есть доступ к его CGRUP для каждого контроллера, используя:

cgm movepid all $USER $PPID

безопаснее, быстрее, более надежно, чем сценарий оболочки, который я опубликовал.

Ручное решение:

, чтобы ответить 1.

for d in /sys/fs/cgroup/*; do
        f=$(basename $d)
        echo "looking at $f"
        if [ "$f" = "cpuset" ]; then
                echo 1 | sudo tee -a $d/cgroup.clone_children;
        elif [ "$f" = "memory" ]; then
                echo 1 | sudo tee -a $d/memory.use_hierarchy;
        fi
        sudo mkdir -p $d/$USER
        sudo chown -R $USER $d/$USER
        echo $$ > $d/$USER/tasks
done

Я был невеженен о том, что происходит именно, когда я написал этот скрипт, но чтение это и экспериментируя немного помогла мне понять, что происходит на. То, что я в основном занимаюсь в этом скрипте, состоит в том, чтобы создать новую сеанс CGUOUP для текущего пользователя , который является то, что я уже говорил выше. Когда я запускаю эти команды в текущем оболочке или запустите их в скрипте и сделайте его так, чтобы он был оценен в нынешнем Shell , а не в подразделении (через . Сценарий . . . важно для этого работать!) Состоят ли я не просто открыть новый сеанс для пользователя , но добавьте текущую оболочку как Процесс, который запускается в этой новой CGroup. Я могу добиться того же эффекта, запустив скрипт в подпульвете, а затем спускаться в иерархию в подпгруппе и использовать ECHO $$> задачи Чтобы добавить текущую оболочку каждому члену иерархии CGUP .

Следовательно, когда я бегу LXC в этом текущем оболочке мой контейнер также станет членом всех CHB подгруппы , что текущий Shell является членом. То есть мой контейнер наследует CGGRUP состояние моего оболочки . Это также объясняет, почему он не работает ни в одной другой оболочке, который не является частью текущего CHB подгруппы S.

Я все еще прохожу на 2. . Мы, вероятно, понадобится подождать либо для обновления Systemd или дополнительно ядра для создания Systemd Systemd , принять согласованное поведение, но я предпочитаю, как это заставляет вас понимать, что вы делаете.

13
27.01.2020, 19:51

На самом деле в Archlinux, это не будет работать с E.g. Непродусный пользователь (рекомендуется при использовании disev. LXC контейнеры). I.e. Этот пользователь не имеет sudo :)

вместо этого определяет группу в /etc/cgconfig.conf, активировать CGConfig, Cграйте (libcgroup в AUR), Добавляют собрание, выполненные. Пользователь также будет иметь те же права.

в SystemD 218 (я не знаю, когда, но кажется, нужно добавить еще два условия, поскольку они не устанавливаются при создании из способа CGConfig):

cat /etc/cgconfig.conf

group lxcadmin {
perm {
    task {
        uid = lxcadmin;
        gid = lxcadmin;
    }
    admin {
        uid = lxcadmin;
        gid = lxcadmin;
    }
}
cpu { }
memory { memory.use_hierarchy = 1; }  
blkio { }
cpuacct { }
cpuset { 
    cgroup.clone_children = 1;
    cpuset.mems = 0;
    cpuset.cpus = 0-3; 
}
devices { }
freezer { }
hugetlb { }
net_cls { }
}

cat /etc/cgrules.conf
lxcadmin        *       lxcadmin/

Предполагая, что пространство имен скомпилировано в ядре.

Это шаблон, CPU может быть в соответствии с тем, сколько у вас есть ядер, MEM может быть установлена ​​на некоторое фактическое значение и т. Д.

Редактировать 2: Наконец, в SystemD, если вы хотите использовать автоматическое начало С таким безвискивым пользователем вы можете сделать:

CP /USR/LIB/Systemd/system/lxc (acadmin} @ .service, Затем добавьте пользователя = LXCADMIN

и включите его для контейнера LxCAdmin под названием LLZCADMIN @ LOLZ.

0
27.01.2020, 19:51

Итак, я столкнулся с той же проблемой, когда пытался заставить работать непривилегированные контейнеры LXC на CentOS 7. Я не хотел использовать cgmanager, потому что мне не нравится внедрять дополнительные службы, если они не требуются. В итоге я поставил исправления для systemd, используя некоторые исправления из пакета ubuntu и одно собственное исправление для расширения списка контроллеров cgroup. У меня есть исходники, необходимые для сборки RPM, на моем аккаунте GitHub по адресу https://github.com/CtrlC-Root/rpmdist. У меня также есть исправленные версии shadow-utils (для subuids и subgids) и pam (для loginuid). После установки этих RPM и настройки пользователя для запуска непривилегированных контейнеров (назначение subuids и subgids, распределение veth пар в lxc-usernet, создание .config/lxc/default.conf и т.д.) я могу запускать непривилегированные контейнеры LXC просто отлично.

EDIT: Еще одна причина, по которой я не хотел использовать cgmanager, заключается в том, что я не хотел, чтобы мои обычные пользователи вообще использовали sudo. Обычные пользователи должны иметь возможность войти в систему, и все должно "просто работать" из коробки.

0
27.01.2020, 19:51

Теги

Похожие вопросы