Bloquear un comando del usuario sudo

10

No necesito un administrador para cambiar mi contraseña de root. No quiero que ningún usuario de sudo ejecute este comando:

sudo passwd $root

Lo he intentado en el archivo sudoers usando el siguiente comando:

%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root

¿Cómo puedo bloquearlo?

Magesh Arumugam
fuente
¿Quiere decir que tiene más de un usuario de sudo en su sistema? ¿O algo mas? Por favor, edite la pregunta para proporcionar cualquier información nueva.
edwin

Respuestas:

15

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 fooy sudo. groupsla salida del comando es:

    foo sudo
    
  • Eliminar usuario foodel sudogrupo: gpasswd -d foo sudodespué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 foopermiso del usuario , por ejemplo:

    foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
    

    Esto significa que el usuario foopuede ejecutar cualquier comando en el directorio /usr/bin/excepción passwdy sucomandos. Nota: Si el usuario foodesea cambiar su contraseña, puede ejecutar el passwdcomando sinsudo .

  • Otro ejemplo de foopermiso de usuario :

    foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    

    Esto significa que el usuario foopuede 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_Aliasesy 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.

Lety
fuente
Tenía que hacer foo ALL=/usr/bin/*, !/usr/bin/passwdalguna idea de por qué ese es el caso?
clurect
-1

agregar alias de comando a través de visudo:

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

agregar restricciones a través de visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

agregar usuario al grupo llamado nopasswdgroup:

usermod -aG nopasswdgroup nopasswduser
shcherbak
fuente