GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter des commandes particulières sans mot de passe Sudo sous Linux

J'utilise un script dans mon système Ubuntu déployé sur AWS. L'objectif principal de ce script est de vérifier si un service spécifique s'exécute à intervalles réguliers (toutes les minutes pour être précis) et de démarrer ce service automatiquement s'il est arrêté pour une raison quelconque. Mais le problème est que j'ai besoin des privilèges sudo pour démarrer le service. Comme vous le savez peut-être déjà, nous devons fournir un mot de passe lorsque nous exécutons quelque chose en tant qu'utilisateur sudo. Mais je ne veux pas faire ça. Ce que je veux réellement faire, c'est exécuter le service en tant que sudo sans mot de passe. Si jamais vous êtes dans une situation comme celle-ci, je connais un petit travail autour, aujourd'hui, dans ce bref guide, je vais vous apprendre à exécuter des commandes particulières sans mot de passe sudo dans les systèmes d'exploitation Linux et Unix.

Regardez l'exemple suivant.

$ sudo mkdir /ostechnix
[sudo] password for sk:

Comme vous pouvez le voir dans la capture d'écran ci-dessus, je dois fournir un mot de passe sudo lors de la création d'un répertoire nommé ostechnix dans le dossier racine (/). Chaque fois que nous essayons d'exécuter une commande avec les privilèges sudo, nous devons entrer le mot de passe. Cependant, dans mon scénario, je ne veux pas fournir le mot de passe sudo. Voici ce que j'ai fait pour exécuter une commande sudo sans mot de passe sur ma machine Linux.

Avis de non-responsabilité : Ceci est uniquement à des fins éducatives. Vous devez être très prudent lors de l'application de cette méthode. Cette méthode est à la fois productive et destructrice. Par exemple, si vous autorisez les utilisateurs à exécuter 'rm' commande sans mot de passe sudo, ils pourraient supprimer accidentellement ou intentionnellement des éléments importants. Vous êtes prévenu !

Exécutez des commandes particulières sans mot de passe sudo sous Linux

Pour quelque raison que ce soit, si vous souhaitez autoriser un utilisateur à exécuter une certaine commande sans donner le mot de passe sudo, vous devez ajouter cette commande dans sudoers fichier.

Je veux l'utilisateur nommé sk pour exécuter mkdir commande sans donner le mot de passe sudo. Voyons comment faire.

Modifier le fichier sudoers :

$ sudo visudo

Ajoutez la ligne suivante à la fin du fichier.

sk ALL=NOPASSWD:/bin/mkdir

Ici, sk est le nom d'utilisateur. Conformément à la ligne ci-dessus, l'utilisateur sk peut exécuter 'mkdir' commande depuis n'importe quel terminal, sans mot de passe sudo.

Vous pouvez ajouter des commandes supplémentaires (par exemple chmod ) avec des valeurs séparées par des virgules comme indiqué ci-dessous.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod

Enregistrez et fermez le fichier. Déconnectez-vous (ou redémarrez) votre système. Maintenant, connectez-vous en tant qu'utilisateur normal 'sk' et essayez d'exécuter ces commandes avec sudo et voyez ce qui se passe.

$ sudo mkdir /dir1

Voir? Même si j'ai exécuté 'mkdir' commande avec les privilèges sudo, il n'y avait pas d'invite de mot de passe. Désormais, l'utilisateur sk vous n'avez pas besoin d'entrer le mot de passe sudo lors de l'exécution de 'mkdir' commande.

Lors de l'exécution de toutes les autres commandes, à l'exception des commandes ajoutées dans les fichiers sudoers, vous serez invité à saisir le mot de passe sudo.

Exécutons une autre commande avec sudo.

$ sudo apt update

Voir? Cette commande me demande d'entrer le mot de passe sudo.

Si vous ne voulez pas que cette commande vous invite à demander le mot de passe sudo, modifiez le fichier sudoers :

$ sudo visudo

Ajoutez le 'apt' commande dans le fichier visudo comme ci-dessous :

sk ALL=NOPASSWD: /bin/mkdir,/usr/bin/apt

Avez-vous remarqué que le chemin du fichier exécutable binaire apt est différent de mkdir ? Oui, vous devez fournir le bon chemin d'accès au fichier exécutable. Pour trouver le chemin du fichier exécutable de n'importe quelle commande, par exemple 'apt' , utilisez 'whereis' commande comme ci-dessous.

$ whereis apt
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz

Comme vous le voyez, le fichier exécutable pour la commande apt est /usr/bin/apt , donc je l'ai ajouté dans le fichier sudoers.

Comme je l'ai déjà mentionné, vous pouvez ajouter n'importe quel nombre de commandes avec des valeurs séparées par des virgules. Enregistrez et fermez votre fichier sudoers une fois que vous avez terminé. Déconnectez-vous et reconnectez-vous à votre système.

Maintenant, vérifiez si vous pouvez exécuter la commande sans utiliser le mot de passe sudo :

$ sudo apt update

Voir? La commande apt ne m'a pas demandé le mot de passe même si je l'ai exécuté avec sudo.

Voici encore un autre exemple. Si vous souhaitez exécuter un service spécifique, par exemple apache2, ajoutez-le comme indiqué ci-dessous.

sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin systemctl restart apache2

Maintenant, l'utilisateur peut exécuter 'sudo systemctl restart apache2' commande sans mot de passe sudo.

Téléchargement recommandé - Cheat Sheet gratuit :"Linux Command Line Cheat Sheet"

Puis-je me ré-authentifier à une commande particulière dans le cas ci-dessus ? Bien sûr que oui! Supprimez simplement la commande ajoutée. Déconnectez-vous et reconnectez-vous.

Vous pouvez également ajouter 'PASSWD:' directive devant la commande. Regardez l'exemple suivant.

Ajoutez/modifiez la ligne suivante comme indiqué ci-dessous.

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt

Dans ce cas, l'utilisateur sk peut exécuter 'mkdir' et 'chmod' commandes sans entrer le mot de passe sudo. Cependant, il doit fournir le mot de passe sudo lors de l'exécution de 'apt' commande.

Suggestion de lecture :

  • Comment accorder et supprimer des privilèges Sudo aux utilisateurs sur Ubuntu
  • Comment modifier le fichier journal Sudo par défaut sous Linux
  • Comment restaurer les privilèges Sudo à un utilisateur
  • Comment trouver tous les utilisateurs de Sudo dans votre système Linux
  • Comment forcer les utilisateurs à utiliser le mot de passe root au lieu de leur propre mot de passe lors de l'utilisation de sudo

Linux
  1. Exécutez des conteneurs sur Linux sans sudo dans Podman

  2. Comment afficher les astérisques lors de la saisie du mot de passe Sudo sous Linux

  3. Comment exécuter un programme spécifique en tant que root sans invite de mot de passe ?

  4. Comment exécuter SCP sans interruption de l'invite de mot de passe sous Linux

  5. Ansible :sudo sans mot de passe

Comment changer le délai d'expiration du mot de passe Sudo sous Linux

Comment exécuter plusieurs commandes Linux en une seule commande

Comment exécuter des commandes Sudo sans mot de passe

Comment exécuter plusieurs commandes Linux à la fois dans le terminal Linux

Comment exécuter un alias avec Sudo sous Linux

Comment exécuter les commandes sudo sans mot de passe