Según el manual de sudoers :
It is generally not effective to "subtract" commands from ALL using the
’!’ operator. A user can trivially circumvent this by copying the
desired command to a different name and then executing that. For
example:
bill ALL = ALL, !SU, !SHELLS
Doesn’t really prevent bill from running the commands listed in SU or
SHELLS since he can simply copy those commands to a different name, or
use a shell escape from an editor or other program. Therefore, these
kind of restrictions should be considered advisory at best (and
reinforced by policy).
Es por eso que su política de sudoers no funciona.
Si desea evitar que el usuario obtenga permiso de root y cambie su contraseña, intente este procedimiento:
Asumiendo que sudoers contiene esta directiva:
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Asumiendo que su nombre de usuario es foo
, sus grupos son foo
y sudo
. groups
la salida del comando es:
foo sudo
Eliminar usuario foo
del sudo
grupo: gpasswd -d foo sudo
después de esto, usuariofoo
no puede ejecutar ningún comando con sudo.
Editar archivo sudoers. Usa este comando:
sudo visudo -f /etc/sudoers.d/foo
Defina el foo
permiso del usuario , por ejemplo:
foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
Esto significa que el usuario foo
puede ejecutar cualquier comando en el directorio /usr/bin/
excepción passwd
y su
comandos. Nota: Si el usuario foo
desea cambiar su contraseña, puede ejecutar el passwd
comando sinsudo
.
Otro ejemplo de foo
permiso de usuario :
foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
Esto significa que el usuario foo
puede ejecutar cualquier comando en el directorio/usr/bin/
y puede cambiar la contraseña de cualquier persona, excepto la raíz en TODAS las máquinas.
Puede definir grupos de comando definiendo Cmnd_Aliases
y creando "niveles de permisos". Puede encontrar ejemplos útiles en la sección EJEMPLO del manual de sudoers , y aquí hay un enlace útil sobre cómo usar sudoers.