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.