Я пытаюсь работать с группами управления в двух разных операционных системах (Ubuntu и CentOS). Есть несколько вопросов, которые я хотел бы задать.
Я пытаюсь создать контрольную группу с помощью cgcreate
команды, и похоже, что для этого требуется root-доступ на компьютере. Все примеры, которые я видел до сих пор, ничего не говорят о необходимости быть пользователем root для создания или изменения контрольных групп.
Действительно ли необходимо быть пользователем root? Конечная цель - написать приложение на C ++, которое создает и управляет группами управления для управления ресурсами с помощью API libcgroup. Но приложение C ++ не будет запускаться любым пользователем root. Это может быть любой нормальный пользователь.
Ответы:
Нормальный сценарий , который вы установили
cgcreate
,cgset
,cgdelete
,cgget
и т.д. в качестве корня . В конце концов, программа / сценарий, предназначенный для ограничения использования многих ресурсов, будет выполняться как обычный пользователь. Итак, настройте как root, используйте и запустите как пользователь.Это делается с
-a
и-t
параметрамиcgcreate
команды (выполняются как корень). Так уже, когда вы создаете группу. В моем случае:где monero - имя пользователя будущего пользователя, который будет запускать и запускать программу с ограничениями cgroup. Точная разница между подпараметрами
-a
и приведена в-t
справочных страницахcgcreate
.В большинстве случаев это один и тот же пользователь.
Затем установите ограничения (все еще как root):
Проверьте свои записи, если вы хотите:
И затем, в конце концов, переключите пользователя, в моем случае, пользователя monero, и из правой папки:
Пользователь не будет иметь никаких проблем с разрешениями или около того, так как вы настроите его специально для него.
источник
Помимо последствий для безопасности, вы можете установить
setuid
битдать пользователям без прав root, которые запускают эту программу, полномочия root.
Рекомендуется удалить обычный доступ пользователя.
и создайте специальную группу, которую вы хотите разрешить использовать cgcreate IE
cgusers
,и измените членство в группе этих файлов на эту группу:
Все это будет работать на корень, после того, что все пользователи в
cgusers
группе, будет работатьcgcreate
иcgdelete
как корень , а не как они сами. Вам просто нужно было бы иметь членов, которым вы хотели бы иметь эту власть в нужной группе.источник
Cgroups в конечном счете обрабатываются через файловую систему (ы) cgroup. Способность создавать cgroups должна просто быть способностью создавать каталоги под этим / ними и записывать в файлы. Если вы смонтируете FS cgroup с более сложными разрешениями или измените их разрешения на лету, то некоторые пользователи должны иметь возможность делать что-то. Очевидно, что вы не сможете добавить идентификаторы процессов других пользователей в файл задач. Вы сможете добавить только своего пользователя.
Сказав это, я не уверен, что вышесказанное является глобальным. Т.е. есть вероятность, что определенные группы не поддерживают это.
В целом, наилучшим подходом является использование менеджера cgroup, который затем может быть проинструктирован для привязки задач к cgroup. Я считаю, что cgmanager делает что-то подобное.
источник
Краткий ответ - нет.
Для создания и назначения прав собственности на группу вы зависите от привилегий root. Нет надежного способа обойти это.
Однако вы можете создать группу и назначить владельца для определенного пользователя или группы.
пользователь
группа
источник