GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter des commandes Sudo sans mot de passe

En travaillant avec Linux, nous constatons que l'accès à certains fichiers ou l'exécution d'opérations sensibles nécessite que les utilisateurs aient des privilèges élevés. La commande sudo élève temporairement les privilèges de l'utilisateur permettant à un utilisateur d'exécuter des commandes sensibles ou d'accéder à des fichiers sans restrictions.

La syntaxe de la commande sudo est le suivant :

$ sudo --help

Nous discutons de quatre façons d'exécuter les commandes sudo sans avoir à saisir un mot de passe à chaque fois. Les deux premiers impliquent de modifier les sudoers et sudoers.d tandis que les deux derniers impliquent l'exécution de commandes pour élever les privilèges de l'utilisateur à root.

1. Modification du fichier /etc/sudoers

Essayons d'abord d'exécuter une commande avec sudo et voir si nous recevons une invite de mot de passe :

$ sudo systemctl start mariadb

Exécuter les commandes Sudo sans mot de passe

Si nous voulons l'utilisateur Alice pour exécuter tous les sudo commandes sans avoir besoin d'un sudo mot de passe pour tous les hôtes, nous éditons le fichier sudoers.

$ sudo visudo

et utilisez le NOPASSWD directive comme indiqué :

alice ALL=(ALL) NOPASSWD: ALL

Exécuter des commandes Sudo particulières sans mot de passe

Pour autoriser l'utilisateur Alice pour exécuter une seule commande sudo spécifique sans entrer de mot de passe, vous devez utiliser la ligne suivante dans le fichier sudoers.

alice ALL=(ALL) NOPASSWD: /bin/systemctl start mariadb

Essayez maintenant d'exécuter quelques commandes et voyez…

$ sudo systemctl start mariadb
$ sudo systemctl status mariadb
$ cat /etc/sudoers

À partir de la session de terminal ci-dessus, nous avons démarré MariaDB service en raison des modifications que nous avons apportées au fichier sudoers, nous n'avons pas d'invite de mot de passe. Notez également que pour les commandes suivantes, nous avons une invite de mot de passe.

Exécuter les commandes Sudo sur un hôte spécifique sans mot de passe

Pour permettre à l'utilisateur d'exécuter les commandes sur un hôte spécifique en tant que root , au lieu d'utiliser ALL nous écrivons :

alice linuxshelltips1=(root) NOPASSWD: /bin/systemctl start mariadb

Ce qui précède permet à Alice pour exécuter la commande listée sur un hôte avec le nom linuxshelltips1 sans saisir de mot de passe.

Pour permettre l'exécution de trois commandes avec sudo privilèges pour un hôte linuxshelltips1 et n'ayant pas d'invite de mot de passe, nous les listons comme suit :

alice linuxshelltips1=(ALL) NOPASSWD: /bin/systemctl start mariadb, /bin/systemctl status mariadb, /bin/cat /etc/sudoers

Ici, nous autorisons l'utilisateur Alice pour démarrer et vérifier l'état de mariadb service sans entrer de mot de passe sur un hôte avec le nom d'hôte linuxshelltips1 . L'utilisateur peut également concaténer les /etc/sudoers fichier sans saisir de mot de passe.

Les trois commandes sont exécutées sans nécessiter de mot de passe. Cependant, lorsque nous essayons d'arrêter le service mariadb, un mot de passe nous est demandé car nous ne l'avons pas spécifié dans le fichier sudoers.

Exécuter les commandes Sudo sans mot de passe pour les utilisateurs du groupe

Nous pouvons également autoriser l'exécution des commandes sudo sans entrer de mot de passe pour un groupe d'utilisateurs, par exemple group1 à quel utilisateur Alice appartient.

%group1 ALL=(ALL) NOPASSWD: ALL

Nous pouvons également combiner des utilisateurs, des groupes et des commandes. Par exemple, si nous voulons qu'un utilisateur ou un groupe spécifique exécute des commandes spécifiques, nous collons la ligne suivante dans le fichier sudoers :

alice,%group2 ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Alice et tous les utilisateurs appartenant au groupe2 peut exécuter toutes les commandes systemctl, cat et kill avec sudo et ne pas avoir d'invite de mot de passe.

Nous pouvons également autoriser des utilisateurs spécifiques (alice, bob) à exécuter des commandes spécifiques (systemctl, cat, kill) en les listant comme suit :

bob,alice, ALL=(ALL) NOPASSWD: /bin/systemctl, /bin/cat, /bin/kill

Après avoir enregistré le fichier, alice et bob peut exécuter les commandes systemctl, cat et kill sur tous les hôtes sans être invité à entrer un mot de passe.

Remarquez comment nous listons les commandes dans /bin/ répertoire, tel que; bin/systemctl ou /bin/cat. Au lieu de cela, nous pourrions inclure tout le répertoire et terminer par un ‘/’ personnage. Cela signifierait que l'utilisateur peut exécuter n'importe quelle commande dans le /bin annuaire. Cependant, cela ne s'applique pas aux commandes dans les sous-répertoires de /bin répertoire.

Par exemple, pour autoriser Alice pour exécuter toutes les commandes dans /bin/ répertoire nous écrivons :

alice ALL=(ALL) NOPASSWD: /bin/

Alice peut maintenant exécuter toutes les commandes sur tous les hôtes qui nécessitent des privilèges sudo situés dans le /bin/ répertoire sans exiger de mot de passe.

2. Modification du fichier /etc/sudoers.d

Alternativement, il est plus sûr d'apporter des modifications à /etc/sudoers.d au lieu du fichier sudoers. Cela rend la gestion des privilèges sudo plus facile à gérer et laisse le fichier des sudoers intact.

Notez que tout ce dont nous avons discuté dans la section précédente est applicable ici, la seule différence est que nous travaillerons avec le sudoers.d fichier pour des raisons de sécurité.

Par exemple, créons un fichier pour alice lui permettant d'exécuter des commandes sudo sur un hôte spécifique sans entrer de mot de passe.

$ sudo nano /etc/sudoers.d/alice

Une fois le fichier ouvert, nous collons la ligne suivante :

alice linxshelltips=(root) NOPASSWD: /bin/

L'utilisateur peut maintenant exécuter toutes les commandes sudo dans le /bin/ répertoire sans entrer de mot de passe sur l'hôte avec le nom d'hôte linuxshelltips .

Nous pourrions également spécifier des commandes sudo pouvant être exécutées par un groupe d'utilisateurs comme suit :

$ sudo nano /etc/sudoers.d/groups

Nous collons la ligne suivante pour autoriser tous les membres du group1 pour exécuter toutes les commandes sudo sur tous les hôtes sans entrer de mot de passe.

%group1 ALL=(ALL) NOPASSWD: ALL

La gestion des privilèges sudo de cette manière nous permet de les gérer facilement sans se soucier de casser quelque chose.

3. Correction du fichier Sudoers

Remarquez comment nous utilisons visudo éditer les fichiers sudoers ? C'est la convention car nous voulons éviter de casser le système. Lorsque nous exécutons visudo il vérifie le fichier pour s'assurer que nous n'avons rien gâché, par exemple en termes de syntaxe.

Si à la place nous avons utilisé un éditeur de texte brut et fait des erreurs, cela nous empêchera de modifier à nouveau le fichier car nous avons besoin des privilèges sudo pour modifier le fichier.

Utiliser visudo empêche également plusieurs modifications du fichier sudoers à la fois, c'est-à-dire que si un autre utilisateur modifie le fichier, les autres utilisateurs ne seront pas autorisés à modifier le fichier.

En supposant que le fichier sudoers est foiré et que nous sommes bloqués. Nous utilisons le pkexec commande qui est une alternative à la commande sudo.

$ pkexec visudo

Une fois que nous avons accès au fichier sudoers, nous pouvons corriger l'erreur. Par exemple, pour corriger le /etc/sudoers.d/alice fichier, on écrit :

$ pkexec visudo /etc/sudoers.d/alice

4. Utilisation de la commande "sudo -s"

Pour exécuter ces commandes sans saisir de mot de passe à chaque fois, nous exécutons la commande :

$ sudo -s

Lorsque nous saisissons le mot de passe une fois, pour toutes les commandes sudo suivantes dans cette session de terminal, nous n'avons pas à le saisir à nouveau.

Maintenant, si nous essayons d'exécuter une commande sudo, nous ne serons pas invités à entrer un mot de passe :

$ sudo systemctl start mariadb.service

Nous quittons ce mode en émettant la exit commande :

$ exit

5. Utilisation de la commande "sudo su"

Une autre façon d'exécuter des commandes sudo sans être invité à saisir un mot de passe consiste à exécuter la commande sudo su pour devenir l'utilisateur root. Une fois cette commande exécutée et que nous avons saisi le mot de passe une fois, puis pour toutes les commandes sudo suivantes, nous n'avons pas besoin de saisir le mot de passe pour qu'elles s'exécutent.

$ sudo su

Maintenant, nous avons des privilèges root, donc toutes les commandes sudo ultérieures que nous exécutons ne nous demanderont pas de saisir un mot de passe.

Généralement, pour exécuter des commandes sudo sans mot de passe, nous utilisons la syntaxe suivante lors de la modification de sudoers.d fichier :

user_list host_list=effective_user_list tag_list command_list

Où,

  • liste_utilisateurs il peut s'agir d'utilisateurs, de groupes ou d'alias spécifiques.
  • host_list est le nom d'hôte des hôtes dans lesquels un utilisateur peut exécuter des commandes sudo sans mot de passe.
  • effective_user_list spécifie la liste des utilisateurs s'exécutant en tant qu'utilisateur actuel ou en tant qu'alias de l'utilisateur actuel.
  • tag_list spécifie des balises telles que NOPASSWD .
  • command_list spécifie une liste de commandes sudo que l'utilisateur ou le groupe peut exécuter sans nécessiter de mot de passe.

L'exécution de commandes sudo sans invite à entrer le mot de passe est considérée comme un risque de sécurité. Une invite de mot de passe nous donne non seulement une chance de confirmer une commande avant qu'elle ne soit exécutée, mais empêche également les utilisateurs non autorisés d'effectuer des actions au-delà de leurs privilèges.

Par exemple, le ‘sudo rm -rf /’ La commande efface tout le système de fichiers. Cette commande est irréversible et par conséquent, il est sage d'avoir une invite de mot de passe car cela nous donne une chance d'évaluer cette action.


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

  2. Ssh - Besoin d'un Tty pour exécuter Sudo si je peux Sudo sans mot de passe?

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

  4. Comment exécuter le script en tant qu'autre utilisateur sans mot de passe ?

  5. Comment exécuter automatiquement des commandes lors de la connexion SSH ?

Comment exécuter des commandes Linux en arrière-plan

Comment réinitialiser le mot de passe sudo

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

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

Comment exécuter un alias avec Sudo sous Linux

Comment exécuter les commandes sudo sans mot de passe