Na wspólnym serwerze chciałbym mieć użytkowników o bardzo niskim priorytecie, tak aby ilekroć inny użytkownik (także bez uprawnień roota) potrzebował zasobów, mógł zabić dowolny proces użytkownika o niskim priorytecie.
Czy można pozwolić na coś takiego?
users
not-root-user
privileges
Aslan986
źródło
źródło
Odpowiedzi:
Zezwól innym użytkownikom na zabijanie procesów jako użytkownik o niskim priorytecie
Użytkownik może sygnalizować tylko własne procesy, chyba że ma uprawnienia roota. Używając
sudo -u
użytkownika z poprawną konfiguracją wsudoers
pliku, można przyjąć tożsamość użytkownika o niskim priorytecie i zabić proces.Na przykład:
Umożliwiłoby to wszystkim użytkownikom w grupie
killers
działanie/bin/kill
jakolowpriouser
.Zobacz także
sudoers
instrukcję obsługi systemu.W systemie OpenBSD to samo można zrobić za pomocą natywnego
doas
narzędzia o konfiguracji takiej jakNastępnie
Zobacz instrukcje obsługi
doas
idoas.conf
.źródło
kill
. Zauważ też, że sugeruję użycie grupy użytkowników (killers
), nie wszystkich użytkowników.kill -HUP
, nie tylkokill -TERM
.lowpriouser
. Jeśli chcesz ograniczyć sygnałyTERM
, napisz skrypt opakowujący/bin/kill
i pozwól innym go używać/bin/kill
.%killers ALL = (lowpriouser) /bin/kill -(9, 15) [0-9 ]*
Nie powinieneś zabijać procesów, jeśli mają niski priorytet, zużyją niewiele zasobów.
Aby faktycznie nadać im niski priorytet, zmień ich priorytet ręcznie lub użyj demona takiego
autonice
, jaki napisałem dla DEC OSF / 1 wiele lat temu (ok. 1994), który szuka długoterminowych zadań i stopniowo zmniejsza ich priorytet, im dłużej działają .EDYCJA jest pakiet o nazwie,
and
który oferuje tę funkcjonalność dla nowoczesnych Unices.źródło
Myślę, że podchodzisz do problemu z niewłaściwego punktu widzenia: jeśli proces jest uruchamiany z ustawieniami niskiego priorytetu (CPU, I / O), nie powinien on mieć większego wpływu na inne procesy, ponieważ nie zostanie zaplanowany do uruchomienia. Jeśli chodzi o użycie pamięci, jeśli pamięć główna jest napięta i proces nie był zaplanowany na długi czas (np. Z powodu ograniczeń procesora i we / wy), jego „czyste” strony są usuwane, a „brudne” strony są zatwierdzane lub zamienione i nie wpływają już na wydajność innych procesów.
Wniosek: przy odpowiednim ustawieniu priorytetu i wystarczającej przestrzeni wymiany zabijanie zadań o niskim priorytecie nie powinno być konieczne, aby „zrobić miejsce” na ważniejsze zadania; zamiast tego jądro zadba o to, aby ten pierwszy spał na korzyść tego drugiego.
źródło