web-dev-qa-db-fra.com

Bloquer une commande de l'utilisateur Sudo

Je n'ai pas besoin d'un administrateur pour changer mon mot de passe root. Je ne souhaite pas qu'un utilisateur de 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?

9
Magesh Arumugam

Selon 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 changer son mot de passe, procédez comme suit:

  • 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 fooname__, ses groupes sont fooet Sudoname__. groupsLe résultat de la commande est le suivant:

    foo Sudo
    
  • Supprimez l'utilisateur foode Sudogroup: gpasswd -d foo Sudo après cela, l'utilisateur foone peut exécuter aucune commande avec Sudo.

  • Editer le fichier sudoers. Utilisez cette commande:

    Sudo visudo -f /etc/sudoers.d/foo
    
  • Définissez la permission utilisateur fooname__, 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 /usr/bin/ à l'exception de passwdet de la commande suname__. Remarque: Si l'utilisateur foosouhaite modifier son mot de passe, vous pouvez exécuter la commande passwdsans la commande Sudoname__.

  • Un autre exemple de permission utilisateur fooname__:

    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 quiconque à l'exception de la racine sur TOUTES les machines.

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

14
Lety

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
0
shcherbak