Próbuję pracować z grupami kontrolnymi na dwóch różnych systemach operacyjnych (Ubuntu i CentOS). Jest kilka obaw, o które chciałbym zapytać.
Próbuję utworzyć grupę kontrolną za pomocą cgcreate
polecenia i wygląda na to, że wymaga ona dostępu do konta root na komputerze. Wszystkie przykłady, które do tej pory widziałem, nie mówią nic o potrzebie bycia użytkownikiem root do tworzenia lub modyfikowania grup kontrolnych.
Czy naprawdę trzeba być użytkownikiem root? Ostatecznym celem jest napisanie aplikacji C ++, która tworzy grupy kontrolne i zarządza nimi w celu kontrolowania zasobów za pomocą interfejsu API libcgroup. Ale aplikacja C ++ nie będzie uruchamiana przez żadnego użytkownika root. Może to być każdy normalny użytkownik.
Odpowiedzi:
Normalny scenariusz jest to, że można ustawić
cgcreate
,cgset
,cgdelete
,cgget
, itd. Jako użytkownik root . Ostatecznie program / skrypt, który ma być powstrzymany od zasysania wielu zasobów, zostanie wykonany jako zwykły użytkownik. Więc skonfiguruj jako root, użyj i wykonaj jako użytkownik.Odbywa się to za pomocą parametrów
-a
i polecenia (wykonywanego jako root). Tak więc już po utworzeniu grupy. W moim przypadku:-t
cgcreate
gdzie monero to nazwa użytkownika przyszłego użytkownika, który uruchomi i uruchomi program z ograniczeniami cgroup. Aby poznać drobną różnicę między
-a
i-t
podparametrami, patrz strony podręcznika mancgcreate
.W większości przypadków jest to ten sam użytkownik.
Następnie skonfiguruj ograniczenia (nadal jako root):
Sprawdź swoje wpisy, jeśli chcesz:
A potem ostatecznie przełącz użytkownika, w moim przypadku monero użytkownika, i z odpowiedniego folderu:
Użytkownik nie będzie miał trudności z uprawnieniami lub tak, jak skonfigurujesz je specjalnie dla niego.
źródło
Pomijając to, możesz ustawić
setuid
bitaby dać użytkownikom innym niż root, którzy uruchamiają ten program root uprawnienia.
Zaleca się wówczas usunięcie normalnego dostępu użytkownika
i utwórz specjalną grupę, w której chcesz zezwolić na korzystanie z cgcreate IE
cgusers
,i zmień członkostwo grupy w tych plikach na tę grupę:
Wszystko to będzie uruchamiane przez użytkownika root, po czym wszyscy użytkownicy w
cgusers
grupie będą działaćcgcreate
icgdelete
jako root zamiast samych siebie. Potrzebujesz tylko członków, którzy chcieliby mieć tę władzę w odpowiedniej grupie.źródło
Grupy C są ostatecznie obsługiwane przez systemy plików cgroup. Zdolność do tworzenia cgroups powinna być jedynie zdolnością do tworzenia katalogów pod tym / nimi i zapisywania do plików. Jeśli podłączysz FS cgroup z bardziej złożonymi uprawnieniami lub zmienisz ich uprawnienia w locie, to niektórzy użytkownicy powinni mieć możliwość robienia rzeczy. Oczywiście nie będzie można dodawać identyfikatorów procesów innych użytkowników do pliku zadań. Będziesz mógł dodać tylko swojego użytkownika.
Powiedziawszy to, nie jestem pewien, czy powyższe ma charakter globalny. Tzn. Istnieje szansa, że niektóre grupy nie obsługują tego.
Ogólnie rzecz biorąc, najlepszym rozwiązaniem jest użycie menedżera grupy, który może zostać poinstruowany o powiązaniu zadań z grupą. Uważam, że cgmanager robi coś takiego.
źródło
Krótka odpowiedź to nie.
Przy tworzeniu i przypisywaniu własności do grupy cG jest zależny od uprawnień roota. Nie ma niezawodnego sposobu na obejście tego.
Można jednak utworzyć grupę cgroup i przypisać własność określonemu użytkownikowi lub grupie.
Użytkownik
Grupa
źródło