Ich versuche mit Kontrollgruppen auf zwei verschiedenen Betriebssystemen (Ubuntu und CentOS) zu arbeiten. Es gibt einige Bedenken, die ich stellen möchte.
Ich versuche, mit dem cgcreate
Befehl eine Kontrollgruppe zu erstellen , und es sieht so aus, als ob Root-Zugriff auf dem Computer erforderlich ist. Alle Beispiele, die ich bisher gesehen habe, sagen nichts darüber aus, dass ich der Root-Benutzer sein muss, um Kontrollgruppen zu erstellen oder zu ändern.
Ist es wirklich notwendig, der Root-Benutzer zu sein? Das Endziel besteht darin, eine C ++ - Anwendung zu schreiben, die Kontrollgruppen erstellt und verwaltet, um Ressourcen mithilfe der libcgroup-API zu steuern. Die C ++ - Anwendung wird jedoch von keinem Root-Benutzer ausgeführt. Es könnte jeder normale Benutzer sein.
Antworten:
Das normale Szenario ist , dass Sie eingestellt
cgcreate
,cgset
,cgdelete
,cgget
usw. , wie oben Wurzel . Schließlich wird das Programm / Skript, das daran gehindert werden soll, an vielen Ressourcen zu saugen, als normaler Benutzer ausgeführt. Also als root einrichten, als Benutzer verwenden und ausführen.Dies erfolgt mit den Parametern
-a
und-t
descgcreate
Befehls (als root ausgeführt). Also schon beim Einrichten einer Gruppe. In meinem Fall:Dabei ist monero der Benutzername des zukünftigen Benutzers, der das Programm mit den Einschränkungen der Gruppe ausführen und ausführen wird. Den feinen Unterschied zwischen den Parametern
-a
und finden-t
Sie in den Manpages voncgcreate
.In den meisten Fällen ist dies derselbe Benutzer.
Richten Sie dann die Einschränkungen ein (immer noch als Root):
Überprüfen Sie Ihre Eingaben, wenn Sie möchten:
Und dann irgendwann Benutzer wechseln, in meinem Fall Benutzer Monero, und aus dem richtigen Ordner:
Der Benutzer hat keine Schwierigkeiten mit Berechtigungen oder so, wenn Sie sie speziell für ihn einrichten.
quelle
Abgesehen von den Auswirkungen auf die Sicherheit können Sie das
setuid
Bit setzenum Nicht-Root-Benutzern, die dieses Programm ausführen, Root-Power zu geben.
Die Empfehlung wäre, dann den normalen Benutzerzugriff zu entfernen
und erstellen Sie eine spezielle Gruppe, die Sie für die Verwendung von cgcreate IE zulassen möchten
cgusers
.und ändern Sie die Gruppenmitgliedschaft für diese Dateien in diese Gruppe:
All dies würde von root ausgeführt, danach werden alle Benutzer in der
cgusers
Gruppe ausgeführtcgcreate
undcgdelete
als root statt als sie selbst. Sie müssten nur Mitglieder haben, die diese Macht unter der richtigen Gruppe haben möchten.quelle
Cgroups werden letztendlich über die cgroup-Dateisysteme verwaltet. Die Fähigkeit, Gruppen zu erstellen, sollte lediglich die Fähigkeit sein, Verzeichnisse unter diesen Gruppen zu erstellen und in Dateien zu schreiben. Wenn Sie die cgroup-FSs mit umfangreicheren Berechtigungen bereitstellen oder ihre Berechtigungen im laufenden Betrieb ändern, sollten bestimmte Benutzer in der Lage sein, Aufgaben zu erledigen. Offensichtlich können Sie die Prozess-IDs des Prozesses anderer Benutzer nicht zur Aufgabendatei hinzufügen. Sie können nur die Ihrer Benutzer hinzufügen.
Trotzdem bin ich mir nicht sicher, ob das oben Gesagte global ist. Dh es besteht die Möglichkeit, dass bestimmte Gruppen dies nicht unterstützen.
Insgesamt besteht der beste Ansatz darin, einen cgroup-Manager zu verwenden, der dann angewiesen werden kann, einer cgroup Aufgaben zuzuordnen. Ich glaube, dass cgmanager so etwas macht.
quelle
Kurze Antwort ist nein.
Für die Erstellung und Eigentumszuweisung einer cgroup sind Sie auf Root-Berechtigungen angewiesen. Es gibt keinen zuverlässigen Weg, um das Problem zu umgehen.
Sie können jedoch eine cgroup erstellen und einem bestimmten Benutzer oder einer bestimmten Gruppe den Besitz zuweisen.
Benutzer
Gruppe
quelle