En un servidor compartido, me gustaría tener algunos usuarios de muy baja prioridad, de modo que cada vez que otro usuario (también sin privilegios de root) necesite los recursos, pueda eliminar cualquiera de los procesos de los usuarios de baja prioridad.
¿Es posible permitir algo así?
users
not-root-user
privileges
Aslan986
fuente
fuente
Respuestas:
Otorgue a los otros usuarios permiso para eliminar los procesos como el usuario de baja prioridad a través de
Un usuario solo puede señalar sus propios procesos, a menos que tenga privilegios de root. Al utilizar
sudo -u
un usuario con la configuración correcta en elsudoers
archivo, puede asumir la identidad del usuario de baja prioridad y anular el proceso.Por ejemplo:
Esto permitiría que todos los usuarios del grupo se
killers
ejecuten/bin/kill
comolowpriouser
.Consulte también el
sudoers
manual de su sistema.En un sistema OpenBSD, lo mismo se puede hacer a través de la
doas
utilidad nativa con una configuración comoLuego
Consulte los manuales para
doas
ydoas.conf
.fuente
kill
. Tenga en cuenta también que sugiero usar un grupo de usuarios (killers
), no todos los usuarios.kill -HUP
, no solokill -TERM
.lowpriouser
. Si desea restringir las señalesTERM
, escriba un script de shell envolvente/bin/kill
y permita que las personas lo usen en lugar de hacerlo/bin/kill
.%killers ALL = (lowpriouser) /bin/kill -(9, 15) [0-9 ]*
No debe matar los procesos, si son de baja prioridad consumirán pocos recursos.
Para que sean de baja prioridad, cambie su prioridad manualmente o use un demonio como el
autonice
que escribí para DEC OSF / 1 hace muchos años (c. 1994) que busca trabajos de larga duración y reduce progresivamente su prioridad cuanto más tiempo se ejecutan .EDITAR hay un paquete llamado
and
que ofrece esta funcionalidad para los Unices modernos.fuente
Creo que aborda el problema desde un ángulo incorrecto: si un proceso se ejecuta con una configuración de baja prioridad (CPU, E / S), no debería afectar mucho a otros procesos porque no se programará para ejecutarse. En cuanto al uso de la memoria, si la memoria principal es escasa y el proceso no se programó para ejecutarse en mucho tiempo (por ejemplo, debido a restricciones de CPU y E / S), sus páginas "limpias" se descartan y sus páginas "sucias" se comprometen o intercambiados y ya no afectan el rendimiento de otros procesos.
Conclusión: con la configuración de prioridad correcta y suficiente espacio de intercambio, debería ser innecesario eliminar trabajos de baja prioridad para hacer "espacio" para tareas más importantes; en cambio, el núcleo se encargará de poner el primero en reposo a favor del segundo.
fuente