Installation sudo

Installation sudo

Et si vous voulez qu'un utilisateur exécute une commande en tant qu'un autre utilisateur système sans échanger des mots de passe. Par exemple, vous pouvez vouloir qu'un utilisateur John exécute une commande finir ou un script de shell bash personnalisé en tant qu'utilisateur Greg ou même en tant que racine d'utilisateur (superutilisateur) sans échange de mot de passe. Dans ce cas, un utilitaire sudo avec son fichier de configuration / etc / sudoers sera votre ami. Cet utilitaire est très largement utilisé mais en même temps très peu compris par les utilisateurs de Linux de tous niveaux.

Ce court article décrit une utilisation et un format sudo du fichier de configuration sudoers.

Installation sudo

Nous devons d'abord nous assurer que sudo et / etc / sudoers le fichier de configuration sudo est disponible. Pour faire cette course:

$ qui sudo 

ou

$ sudo -v 

La première commande devrait révéler un emplacement d'un exécutable binaire sudo et le deuxième programme publiera un numéro de version de la commande sudo. Le fichier de configuration sudo sudoers est dans la plupart des cas situé dans / etc / sudoers. Vous pouvez utiliser la commande LS pour localiser ce fichier.

$ ls -l / etc / sudoers -r - r ----- 1 racine racine 481 2010-04-08 21:43 / etc / sudoers

Remarque les autorisations par défaut et «doivent être» du fichier a / etc / sudoers. Seuls les racines de l'utilisateur et les utilisateurs qui appartiennent à un groupe racine sont capables de lire ce fichier.

$ cat / etc / sudoers chat: / etc / sudoers: permission refusée 

Si vous avez eu des problèmes lors de l'exécution ci-dessus, les chances sont que Sudo n'est pas installé sur votre système. Ceci est très peu probable si vous exécutez Ubuntu, Fedora ou OpenSuse en tant qu'utilitaire sudo est installé sur votre système par défaut. Dans le cas où vous exécutez Debian Exécuter une commande Linux suivante pour installer l'utilitaire sudo:

NOTE: Il est très peu probable que l'utilitaire sudo ne soit pas installé sur votre système car la plupart des distributions Linux décentes ont l'installation de l'utilitaire sudo par défaut.

# apt-get install sudo 

Pour les distributions de Yum (RPM), utilisez cette commande pour installer Sudo:

# yum install sudo 


Exécution du script bash en utilisant sudo

Créons un script de bash simple qui nous fournira un environnement de test de base pour une commande sudo. Les commandes Linux suivantes créeront un script bash appelé sudo_test.SH dans le répertoire / usr / local / bin et le rendre exécutable:

$ Su - Mot de passe: # CD / USR / LOCAL / BIN / # ECHO "PS AUX | Grep $$"> sudo_test.sh # echo "Touch / tmp / sudo_file.tmp ">> sudo_test.sh # chmod + x sudo_test.shot 

Ce script ne fera rien, sauf qu'il imprimera l'ID de processus du sudo_test.SHE BASH Script avec son ID de propriétaire pertinent en tant que sortie STDOUT et en même temps, il créera un fichier appelé sudo_file.TMP dans / TMP / répertoire. Maintenant, nous exécutons ce script en tant qu'utilisateur root et vérifions un propriétaire de ce processus.

./ sudo_test.SH [1] 3513 / USR / LOCAL / BIN # PS AUX | grep 3513 racine 3513 0.0 0.1 4260 908 PTS / 4 S 16:32 0:00 Bash Root 3516 0.0 0.0 1700 268 PTS / 4 R + 16:32 0:00 Grep 3513 

Comme vous pouvez le voir, l'ID de processus 3513 appartient à une racine utilisateur. De plus, en exécutant la commande LS, nous pouvons observer ce fichier / tmp / sudo_file.TMP appartient à un utilisateur root.

# ls -l / tmp / sudo_file.tmp -rw-r - r-- 1 racine root 0 2010-08-29 17:31 / tmp / sudo_file.TMP 

Retirer / tmp / sudo_file.Fichier TMP et essayez d'exécuter ce même script avec un autre utilisateur nommé "Lilo". Notez les autorisations du script après l'exécution de la commande LS -L.

$ whoami lilo $ ls -l / usr / local / bin / sudo_test.sh -rwxr-xr-x 1 racine racine 44 2010-08-29 17:31 / usr / local / bin / sudo_test.sh $ / usr / local / bin / sudo_test.sh racine 3502 0.0 0.3 4260 1744 PTS / 4 S + 16:31 0:00 Bash Lilo 3773 0.0 0.1 3116 720 PTS / 5 R + 17:36 0:00 GREP 3502 $ LS -L / TMP / SUDO_FILE.tmp -rw-r - r-- 1 lilo lilo 0 2010-08-29 17:36 / tmp / sudo_file.TMP

Comme vous pouvez le voir, le script est exécuté par l'utilisateur de Lilo et le propriétaire de ce processus est également un utilisateur Lilo. Le fichier créé dans A / TMP / Directory appartient également à l'utilisateur Lilo. Avant de continuer, veuillez supprimer / tmp / sudo_file.fichier TMP.

Donner des autorisations Sudo à l'utilisateur

Notre prochaine tâche consiste maintenant à faire de l'utilisateur de Lilo pour pouvoir exécuter / usr / local / bin / sudo_test.script sh avec les privilèges racine et sans offrir des références racines. Pour ce faire, nous devons modifier a / etc / sudoers le fichier de configuration sudo. Étant donné que la racine n'a lu que l'accès à un fichier de configuration sudo / etc / sudoers et que nous ne voulons pas modifier cela, nous utiliserons la commande Visudo exécutée comme racine pour ajouter une ligne suivante à ce fichier:

lilo all = (root) / usr / local / bin / sudo_test.shot
  • Lilo: l'utilisateur qui aura la permission d'exécuter le / usr / local / bin / sudo_test.script
  • Tout: correspond à n'importe quoi et dans ce contexte, il s'applique à un nom d'hôte
  • (root): cette commande sera exécutée avec des privilèges racine
  • / usr / local / bin / sudo_test.SH: la commande réelle


En conséquence, lorsque nous essayons maintenant d'exécuter le / usr / local / bin / sudo_test.Script sh en tant qu'utilisateur Lilo utilisant la commande sudo et entrez le mot de passe de Lilo:

$ rm / tmp / sudo_file.tmp $ sudo / usr / local / bin / sudo_test.SH [sudo] Mot de passe pour Lilo: Root 3502 0.0 0.3 4260 1744 PTS / 4 S 16:31 0:00 Bash Root 3793 0.0 0.1 3116 720 PTS / 5 S + 17:46 0:00 GREP 3502 $ LS -L / TMP / SUDO_FILE.tmp -rw-r - r-- 1 racine root 0 2010-08-29 17:46 / tmp / sudo_file.TMP 

L'ID de processus 3502 appartient à une racine et le propriétaire du / tmp / sudo_file.TMP est un utilisateur root. De plus, si vous souhaitez par exemple qu'un utilisateur Lilo exécute un script / usr / local / bin / sudo_test.sh en tant qu'utilisateur j «John» Alter / etc / sudoers config File et remplacer (root) par (John) en utilisant la commande visudo.

sudo sans mot de passe

Lorsqu'une commande sudo est exécutée, un utilisateur est invité à un mot de passe. Ce bahaviouv par défaut d'une commande sudo peut être modifié par le fichier de configuration d'édition / etc / sudoers. Si nous ne voulons pas qu'on nous demande un mot de passe, nous modifions le fichier A / etc / sudoers en modifiant la ligne:

lilo all = (root) / usr / local / bin / sudo_test.shot 

avec

lilo all = (root) nopasswd: / usr / local / bin / sudo_test.shot 

Timeout de mot de passe sudo

Le nombre de minutes avant que Sudo demande à un utilisateur de saisir à nouveau un mot de passe est par défaut 15. Ce comportement peut être modifié en spécifiant la directive Timestamp_timeout de Sudo dans le fichier / etc / sudoers. Pour augmenter le délai de mot de passe sudo à 60 minutes, nous ajoutons le fichier TIMESTAmp_timeout Sudo dans / etc / sudoers en modifiant une ligne:

Par défaut Env_Reset 

pour

Par défaut Env_Reset, timestamp_timeout = 60 

En savoir plus sur sudo

Notez qu'il y a beaucoup plus à apprendre sur la commande sudo et ses capacités. Une bonne façon d'en savoir plus sur la commande sudo est de commencer:

homme sudo 

ou pour accéder à la page de l'homme pour le fichier de configuration sudoers

homme sudo 

Tutoriels Linux connexes:

  • Comment éliminer les bloatware de votre mobile Android Samsung…
  • Gestion de la saisie des utilisateurs dans les scripts bash
  • Comment casser le mot de passe zip sur Kali Linux
  • Comment créer Modifier et supprimer le compte des utilisateurs sur Linux
  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Linux - Réinitialiser l'expiration du mot de passe, l'âge et l'histoire
  • Manipulation de Big Data pour le plaisir et le profit Partie 1
  • Masterring Bash Script Loops