Wie kann ich Linux-Gruppen als Benutzer ohne Rootberechtigung erstellen und verwenden?


21

Wie kann ich als Benutzer ohne Rootberechtigung Gruppen erstellen und verwenden ?

Zum Beispiel kann ich als Nicht-Root-Benutzer:

  • Erstellen Sie eine Kontrollgruppe mit Zugriff auf eine CPU
  • Erstellen Sie einen neuen Prozess in dieser Gruppe

?

Ich habe zuerst hier gefragt , aber keine vollständige Antwort erhalten. Ich habe auch nach Stackoverflow gefragt , aber die Frage wurde als "Off Topic" geschlossen.

Antworten:


18

Das können Sie als normaler Benutzer nicht. Sie können jedoch eine cgroup als root einrichten und von Ihrem Benutzer konfigurierbar machen.

Wenn Sie nicht bereits die standardmäßigen cgroups-Controller haben, die von z. B. systemd gemountet wurden:

$ sudo mount -t tmpfs cgroup_root /sys/fs/cgroup
$ sudo mkdir /sys/fs/cgroup/cpuset
$ sudo mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset

Erstellen Sie eine cgroup:

$ sudo mkdir /sys/fs/cgroup/cpuset/${USER}
$ sudo chown -R ${USER} /sys/fs/cgroup/cpuset/${USER}

Sie können jetzt die Konfiguration Ihrer cgroup als normaler Benutzer ändern:

$ echo 0-3 > /sys/fs/cgroup/cpuset/${USER}/cpuset.cpus

Fügen Sie dieser Gruppe einen Prozess hinzu:

$ ./my_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/tasks

Oder erstellen Sie eine Untergruppe:

$ mkdir /sys/fs/cgroup/cpuset/${USER}/subgroup
$ echo 0-1 > /sys/fs/cgroup/cpuset/${USER}/subgroup/cpuset.cpus
$ ./my_other_task &
$ echo $! > /sys/fs/cgroup/cpuset/${USER}/subgroup/tasks

Wie würden Sie die Untergruppe löschen? rm -rscheitert für mich
— hbogert

1
rm -rwürde versuchen, die Dateien zuerst zu löschen, was fehlschlägt. Verwenden Sie rmdir, um eine C-Gruppe zu entfernen.
— Dennis B.

Sie können nicht, rmdirbis die tasksDatei leer ist. root müsste sich die Aufgabendatei in der Untergruppe ansehen und jede PID dort in die Aufgabendatei der Root-C-Gruppe eintragen ( /dev/cpuset/tasksauf meinem RHEL 6.7 [Kernel 2.6.32-358] -Box, aber es /sys/fs/cgroup/cpuset/taskskönnte hier angebracht sein).
— Mike S

1

Wenn Sie Ubuntu verwenden, können Sie (der Root-Benutzer) cgroup-lite installieren und der Datei /etc/cgconfig.conf hinzufügen, einschließlich der Benutzer, die die Konfiguration der cgroup ändern können. Es läuft beim Booten.

Andernfalls können Sie (der Root-Benutzer) Ihr eigenes Skript hinzufügen, das während des Startvorgangs ausgeführt werden soll.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.