На общем сервере я хотел бы иметь пользователей с очень низким приоритетом, чтобы всякий раз, когда другому пользователю (также без корневых привилегий) требовались ресурсы, он мог убить любой процесс с низким приоритетом.
Можно ли допустить что-то подобное?
users
not-root-user
privileges
Aslan986
источник
источник
Ответы:
Дайте другим пользователям разрешение убивать процессы как пользователя с низким приоритетом через
Пользователь может сигнализировать только о своих собственных процессах, если у них нет привилегий root. Используя
sudo -u
пользователя с правильной настройкой вsudoers
файле, он может принять личность пользователя с низким приоритетом и завершить процесс.Например:
Это позволит всем пользователям в группе
killers
работать/bin/kill
какlowpriouser
.Смотрите также
sudoers
руководство по вашей системе.В системе OpenBSD то же самое можно сделать с помощью встроенной
doas
утилиты с такой конфигурацией, какпотом
Смотрите руководства для
doas
иdoas.conf
.источник
kill
. Обратите внимание, что я предлагаю использовать группу пользователей (killers
), а не всех пользователей.kill -HUP
, а не толькоkill -TERM
.lowpriouser
. Если вы хотите ограничить сигналыTERM
, тогда напишите сценарий оболочки оболочки/bin/kill
и позвольте людям использовать его вместо/bin/kill
.%killers ALL = (lowpriouser) /bin/kill -(9, 15) [0-9 ]*
Вы не должны убивать процессы, если они имеют низкий приоритет, они потребляют мало ресурсов.
Чтобы на самом деле сделать их низко приоритетными, либо измените их приоритет вручную, либо используйте демон, подобный тому,
autonice
который я написал для DEC OSF / 1 много лет назад (ок. 1994 г.), который ищет долгосрочные задания и постепенно уменьшает их приоритет по мере увеличения времени их выполнения. ,РЕДАКТИРОВАТЬ есть пакет под названием,
and
который предлагает эту функциональность для современных Unices.источник
Я думаю, что вы подходите к проблеме с неправильной точки зрения: если процесс запускается с низкими приоритетами (CPU, I / O), он не должен сильно влиять на другие процессы, потому что он не будет запланирован для запуска. Что касается использования памяти, если основная память ограничена и процесс не был запланирован для запуска в течение длительного времени (например, из-за ограничений процессора и ввода / вывода), его «чистые» страницы удаляются, а «грязные» страницы фиксируются или выгружены и больше не влияют на производительность других процессов.
Вывод: при правильной настройке приоритета и достаточном пространстве подкачки нет необходимости убивать задания с низким приоритетом, чтобы освободить место для более важных задач; вместо этого ядро позаботится о том, чтобы усыпить первое в пользу второго.
источник