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?
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 foo
name__, ses groupes sont foo
et Sudo
name__. groups
Le résultat de la commande est le suivant:
foo Sudo
Supprimez l'utilisateur foo
de Sudo
group: gpasswd -d foo Sudo
après cela, l'utilisateur foo
ne 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 foo
name__, par exemple:
foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
Cela signifie que l'utilisateur foo
peut exécuter toutes les commandes du répertoire /usr/bin/
à l'exception de passwd
et de la commande su
name__. Remarque: Si l'utilisateur foo
souhaite modifier son mot de passe, vous pouvez exécuter la commande passwd
sans la commande Sudo
name__.
Un autre exemple de permission utilisateur foo
name__:
foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
Cela signifie que l'utilisateur foo
peut 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.
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