abonnel-siteweb/data/pages/informatique/linux/system/choisir-entre-adduser-et-us...

88 lines
4.3 KiB
Plaintext

====== Choisir entre adduser et useradd ======
{{ :dummy.png?75x75|}}
[[informatique:linux:commandes:useradd|useradd]] et [[informatique:linux:commandes:adduser|adduser]] sont deux commandes UNIX différentes pour ajouter un nouvel utilisateur sur un système Linux. La principale différence entre les deux commandes est que ''adduser'' est une commande de niveau supérieur qui est conçue pour être plus conviviale et interactive, tandis que ''useradd'' est une commande plus basique qui nécessite que l'utilisateur spécifie plus de détails lors de l'ajout d'un utilisateur.
Voici quelques différences plus spécifiques entre les deux commandes :
* ''adduser'' est une commande interactive qui demande à l'utilisateur de saisir les détails de l'utilisateur qu'il veut ajouter, comme le nom complet, le mot de passe, le groupe principal, etc. En revanche, useradd ne demande que le nom d'utilisateur, et l'utilisateur doit spécifier les autres détails dans les options de la commande.
* ''adduser'' crée un nouveau répertoire de travail pour l'utilisateur dans le répertoire ''/home'', tandis que useradd ne crée pas automatiquement ce répertoire.
* ''adduser'' ajoute automatiquement l'utilisateur aux groupes supplémentaires spécifiés dans le fichier de configuration ''/etc/adduser.conf'', tandis que ''useradd'' ne le fait pas.
Dans l'ensemble, ''adduser'' est souvent plus convivial et pratique pour ajouter des utilisateurs, tandis que ''useradd'' est plus approprié pour une utilisation dans des scripts ou pour des situations où les détails de l'utilisateur sont déjà connus.
===== Exemple de script =====
Voici un exemple de script shell qui utilise la commande ''useradd'' et reprend les fonctionnalités de la commande ''adduser'' :
<code BASH>
#!/bin/bash
# Définition des couleurs pour l'affichage de messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# Fonction pour afficher un message d'erreur
function print_error() {
echo -e "${RED}[ERROR] $1${NC}"
}
# Fonction pour afficher un message d'information
function print_info() {
echo -e "${YELLOW}[INFO] $1${NC}"
}
# Fonction pour afficher un message de succès
function print_success() {
echo -e "${GREEN}[SUCCESS] $1${NC}"
}
# Fonction pour ajouter un nouvel utilisateur avec la commande useradd
function add_user() {
local username=$1
local realname=$2
local password=$3
local homedir=$4
local shell=$5
local groups=$6
# Vérifier si l'utilisateur existe déjà
if id -u "$username" >/dev/null 2>&1; then
print_error "L'utilisateur $username existe déjà."
return 1
fi
# Créer un nouveau répertoire home pour l'utilisateur
if [ ! -d "$homedir" ]; then
mkdir -p "$homedir"
chmod 700 "$homedir"
chown "$username:$username" "$homedir"
fi
# Ajouter l'utilisateur avec la commande useradd
useradd -c "$realname" -d "$homedir" -s "$shell" -G "$groups" -m "$username"
# Définir le mot de passe de l'utilisateur
if [ -n "$password" ]; then
echo "$username:$password" | chpasswd
fi
print_success "L'utilisateur $username a été ajouté avec succès."
}
</code>
Dans ce script, nous avons défini une fonction ''add_user'' qui prend en paramètre les mêmes arguments que la commande ''adduser'' : le nom d'utilisateur, le nom réel de l'utilisateur, le mot de passe, le répertoire home, le shell et les groupes supplémentaires. La fonction vérifie d'abord si l'utilisateur existe déjà, puis crée un nouveau répertoire ''home'' pour l'utilisateur si nécessaire, puis ajoute l'utilisateur avec la commande ''useradd''. Enfin, la fonction définit le mot de passe de l'utilisateur si un mot de passe a été fourni.
Nous avons également défini des fonctions pour afficher des messages d'erreur, d'information et de succès. Ces fonctions peuvent être utilisées pour fournir des commentaires sur les opérations effectuées par le script.
Exemple d'utilisation de la fonction ''add_user'' :
<code BASH>
add_user "jdoe" "John Doe" "password" "/home/jdoe" "/bin/bash" "sudo,www-data"
</code>
L'exemple d'utilisation ajoute un nouvel utilisateur avec le nom ''jdoe'', le nom réel "John Doe", le mot de passe "password", le répertoire home ''/home/jdoe'', le shell ''/bin/bash'' et les groupes supplémentaires ''sudo'' et ''www-data''.