Edición del archivo sudoers para restringir los comandos de un usuario


8

¿Es posible editar el archivo sudoers para que un usuario pueda usar sudo para cualquier comando excepto uno específico? Lo inverso es cierto, creo, que el archivo sudoers se puede configurar para que un usuario solo pueda ejecutar una lista dada de comandos.

EDITAR: los comandos que realmente quiero quitar son detener y reiniciar ... esto me hace pensar que hay llamadas especiales del sistema para detener y reiniciar. ¿Puedes quitarle las llamadas al sistema a un usuario? Si no, ¿se debe a que el sistema de permisos de Unix se abstrae de las llamadas del sistema que descuidan esto?

Respuestas:


5

Otra forma de verlo es que si los usuarios tienen acceso a la raíz en gran medida sin restricciones, pueden obtener acceso completo a la raíz.

Si bien es posible que pueda resolver algo, se evitará fácilmente.

Sin embargo, SElinux es una forma posible, aunque lleva mucho aprender.


3

Para hacer lo que desee (mantener el formulario de usuario en ejecución, detener, reiniciar y apagar), tendrá que buscar cosas de SElinux para evitar que el usuario realice esas llamadas al sistema. De lo contrario, el usuario simplemente ejecutará / bin / sh primero y luego ejecutará / bin / detener sin pasar por sudo.


2
O cualquiera de los millones de programas de los que puede obtener un shell, o su propio script.
Ronald Pottol

3

Registre todo lo que hacen a través de sudo, presumiblemente, tiene alguna forma de expresarlo para no volver a hacerlo.

Defaults logfile=/var/log/sudolog 

registrará todos los comandos que ejecutan, google un poco para obtener más información.


Necesitará un registro centralizado y deberá gritarles si ejecutan un shell. Un shell se puede obtener de un editor, por ejemplo. o hombre hombre etc.
James

3

Sí y no ... Puede evitar que un usuario ejecute un archivo específico precediendo el archivo con una explosión (!), Sin embargo, no puede evitar que un usuario copie el archivo en otra ubicación y luego lo ejecute desde allí.

User_Alias    ADMINS = peter, bob, bunny, %operator

ADMINS        ALL    = !/usr/bin/su, !SHELLS

Conceder acceso a archivos específicos como otro usuario


Ejemplo de cómo configurar los "SHELLS" arriba: Cmnd_Alias ​​SHELLS = / bin / sh, / bin / ksh, / bin / bash, / bin / zsh, \ / bin / csh, / bin / tcsh, \ / usr / bin / login, / usr / bin / su
pulcher

Un montón de utilidades le permitirán ejecutar comandos como root (tar, enlaces y nmap desde la parte superior de mi cabeza), por lo que sinceramente creo que la solución real es a) los comandos de la lista blanca que desea ejecutar como root o b) simplemente contratar alguien en quien confías
Algún nerd de Linux

2

Si el usuario realmente quiere reiniciar, encontrará la manera. sudo -s, sudo -i, sudo $EDITOR /etc/sudoers... se puede utilizar para eliminar sus restricciones.

Y en sistemas similares a Unix, se le permite reiniciar el sistema siempre que sea root (uid 0). Si encuentra una manera de restringir esas llamadas al sistema, se podría hacer esto:

usuario $ echo b | sudo tee / proc / sysrq-trigger

o una variación de los mismos. O reiniciar causando pánico en el núcleo. O...

Finalmente, tener acceso a la raíz por lo general le brinda la capacidad de eliminar las restricciones existentes.


Apesta que Linux ya no tenga niveles seguros. No eran perfectos, pero hombre, eran fáciles de configurar. No impidieron el reinicio, pero impidieron muchas otras cosas. Y como eran tan fáciles, podría usarlos en todos los sistemas. Sin ajustes y tal necesidad.
Thomas

¿No estaban en BSD, no en Linux?
user1686

1

claro, como root llama a visudo y evita que 'user' ejecute / sbin / halt:

user ALL=(ALL) NOPASSWD: !/sbin/halt

Creo que la solicitud era para una lista de comandos que el usuario no se le permite correr
Wayne

1

Hay un riesgo al hacerlo de esta manera: a menudo hay muchas maneras de hacer la misma acción. Por ejemplo, telnit 6 o init 6 también se reinicia. Puede haber una manera de obligar al núcleo a volcar el núcleo y reiniciar también.


1

La siguiente línea debería permitir al usuario "jim" ejecutar todo menos / usr / bin / kill y / usr / bin / su.

jim          ALL= !/usr/bin/kill,!/usr/bin/su

0

Esto no se ha probado y YMMV, pero ¿qué pasa con la configuración de una cmd_list de los comandos que no desea ejecutar y luego usar! Cmd_list para el grupo / usuario especificado?

No tengo acceso para probar esto y solo miré la página del manual en línea en Sudoers Manual para que algunos expertos me corrijan aquí si estoy equivocado

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.