Recherche de site Web

Comment changer l'invite Bash pour un groupe d'utilisateurs spécifique sous Linux


Nous avons déjà examiné comment personnaliser l'invite BASH par défaut sous Linux. Dans ce tutoriel, nous apprendrons comment changer l'invite Bash pour un groupe d'utilisateurs spécifique sous Linux et les systèmes de type Unix.

Avant de configurer des invites BASH personnalisées pour des groupes d'utilisateurs, il est important de comprendre les avantages et les inconvénients de cette approche.

Avantages et inconvénients de l'invite de commandes spécifique à un groupe

Utiliser un invite de commande spécifique à un groupe sous Linux peut être avantageux dans certains scénarios, mais cela comporte également certaines considérations. Voici les avantages et les inconvénients :

Avantages

1. Identification plus facile des rôles des utilisateurs:

  • En personnalisant l'invite de commande en fonction de l'appartenance à un groupe, il devient plus facile d'identifier le rôle ou l'environnement dans lequel vous travaillez. Par exemple, une invite developer informe instantanément l'utilisateur qu'il appartient au groupe ou à l'environnement des développeurs.

2. Réduction des erreurs:

  • Les invites personnalisées peuvent aider à réduire les erreurs, surtout dans les environnements où les utilisateurs passent d'un rôle ou d'un serveur à un autre. Par exemple, une invite distincte pour les utilisateurs admin peut leur rappeler le niveau de permissions plus élevé et encourager la prudence.

3. Expérience Utilisateur Améliorée:

  • Pour les utilisateurs appartenant à plusieurs groupes, une invite personnalisée fournit une indication claire et visuelle de leur groupe actuel, améliorant ainsi l'expérience utilisateur en rendant le terminal plus informatif et convivial.

4. Utile dans les systèmes multi-utilisateurs :

  • Sur les systèmes avec de nombreux utilisateurs, de telles personnalisations peuvent aider à identifier rapidement le type d'utilisateurs connectés et leurs niveaux d'accès, ce qui est bénéfique pour les administrateurs système.

Inconvénients

1. Complexité dans la gestion:

  • La mise en œuvre et la gestion de invites personnalisées peuvent ajouter de la complexité, en particulier sur les systèmes avec un grand nombre d'utilisateurs ou de groupes. Cela nécessite des scripts et une configuration supplémentaires.

2. Potentiel de mauvaise configuration :

  • Si elles ne sont pas correctement configurées, de tels scripts peuvent entraîner des erreurs de configuration. Par exemple, ajouter incorrectement à .bashrc peut provoquer des répétitions indésirables ou même des erreurs de syntaxe pouvant affecter l'environnement de l'utilisateur.

3. Considérations de sécurité:

  • L'ajout automatique aux fichiers de configuration tels que .bashrc pourrait représenter un risque de sécurité s'il n'est pas correctement géré. Il est important de s'assurer que de tels scripts n'ouvrent pas involontairement de vulnérabilités de sécurité.

4. Dépendance à l'égard de l'appartenance à un groupe:

  • Cette méthode repose sur l'appartenance à un groupe de l'utilisateur, qui peut évoluer au fil du temps. Elle exige que les appartenances aux groupes soient correctement gérées et à jour.

5. Dépendance excessive aux indices visuels:

  • Les utilisateurs pourraient devenir trop dépendants de ces indices visuels et faire des suppositions incorrectes sur leurs privilèges ou leur environnement uniquement en se basant sur l'invite, ce qui pourrait entraîner des erreurs, surtout si la configuration de l'invite présente des problèmes.

En résumé, personnaliser l'invite de commande en fonction de l'appartenance à un groupe peut être utile pour améliorer l'expérience utilisateur et réduire les erreurs dans un environnement multi-utilisateurs ou multi-rôles. Cependant, cela nécessite une mise en œuvre et une gestion soigneuses pour éviter la complexité, les erreurs de configuration et les problèmes de sécurité potentiels.

Allons-y et voyons comment changer l'invite de commande pour un groupe d'utilisateurs spécifique dans les systèmes Linux et similaires à Unix.

Les étapes suivantes ont été testées sur un système Ubuntu 22.04 LTS. Nous espérons que cette méthode pourrait également fonctionner sur d'autres distributions Linux.

Changer l'invite Bash pour un groupe d'utilisateurs spécifique

À des fins de démonstration, je vais créer un nouveau groupe appelé 'developers' et un nouvel utilisateur nommé 'senthil'. Ensuite, j'ajouterai l'utilisateur 'senthil' au groupe 'developers'.

En conséquence, chaque fois que l'utilisateur 'senthil' se connecte, son invite changera automatiquement en 'developer-senthil@ubuntu2204:~$'. Voyons comment le faire étape par étape.

Étape 1 - Créer un groupe dans Linux

Créer le Groupe:

Exécutez la commande suivante pour créer un nouveau groupe nommé developers :

$ sudo groupadd developers

Cette commande crée un nouveau groupe appelé developers. Il se peut que vous deviez entrer votre mot de passe si cela vous est demandé.

Étape 2 - Ajouter un nouvel utilisateur et l'assigner au groupe

Créer un nouvel utilisateur:

Pour créer un nouvel utilisateur nommé senthil, utilisez la commande :

$ sudo adduser senthil

Vous serez invité à définir un mot de passe pour le nouvel utilisateur et à remplir certaines informations facultatives sur l'utilisateur. Remplissez-les selon les besoins.

Ajouter l'utilisateur au groupe :

Pour ajouter senthil au groupe developers, utilisez :

$ sudo usermod -aG developers senthil

L'option -aG ajoute l'utilisateur au groupe tout en conservant ses appartenances aux groupes existants.

Étape 3 - Définir une invite Bash personnalisée pour un groupe d'utilisateurs spécifique

Lorsque vous souhaitez modifier l'invite de commande pour les utilisateurs qui sont membres d'un groupe spécifique, vous avez deux options quant à l'endroit où placer le script qui vérifie le groupe de l'utilisateur et modifie l'invite. Le choix dépend de savoir si vous voulez que le changement s'applique à un seul utilisateur ou à plusieurs utilisateurs :

Fichier .bashrc de l'utilisateur individuel :

  • Si vous voulez que la modification s'applique uniquement à un utilisateur spécifique, vous devez ajouter les lignes au fichier .bashrc de cet utilisateur situé dans son répertoire personnel (~/.bashrc).
  • Cette approche est spécifique à l'utilisateur. Chaque utilisateur pour lequel vous souhaitez appliquer ce changement devra ajouter le script à son propre fichier .bashrc.
  • Par exemple, si vous voulez que seul senthil ait une invite différente lorsqu'il fait partie du groupe developers, vous ajouteriez les lignes uniquement au fichier .bashrc de senthil.

Fichier de configuration global /etc/bash.bashrc :

  • Si vous voulez que ce changement s'applique à tous les utilisateurs du système, vous pouvez modifier le fichier global /etc/bash.bashrc.
  • Cette méthode appliquera le changement à l'environnement de chaque utilisateur, mais le script ne changera l'invite que pour les utilisateurs qui font partie du groupe spécifié.
  • Ceci est utile si vous avez plusieurs utilisateurs dans le groupe et que vous souhaitez le même comportement pour tous sans modifier chaque fichier .bashrc individuel.

Avant de faire des modifications dans le fichier local ~/.bashrc ou global /etc/bash.bashrc, je vous recommande vivement de les sauvegarder. Cela vous permet de restaurer les paramètres originaux si quelque chose tourne mal.

Pour sauvegarder le fichier ~/.bashrc de l'utilisateur, exécutez :

$ cp ~/.bashrc ~/.bashrc_backup

Pour sauvegarder le fichier global bashrc, exécutez :

$ sudo cp /etc/bash.bashrc /etc/bash.bashrc_backup

Après avoir sauvegardé le fichier bashrc approprié, ouvrez-le en utilisant votre éditeur préféré.

Ici, je vais appliquer cette méthode à tous les utilisateurs du système, donc je modifie le fichier global /etc/bash.bashrc.

$ sudo nano /etc/bash.bashrc

Ajoutez les lignes suivantes à la fin :

bashrc_file="/home/$(whoami)/.bashrc"
developer_prompt='PS1="developer-\u@\h:\w\$ "'

# Function to add or update PS1 in .bashrc
add_or_update_ps1() {
    prompt_line=$1
    grep -qF -- "$prompt_line" "$bashrc_file" || echo "$prompt_line" >> "$bashrc_file"
}

if id -nG "$(whoami)" | grep -qw "developers"; then
    add_or_update_ps1 "$developer_prompt"
fi

Décomposons le code ci-dessus et voyons ce que fait chaque option.

Définir les variables:

  • bashrc_file contient le chemin vers le fichier .bashrc de l'utilisateur.
  • developer_prompt contient les chaînes PS1 pour les utilisateurs appartenant au groupe developers.

Fonction add_or_update_ps1 :

  • Cette fonction prend une ligne d'invite comme argument.
  • Il utilise grep -qF pour vérifier si la ligne d'invite exacte existe déjà dans .bashrc.
  • Le -- garantit que la chaîne suivante est traitée comme une littérale et non comme une option de commande.
  • S'il n'existe pas (||), la ligne d'invite est ajoutée à .bashrc.

Vérifier l'appartenance au groupe et appliquer l'invite:

  • Le script vérifie si l'utilisateur fait partie du groupe developers.
  • Si l'utilisateur appartient au groupe developers, il appelle add_or_update_ps1 avec developer_prompt.

En résumé, ce script modifie l'invite de commande pour les utilisateurs appartenant au groupe developers en ajoutant une définition d'invite personnalisée à leur fichier .bashrc. Il s'assure que l'invite personnalisée n'est ajoutée qu'une seule fois pour éviter les doublons.

Appuyez sur CTRL+O suivi de CTRL+X pour enregistrer le fichier et quitter.

N'oubliez pas qu'après avoir modifié l'un ou l'autre fichier, les modifications ne prendront effet que lorsqu'une nouvelle session shell sera démarrée. Les utilisateurs peuvent soit se déconnecter puis se reconnecter, soit exécuter source ~/.bashrc dans leur session actuelle pour appliquer les modifications immédiatement.

Appliquez les modifications en utilisant la commande :

$ source /etc/bash.bashrc

Étape 4 - Vérifier l'invite Bash

Déconnectez-vous maintenant et reconnectez-vous en tant qu'utilisateur 'senthil'. Ouvrez votre Terminal et vous verrez que l'invite de l'utilisateur a changé pour ressembler à ceci :

Changer l'invite Bash pour un groupe d'utilisateurs spécifique sous Linux

Si votre système n'a pas d'interface graphique, vous pouvez le vérifier en vous connectant au système via SSH depuis d'autres systèmes.

developer-senthil@ubuntu2204:~$

Changer l'invite Bash pour un groupe d'utilisateurs spécifique

Tu vois ? L'invite Bash de l'utilisateur a été changée.

Changer l'invite Bash en fonction de l'appartenance au groupe Sudo

Vous pouvez modifier davantage ce script pour distinguer entre différents types d'utilisateurs.

Disons par exemple, vous pouvez distinguer les utilisateurs normaux et les utilisateurs administratifs qui appartiennent au groupe sudo sous Linux. Cela implique de modifier l'invite de commande en fonction de si l'utilisateur a des privilèges sudo.

Ajoutez les lignes suivantes au fichier global /etc/bash.bashrc ou au fichier .bashrc d'un utilisateur individuel :

bashrc_file="/home/$(whoami)/.bashrc"
sudo_prompt='PS1="sudouser-\u@\h:\w\$ "'
normal_prompt='PS1="normaluser-\u@\h:\w\$ "'

# Function to add or update PS1 in .bashrc
add_or_update_ps1() {
    prompt_line=$1
    grep -qF -- "$prompt_line" "$bashrc_file" || echo "$prompt_line" >> "$bashrc_file"
}

if id -nG "$(whoami)" | grep -qw "sudo"; then
    add_or_update_ps1 "$sudo_prompt"
else
    add_or_update_ps1 "$normal_prompt"
fi

Ce script changera l'invite en sudouser-<username>@hostname: ~$ pour les utilisateurs du groupe sudo et en normaluser-<username>@hostname: ~$ pour les utilisateurs n'appartenant pas au groupe sudo.

Est-ce une configuration recommandée ?

Que cette configuration soit recommandée dépend du contexte et des besoins du système :

Avantages:

  • Identification claire des rôles : Semblable aux invites spécifiques à un groupe, cette configuration aide à identifier immédiatement si la session utilisateur actuelle dispose des privilèges sudo, ce qui peut être particulièrement utile dans les environnements multi-utilisateurs.
  • Prévention des erreurs : Il agit comme un rappel constant des privilèges de l'utilisateur, ce qui peut potentiellement empêcher l'exécution accidentelle de commandes avec des privilèges élevés.

Inconvénients:

  • Complexité et maintenance : Comme toute personnalisation, elle ajoute un niveau de complexité à la configuration du système et nécessite une maintenance appropriée.
  • Faux sentiment de sécurité : Les utilisateurs pourraient développer un faux sentiment de sécurité ou de complaisance, en pensant que le changement d'invite reflète pleinement leurs privilèges. Cependant, les autorisations réelles sont plus nuancées et dépendent du contexte.
  • Potentiel de mauvaise configuration : Mal implémenté, cela pourrait entraîner de la confusion ou une mauvaise configuration.

En résumé, personnaliser l'invite de commande pour distinguer les utilisateurs normaux des utilisateurs sudo peut être utile dans certains environnements, en particulier là où l'identification rapide des privilèges des utilisateurs est importante.

Cependant, ce n'est pas recommandé universellement, car cela ajoute de la complexité et dépend des besoins spécifiques et des capacités de gestion des administrateurs système.

Restaurer le fichier .bashrc aux paramètres par défaut

Si vous rencontrez des problèmes, vous pouvez annuler les modifications en restaurant le fichier .bashrc à partir de votre sauvegarde. Si vous n'avez pas fait de sauvegarde, vous pouvez soit modifier le fichier manuellement à nouveau et supprimer ou commenter le script personnalisé que vous avez ajouté lors des étapes précédentes.

De plus, il existe une version par défaut du fichier .bashrc dans le répertoire /etc/skel/ sur les systèmes Debian et Ubuntu.

$ ls -al /etc/skel/
total 32
drwxr-xr-x   2 root root  4096 Jan  8 18:02 .
drwxr-xr-x 138 root root 12288 Jan  8 17:55 ..
-rw-r--r--   1 root root   220 Jan  6  2022 .bash_logout
-rw-r--r--   1 root root  4116 Jan  8 18:00 .bashrc
-rw-r--r--   1 root root   807 Jan  6  2022 .profile

Copiez la version par défaut du fichier ~/.bashrc dans votre version actuelle comme suit :

$ cp /etc/skel/.bashrc ~/

Enfin, exécutez la commande suivante pour mettre à jour les modifications.

$ source ~/.bashrc

Pour plus de détails, consultez le lien suivant :

Comment Restaurer le Fichier .bashrc aux Paramètres Par Défaut dans Ubuntu

Conclusion

Dans ce tutoriel, nous avons discuté de la manière de définir un invite bash personnalisé pour les utilisateurs d'un certain groupe, ainsi que des avantages et des inconvénients de la modification de l'invite de commande sous Linux avec des scripts d'exemple.

Bien que la modification des invites bash puisse être utile pour des besoins spécifiques dans certains environnements, elle n'est généralement pas recommandée pour les débutants.

Il est toujours bon de tester cette approche dans une machine virtuelle et de peser les avantages par rapport aux risques et complexités potentiels avant de mettre en œuvre ces changements.

Lecture connexe :

  • Comment changer l'invite sudo sous Linux