Bloquer une commande de l'utilisateur sudo

10

Je n'ai pas besoin d'un administrateur pour changer mon mot de passe root. Je ne veux pas qu'un utilisateur sudo exécute cette commande:

sudo passwd $root

Je l'ai essayé dans le fichier sudoers en utilisant la commande suivante:

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

Comment puis-je le bloquer?

Magesh Arumugam
la source
Voulez-vous dire que vous avez plus d'un utilisateur sudo-capable dans votre système? Ou autre chose? Veuillez modifier la question pour fournir de nouvelles informations.
edwin

Réponses:

15

Selon le manuel 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).

C'est pourquoi votre politique sudoers ne fonctionne pas.

Si vous souhaitez empêcher l'utilisateur d'obtenir l'autorisation root et de modifier son mot de passe, essayez cette procédure:

  • En supposant que vos sudoers contiennent cette directive:

     root    ALL=(ALL:ALL) ALL
     %sudo   ALL=(ALL:ALL) ALL
    
  • En supposant que votre nom d'utilisateur est foo, ses groupes sont fooet sudo. groupsla sortie de la commande est:

    foo sudo
    
  • Supprimer l'utilisateur foodu sudogroupe: gpasswd -d foo sudoaprès cela, l'utilisateur foone peut exécuter aucune commande avec sudo.

  • Modifier le fichier sudoers. Utilisez cette commande:

    sudo visudo -f /etc/sudoers.d/foo
    
  • Définissez l' fooautorisation utilisateur , par exemple:

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

    Cela signifie que l'utilisateur foopeut exécuter toutes les commandes du répertoire, à l' /usr/bin/exception de la commande passwdet su. Remarque: Si l'utilisateur foosouhaite modifier son mot de passe, peut exécuter la passwdcommande sans sudo.

  • Un autre exemple de foopermission d' utilisateur :

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

    Cela signifie que l'utilisateur foopeut exécuter toutes les commandes du répertoire /usr/bin/et est autorisé à modifier le mot de passe de n'importe qui, à l'exception de root sur TOUTES les machines.

Vous pouvez définir des groupes de commandes en définissant Cmnd_Aliaseset en créant des "niveaux d'autorisations". Vous pouvez trouver des exemples utiles dans la section EXEMPLE du manuel sudoers , et voici un lien utile sur la façon d'utiliser les sudoers.

Lety
la source
Je devais foo ALL=/usr/bin/*, !/usr/bin/passwdsavoir pourquoi c'était le cas?
2017
-1

ajouter un alias de commande via visudo:

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

ajouter des restrictions via visudo:

%nopasswdgroup ALL = ALL, !PASSWD, !SU

ajouter un utilisateur au groupe appelé nopasswdgroup:

usermod -aG nopasswdgroup nopasswduser
shcherbak
la source