Nous abordons dans cette partie la gestion des comptes d'utilisateurs (création, modification et suppression) qui est une des premières tâches de l'administrateur système.
Tout accès au système est effectué par l'intermédiaire de comptes, et tous les processus sont exécutés par des utilisateurs, la gestion des comptes et des utilisateurs est donc capitale. Chaque compte est associé avec un certain nombre d'informations utilisé pour identifier le compte.
User name - nom d'utilisateur : c'est le nom tapé à l'invite
login:. Les noms d'utilisateur doivent être uniques sur le système; vous ne pouvez pas avoir deux utilisateurs avec le même nom d'utilisateur. Il y a un certain nombre de règles pour la création de noms d'utilisateur valides, documentées dans passwd(5);.Password - mot de passe : Chaque compte est associé à un mot de passe. Le mot de passe peut être vide, dans ce cas aucun mot de passe ne sera requis pour accéder au système. Ceci est une très mauvaise idée; chaque compte devrait avoir un mot de passe.
User ID (UID) - identifiant utilisateur : L'UID est un nombre compris entre 0 et 65535, utilisé pour identifier de façon unique un utilisateur sur le système. Au niveau interne, FreeBSD utilise l'UID pour identifier les utilisateurs--toute commande qui vous permet de spécifier un utilisateur convertira le nom d'utilisateur en son UID avant de le traiter.
Group ID (GID) - identifiant de groupe : Le GID est un nombre compris entre 0 et 65535, utilisé pour identifier de façon unique le groupe principal auquel appartient l'utilisateur. Les groupes sont un mécanisme pour contrôler l'accès aux ressources qui est basé sur le GID de l'utilisateur plutôt que sur son UID. Un utilisateur peut également appartenir à plus d'un groupe.
Login class - classe de session :Les classes de session sont une extension du mécanisme de groupe qui apporte une flexibilité supplémentaire quand on adapte le système aux différents utilisateurs.
Password change time - durée de vie d'un mot de passe : Par défaut FreeBSD n'oblige pas les utilisateurs à changer leur mot de passe régulièrement. Vous pouvez forcer cela en fonction de l'utilisateur, en obligeant certains ou tous les utilisateurs à changer leur mot de passe après qu'une certaine période de temps se soit écoulée.
Account expiry time - date d'expiration d'un compte : Par défaut FreeBSD ne désactive pas de comptes après une certaine période.Après la durée d'expiration écoulée le compte ne pourra plus être utilisé pour ouvrir de session sur le système, bien que les répertoires et les fichiers attachés au compte seront conservés.
User's full name - nom complet d'utilisateur : Le nom d'utilisateur identifie uniquement le compte sur FreeBSD, mais ne reflète pas nécessairement le nom réel de l'utilisateur. Cette information peut être associée avec le compte.
Home directory - répertoire utilisateur : Le répertoire utilisateur est le chemin complet vers un répertoire sur le système dans lequel se retrouve l'utilisateur quand il ouvre une session sur le système. Une convention commune est de mettre tous les répertoires d'utilisateurs sous /home/username ou /usr/home/username. L'utilisateur pourra stocker ses fichiers personnel dans son répertoire utilisateur et dans tout sous-répertoire qu'il pourra y créer.
User shell - interpréteur de commandes de l'utilisateur : L'interpréteur de commandes fournit aux utilisateurs l'environnement par défaut pour communiquer avec le système. Il existe plusieurs différents types d'interpréteurs de commandes, et les utilisateurs expérimentés auront leur préférence, qui peut se refléter dans le paramétrage de leur compte.
Il y a trois principales sortes de comptes: le super-utilisateur, les utilisateurs système, et les comptes utilisateur. Le compte super-utilisateur, normalement appelé root, est utilisé pour gérer le système sans aucune limitation de privilèges. Les utilisateurs système exécutent des services. Et enfin, les comptes utilisateur sont utilisés par de véritables utilisateurs, qui ouvrent des sessions, lisent leur courrier électronique, et ainsi de suite.
Les informations concernant la définition d'un compte utilisateur sont principalement stockées dans les fichiers /etc/passwd et /etc/group, selon qu'il s'agisse d'un système GNU/Linux ou d'un système xBSD dans les fichiers /etc/shadow et /etc/master.passwd. Avant d'en présenter la structure syntaxique, intéressons nous à déterminer ce qu'implique la création et la destruction d'un compte. Enfin, pour finir nous présenterons les principales commandes de gestion des comptes.
Le compte super-utilisateur, habituellement appelé root, est préconfiguré pour simplifier l'administration système, et ne devrait pas être utilisé pour des tâches quotidiennes comme l'envoi et la réception de courrier électronique, l'exploration du système, ou la programmation.
Cela parce que le super-utilisateur, à la différence des comptes utilisateurs ordinaires, peut agir sans aucune limite, et une mauvaise utilisation du compte super-utilisateur peut être à l'origine de résultats catastrophiques. On ne peut (normalement !) pas endommager par erreur le système avec un compte utilisateur, il est donc généralement préférable d'utiliser des comptes utilisateur ordinaires chaque fois que c'est possible, à moins d'avoir particulièrement besoin de droits supplémentaires.
Vous devriez toujours vérifier et revérifier les commandes que vous tapez en tant que super-utilisateur, parce qu'un espace en trop ou un caractère manquant peuvent signifier la perte définitive de données.
Les utilisateurs système sont ceux utilisés pour exécuter des services comme le DNS, le courrier électronique, les serveurs web, et ainsi de suite. La raison de cela est la sécurité; si tous les services s'exécutaient avec les droits du super-utilisateur, ils pourraient agir sans aucune restriction.
Des exemples d'utilisateurs système sont daemon, operator, bind (pour le serveur de noms de domaine), news, et www
nobody est l'utilisateur sans privilèges générique du système. Cependant, il est important de garder à l'esprit que plus grand est le nombre de services utilisant nobody, plus grand sera le nombre de fichiers et de processus associés à cet utilisateur, et par conséquent plus grand sera le nombre de privilèges de cet utilisateur.
Les comptes utilisateur sont le principal moyen pour les véritables utilisateurs d'accéder au système, ces comptes isolent l'utilisateur du reste de l'environnement, empêchant les utilisateurs d'endommager le système et ou les comptes d'autres utilisateurs, tout en leur permettant de personnaliser leur environnement sans incidence pour les autres utilisateurs.
Chaque personne accédant à votre système ne devrait posséder que son propre et unique compte. Cela vous permet de savoir qui fait quoi, empêche un utilisateur de désorganiser l'environnement d'un autre ou de lire du courrier électronique qui ne lui est pas destiné, et ainsi de suite.
Chaque utilisateur peut configurer son propre environnement en fonction de ses besoins, pour utiliser d'autres interpréteurs de commandes, éditeurs, raccourcis de clavier, et langues.
Créer un nouveau compte utilisateur requiert plusieurs étapes : .
Attribuer un nom de login, un
uid, un groupe principal et un ou des groupes secondaires.Créer des enregistrements sur cet utilisateur dans les fichiers
/etc/passwd,/etc/groupet/etc/master.passwdou/etc/shadow.Attribuer un (bon) mot de passe.
Créer le repertoire de domiciliation de l'utilisateur (son
home).Paramétrer le compte de l'utilisateur (durée de validité du mot de passe, date d'expiration du compte, limitation des ressources, privilèges ...).
Copier les fichiers d'initialisation dans le répertoire de domiciliation de l'utilisateur.
Rendre l'utilisateur propriétaire de son espace.
Définir les paramètres supplémentaires, tels les quotas disk, l'impression, la messagerie...
Enlever un compte utilisateur necéssite les étapes suivantes :
Désactiver le compte de l'utilisateur.
sur GNU/Linux en faisant
passwd -l <loginname>sur les flavors xBSD en préfixant le mot de passe du fichier
/etc/master.passwdpar le caractère * (cette technique marche aussi pour GNU/Linux dans le fichier/etc/shadow).
Supprimer le compte de l'utilisateur.
Supprimer tous les processus de l'utilisateur.
Enlever les enregistrements concernant cet utilisateur des fichiers
/etc/passwd,/etc/group,/etc/shadowou/etc/master.passwd.Retirer l'utilisateur des groupes secondaires.
Supprimer le fichier de courrier électronique de l'utilisateur.
Retirer ou rediriger les alias de courrier électronique de l'utilisateur.
Supprimer les tâches cron et/ou at.
Eventuellement faire une sauvegarde de l'espace de l'utilisateur puis le supprimer.
Supprimer les fichiers et/ou répertoires temporaires de l'utilisateur.
Mettre à zéro les quotas de cet utilisateur.
Un système Unix™ propose généralement un ensemble d'utilitaires pour faciliter la gestion des comptes. De plus, rien n'empêche de créer ces propres scripts pour automatiser au mieux cette tâche.
Ce fichier au format texte, référence l'ensemble des utilisateurs du système. Une ligne concerne un utilisateur et est structurée en sept champs :
loginname:password:uid:gid:gecos:homedir:shell
loginname : le nom de login de l'utilisateur.
password : le mot de passe hashé, initialisé au caractère *.
uid : identifiant utilisateur. Entier non signé codé sur quatre octets [0, 4294967296]. La valeur 0 donne les privilèges d'administration système, les valeurs inférieurs à 10 sont, par convention, réservées à des comptes systèmes. Généralement, un utilisateur standard possède un uid supérieur à 100. Pour des raisons d'interoperabilité, il convient de se limiter aux 65536 premières valeurs.
gid : identifiant du groupe principal de l'utilisateur. Entier non signé codé sur quatre octets mais dontl'usage est limité, comme précédemment. Les valeurs inférieures à 10 sont réservées aux groupes systèmes .
gecos : zone de commentaire. On y met généralement le nom réel de l'utilisateur. Ce champ est utilisé par les commandes chfn, mail et finger.
homedir : répertoire de domiciliation de l'utilisateur.
shell : nom de l'interpréteur de commandes. Modifiable par la commande chfn.
Voici un exemple de fichier /etc/passwd d'un système FreeBSD obtenu à partir du fichier /etc/master.passwd :
# $FreeBSD: src/etc/master.passwd,v 1.40 2005/06/06 20:19:56 brooks Exp $ # root:*:0:0:Charlie &:/root:/bin/csh toor:*:0:0:Bourne-again Superuser:/root: daemon:*:1:1:Owner of many system processes:/root:/usr/sbin/nologin operator:*:2:5:System &:/:/usr/sbin/nologin bin:*:3:7:Binaries Commands and Source:/:/usr/sbin/nologin tty:*:4:65533:Tty Sandbox:/:/usr/sbin/nologin kmem:*:5:65533:KMem Sandbox:/:/usr/sbin/nologin games:*:7:13:Games pseudo-user:/usr/games:/usr/sbin/nologin news:*:8:8:News Subsystem:/:/usr/sbin/nologin man:*:9:9:Mister Man Pages:/usr/share/man:/usr/sbin/nologin sshd:*:22:22:Secure Shell Daemon:/var/empty:/usr/sbin/nologin smmsp:*:25:25:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin mailnull:*:26:26:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin proxy:*:62:62:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin _pflogd:*:64:64:pflogd privsep user:/var/empty:/usr/sbin/nologin _dhcp:*:65:65:dhcp programs:/var/empty:/usr/sbin/nologin uucp:*:66:66:UUCP pseudo-user:/var/spool/uucppublic:/usr/local/libexec/uucp/uucico pop:*:68:6:Post Office Owner:/nonexistent:/usr/sbin/nologin www:*:80:80:World Wide Web Owner:/nonexistent:/usr/sbin/nologin nobody:*:65534:65534:Unprivileged user:/nonexistent:/usr/sbin/nologin ikare:*
:2323
:2323
:Ivan K;
:/home/ikare
:/bin/tcsh
squid:*:100:100:squid caching-proxy pseudo user:/usr/local/squid:/usr/sbin/nologin
Le fichier /etc/passwd stockent les mots de passe sous forme hashée. Une fonction de hashage a la propriété d'être difficillement inversible, i.e. s'il est relativement aisé, connaissant l'algorithme de hashage, de calculer à partir d'un mot de passe en clair son hashage correspondant, la réciproque est un problème très difficile.
A la création d'un nouveau compte une étoile est placée dans le deuxième champ (passwd) du fichier /etc/passwd, elle permet d'empêcher l'accès au compte tant qu'un mot de passe n'est pas défini. Ce champ ne doit jamais être vide !
Le standard d'encryptage, par défaut, des mots de passe est DES, lequel n'encode que les 8 premiers caractères d'un mot de passe. Il est désormais considéré comme insuffisant au regard de la puissance de calcul d'un simple PC de bureau et c'est pourquoi les distributions GNU/Linux propose une alternative : le hashage MD5. De fait, MD5 n'est pas meilleur que DES (du point de vue cryptographique), mais MD5 n'impose pas de limite sur la longueur du mot de passe. Un mot de passe long est plus dur à casser donc plus sûr. FreeBSD de son côté utilise le hashage MD5 par défaut, on peut éventuellement le remplacer par un autre algorithme tel que blowfish (c.f. le fichier /etc/login.conf, ligne :passwd_format= ...).
Note
Avec Debian GNU/Linux le système propose d'activer à l'installation l'encodage des mots de passe par MD5, valider toujours ce choix.
Ce fichier référence l'ensemble des groupes du système. Une ligne concerne un groupe et elle est structurée en quatre champs :
groupname:password:gid:member, ...
groupname : le nom du groupe.
password : le mot de passe hashé, initialisé au caractère *. En général, on n'utilise pas de mot de passe de groupe.
gid : identifiant du groupe. Entier codé sur deux octets. Les valeurs inférieures à 10 sont réservées aux groupes systèmes .
member, ... : liste des membres du groupe.
# $FreeBSD: src/etc/group,v 1.32.2.1 2006/03/06 22:23:10 rwatson Exp $ # wheel:*:0:root daemon:*:1: kmem:*:2: sys:*:3: tty:*:4: operator:*:5:root mail:*:6: bin:*:7: news:*:8: man:*:9: games:*:13: staff:*:20: sshd:*:22: smmsp:*:25: mailnull:*:26: guest:*:31: bind:*:53: proxy:*:62: authpf:*:63: _pflogd:*:64: _dhcp:*:65: uucp:*:66: dialer:*:68: network:*:69: audit:*:77: www:*:80: nogroup:*:65533: nobody:*:65534: fremens:*:2323:ikare squid:*:100:
Historiquement, les mots de passe étaient stockés dans le fichier /etc/passwd (universellement accessible en lecture)[1]
, mais à mesure que les ordinateurs ont gagné en performance, il est devenu extrêmement dangereux de les laisser dans ce fichier.
GNU/Linux propose désormais de stocker les mots de passe dans un fichier à part : /etc/shadow (uniquement accessible au super-utilisateur. Ce mécanisme communément appelé « shadow password » est disponible sur toutes les distributions. En particulier, sur Debian cette option est explicitement proposée au moment de l'installation, il convient de l'adopter. La seule contre-indication à l'utilisation de cette stratégie concerne l'éventuel usage de votre machine comme serveur NIS/NFS.
Quand cette stratégie est activée, le champ mot de passe (deuxième champ) du fichier /etc/passwd est marqué par un x. Le fichier /etc/shadow contient donc l'encodage (ou hashage) des mots de passe et fournit des services supplémentaires non disponibles dans /etc/passwd. Attention, les deux fichiers sont nécessaires, l'un ne remplaçant pas l'autre !
Le fichier /etc/shadow est un fichier texte qui contient une ligne par utilisateur. Il est structuré en neuf champs, comme suit :
loginname:password:lcdate:mindays:maxdays:ndays1:ndays2:expiration:reserved
La sémantique associée à ces champs est la suivante :
loginname : le nom de login de l'utilisateur, identique à celui du fichier
/etc/passwdil permet ainsi d'établir le lien entre les deux fichiers.password : le hashage du mot de passe. S'il s'agit d'un hashage MD5, il commence par la séquence $1$.
lcdate : date du dernier changement de mot de passe, exprimée relativement au temps Unix™, exprimé en jours, i.e. nombre de jours écoulés depuis le 1er Janvier 1970. Généralement rempli par la commande /usr/bin/passwd
mindays : Intervalle minimum de jours entre deux changements de mot de passe. Généralement positionné à 0, pour signifier qu'il n'y a pas d'intervalle.
maxdays : Intervalle maximum de jours entre deux changements de mot de passe. Cela permet donc à l'administrateur de renforcer la stratégie de limitation dans le temps des mots de passe. Le délai maximun est obtenu comme somme de ce champ et du 7e.
ndays1 : Nombre de jours, pour prévenir l'utilisateur, avant l'expiration du mot de passe.
ndays2 : Nombre de jours s'écoulant entre l'expiration du mot de passe et la désactivation du compte.
expiration : Date d'expiration effective du compte, en nombre de jour depuis le 1er Janvier 1970.
reserved : Champ réservé pour un usage futur, vide pour le moment.
Un exemple typique de ligne extraite du fichier /etc/shadow :
ikare:$1$wIZyw9H3u$Q7T2rxyPVKAlabue$.1n0:12144:0:180
:7
::12294
:
Il existe un fichier /etc/gshadow dont le rôle est similaire à celui du fichier /etc/shadow, en pratique peu ou pas utilisé. On active rarement (voir jamais, par convention) les mots de passe de groupe.
Les flavors xBSD stockent les comptes utilisateurs au sein du fichier /etc/master.passwd, uniquement accessible au super-utilisateur. Ce fichier est utilisé pour générer automatiquement le fichier /etc/passwd.
Ce fichier est au format texte et contient une ligne par utilisateur. Il est structuré en dix champs, comme suit :
loginname:password:uid:gid:userclass:change:expire:gecos:homedir:shell
La sémantique associée à ces champs est la suivante :
loginname : le nom de login de l'utilisateur
password : le hashage du mot de passe, préfixé par la séquence $1$ s'il s'agit d'un hashage md5 ou d'un $2$ s'il s'agit d'un hashage blowfish.
uid : identifiant utilisateur.
gid : identifiant du groupe principal.
userclass : classe d'appartenance de l'utilisateur telle que définie dans le fichier
/etc/login.conf.change : exprimé en nombre de secondes à partir de l'origine des temps Unix (1er Janvier 1970 [Epoch]), donne la date d'expiration du présent mot de passe. Si la valeur est à zéro, il n'y a pas d'expiration du mot de passe.
expire : même unité que précédement, mais exprimant la date d'expiration du compte. Si la valeur est à zéro, il n'y a pas d'expiration du compte.
gecos : zone de commentaire, nom réel de l'utilisateur ...
homedir : répertoire de domiciliation de l'utilisateur.
shell : interpréteur de commande de l'utilisateur.
Un exemple typique de ligne extraite du fichier /etc/master.passwd :
ikare:$1$iIVcBt5z$y0qex.EtFzuwBYwN2dZjj1:2323:2323::1179450000:0
:Ivan K;:/home/ikare:/bin/sh
| Expiration du présent mot de passe le 18 Mai 2007 à 05:00:00 ( |
| Pas d'expiration du compte. |
Dans ce qui suit les commandes sont préfixées par un # qui symbolise un accès super-utilisateur (root). Le mot qui qui précède ce caractère est le nom de machine (tux pour GNU/Linux et chuck pour FreeBSD).
Avertissement
Vous pouvez tester les commandes en utilisant l'accès étendu sudo, néanmoins je vous prie instamment de faire une copie initiale des fichiers que vous allez modifier. Puis quand vous aurez terminé ce paragraphe, de restaurer les fichiers dans leur état initiaux.
Première forme de la commande useradd : Invoquée sous cette forme, la commande créée un nouveau compte utilisateur en utilisant les valeurs spécifiées (sur la ligne de commande) et les valeurs système par défaut si les options ne sont pas précisées. Selon les options choisies, le nouveau compte sera crée et des fichiers initiaux seront copiés dans son espace de travail.
SYNOPSIS :EXEMPLE : ajouter un utilisateur. tux:/# useradd -c "Bernard's Account" -d /home/.bernard -e "2003-08-31" -s \ /bin/bash -u 668 -g gnu -G operator -m bernard tux:/# passwd bernard Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully tux:/#
useradd[-ccomment] [-dhomedir] [-eexpire_date] [-finactive_date]
[-ginitial_group] [-Ggroup[ ,... ] ] [-m [-kskel_dir]]
[-ppasswd] [-sshell] [-uuid[-o]]login
Deuxième forme de la commande useradd : Cette deuxième forme permet de lister les paramètres par défaut ou modifier les valeurs par défaut à partir des valeurs données en ligne de commande.
SYNOPSIS :EXEMPLE : Lister les paramètres par défaut, puis modifier trois des paramètres. tux:/# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel tux:/# useradd -D -g 200 -s /bin/tcsh -e "2003-12-31" tux:/# useradd -D GROUP=200 HOME=/home INACTIVE=-1 EXPIRE=2003-12-31 SHELL=/bin/tcsh SKEL=/etc/skel
useradd-D [-gdefault_group] [-bdefault_home] [-fdefault_inactive]
[-eexpire_date] [-sdefault_shell]
usermod. La commande usermod permet de modifier les caractéristiques d'un utilisateur.
SYNOPSIS :EXEMPLE : Ajouter l'utilisateur pascal dans le groupe operator (il est déjà membre du groupe principal gnu et des groupes root et staff) et lui mettre une date d'expiration au 31.12.2003 : tux:/# usermod -G root,staff,operator -e 2003-12-31 pascal
usermod[-ccomment] [-dhomedir[-m]] [-eexpire_date] [-finactive_date]
[-ginitial_group] [-Ggroup[ ,... ] ] [-lloginname] [-ppasswd]
[-sshell] [-uuid[-o]] [ -L | -U ]login
userdel. La commande userdel permet d'enlever un compte utilisateur (s'il existe). L'option -r permet en plus la suppression du contenu et du répertoire de domiciliation de l'utilisateur, ainsi que son répertoire de mail.
SYNOPSIS :EXEMPLE : Enlever un utlisateur tux:/# userdel -r bernard
userdel[-r]login
groupadd. La commande groupadd permet de créer un nouveau groupe.
SYNOPSIS :EXEMPLE : Ajouter un groupe tux:/# groupadd -g 666 gnu
groupadd[-ggid[-o]]login
groupmod. La commande groupmod permet de modifier les paramètres d'un groupe.
SYNOPSIS :EXEMPLE : Modfier le gid du groupe gnu. tux:/# groupmod -g 667 gnu
groupmod[-ggid[-o]] [-ngroup_name]group
groupdel. La commande groupdel, enlève un groupe (s'il existe).
SYNOPSIS :EXEMPLE : Enlever le groupe gnu. tux:/# groupdel gnu
groupdelgroup
La commande pw permet au super-utilisateur de gérer simplement les utilisateurs. Sa syntaxe est très proche de ces homologues « Linuxienne ». Cette commande fait les mises-à-jour dans les fichiers /etc/passwd, /etc/master.passwd et /etc/group. sous OpenBSD, par contre on utilise les mêmes commandes que pour GNU/Linux
Première forme de la commande pw useradd :
SYNOPSIS :
EXEMPLE : Créer un nouvel utilisateur et lui attribuer un mot de passe passwd : salusa# pw useradd ivan -u 2324 -c "Ivan" -d /home/.ivan \ -e "31-05-2007" -g fremens -G wheel,operator -m -s /bin/tcsh -N ivan:*:2324:2323::0:1180555200:Ivan:/home/.ivan:/bin/tcsh salusa# pw useradd ivan -u 2324 -c "Ivan" -d /home/.ivan \ -e "31-05-2007" -g fremens -G wheel,operator -m -s /bin/tcsh salusa# passwd ivan Changing local password for ivan New Password: Retype New Password: salusa#pw[-Vetcdir]useradd[name|uid] [-Cconfig] [-q] [-nname] [-uuid]
[-ccomment] [-ddir] [-edate] [-pdate] [-ggroup] [-Ggrouplist]
[-m] [-kdir] [-wmethod] [-sshell] [-o] [-Lclass] [-hfd] [-N] [-P] [-Y]
Deuxième forme de la commande pw useradd (sémantique équivalente à son homologue Linux), qui permet de spécifier les valeurs par défauts (-D) :
SYNOPSIS :
pw[-Vetcdir]useradd[name|uid] -D [-Cconfig] [-q] [-bdir]
[-edays] [-pdays] [-ggroup] [-Ggrouplist] [-kdir] [-umin,max]
[-imin,max] [-wmethod] [-sshell] [-ypath]
pw usershow
SYNOPSIS :
EXEMPLE : Vérifier la présence de l'utilisateur bernard : salusa# pw usershow ivan -P Login Name: ivan #2324 Group: fremens #2323 Full Name: Ivan Home: /home/.ivan Class: Shell: /bin/tcsh Office: [None] Work Phone: [None] Home Phone: [None] Acc Expire: Thu May 31 00:00:00 2007 Pwd Expire: [None] Groups: wheel,operator salusa#pw[-Vetcdir]usershow[name|uid] [-nname] [-uuid] [-F] [-P]
[-7] [-a]
La commande pw usernext permet d'obtenir le prochain couple uid/gid disponible (séparé par les « : ») :
SYNOPSIS :
EXEMPLE : salusa# pw usernext 2325:2324 salusa#pw[-Vetcdir]usernext[-Cconfig] [-q]
La commande pw usermod :
SYNOPSIS :
EXEMPLE : salusa# pw usermod -G wheel,operator,daemon,sys -n ivan salusa#pw[-Vetcdir]usermod[name|uid] [-Cconfig] [-q] [-nname] [-uuid]
[-ccomment] [-ddir] [-edate] [-pdate] [-ggroup] [-Ggrouplist]
[-lname] [-m] [-kdir] [-wmethod] [-sshell] [-Lclass] [-hfd] [-N] [-P] [-Y]
La commande pw userdel :
SYNOPSIS :
EXEMPLE : chuck# pw userdel -n ivanpw[-Vetcdir]userdel[name|uid] [-nname] [-uuid] [-r] [-Y]
La première forme de la commande pw groupadd :
SYNOPSIS :
EXEMPLE : chuck# pw groupadd -g 999 -n traineespw[-Vetcdir]groupadd[group|gid] [-Cconfig] [-q] [-ngroup] [-ggid]
La deuxième forme de la commande pw groupadd :
SYNOPSIS :
pw[-Vetcdir]groupadd[group|gid] [-Cconfig] [-q] [-ngroup] [-ggid]
[-Mmembers] [-o] [-hfd] [-N] [-P] [-Y]
La commande pw groupdel :
SYNOPSIS :
EXEMPLE : chuck# pw groupdel trainees ... ou bien ... chuck# pw groupdel -g 999pw[-Vetcdir]groupdel[group|gid] [-Cconfig] [-q] [-ngroup] [-ggid]
La commande pw groupmod :
SYNOPSIS :
pw[-Vetcdir]groupmod[group|gid] [-Cconfig] [-q] [-ngroup] [-ggid]
[-lname] [-Mmembers] [-mnewmembers] [-hfd] [-N] [-P] [-Y]
La commande pw groupshow :
SYNOPSIS :EXEMPLE : chuck# pw groupshow wheel wheel:*:0:root,pascal
pw[-Vetcdir]groupshow[group|gid] [-gname] [-ggid] [-F] [-P] [-a]
La commande pw groupnext qui retourne le prochain
gid>disponible :
SYNOPSIS :EXEMPLE : chuck# pw groupnext 2324
pw[-Vetcdir]groupnext[group|gid] [-q]
La commande pw lock qui permet de vérouiller l'accès à un compte :
SYNOPSIS :
pw[-Vetcdir]lock[name|uid] [-Cconfig] [-q]
La commande pw unlock qui a un effet symétrique à la commande précédente :
SYNOPSIS :
pw[-Vetcdir]unlock[name|uid] [-Cconfig] [-q]
Sous GNU/Linux deux commandes permettent de vérifier l'intégrité des fichiers de gestion des utilisateurs. Ce sont la commande /usr/sbin/pwck, qui vérifie les fichiers /etc/passwd et /etc/shadow et la commande /usr/sbin/grpck qui vérifie les fichiers /etc/group et /etc/gshadow.
Elle se font par la commande vipw pour le fichier /etc/passwd (et respectivement /etc/master.passwd pour FreeBSD et /etc/shadow pour GNU/Linux) ; elle synchronise ces deux fichiers. La commande vigr agit de même sur les fichiers /etc/group et /etc/gshadow pour GNU/Linux uniquement.
Si l'implémentation de la commande pw est très complète, s'interface directement avec les fichiers /etc/passwd et /etc/group, et permet de créer des scipts complexes, FreeBSD propose néanmois une série de programmes simples permettant la gestion interactive des utilisateurs.
adduser est un programme simple pour ajouter de nouveaux utilisateurs. Il crée les entrées dans les fichiers système /etc/passwd et /etc/group . Il crée également le répertoire utilisateur pour le nouvel utilisateur, y copie les fichiers de configuration par défaut (dotfiles) à partir de /usr/share/skel, et peut éventuellement envoyer à l'utilisateur un courrier électronique de bienvenue.
Exemple 1. Ajout d'un utilisateur avec adduser
salusa# adduser
Username: danielle
Full name: Danielle
Uid (Leave empty for default): 2326
Login group [danielle]: fremens
Login group is fremens. Invite danielle into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: tcsh
Home directory [/home/danielle]:
Use password-based authentication? [yes]: yes
Use an empty password? (yes/no) [no]: no
Use a random password? (yes/no) [no]: no
Enter password:
Enter password again:
Lock out the account after creation? [no]: no
Username : danielle
Password : *****
Full Name : Danielle
Uid : 2326
Class :
Groups : fremens
Home : /home/danielle
Shell : /bin/tcsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (danielle) to the user database.
Add another user? (yes/no): no
Goodbye!
salusa#Le programme rmuser permet de supprimer complètement et de manière interactive un utilisateur du système. Elle effectue les opérations suivantes:
Supprime les entrées appartenant à l'utilisateur de la crontab (s'il y en a).
Supprime les tâches at appartenant à l'utilisateur.
Tue tous les processus appartenant à l'utilisateur.
Supprime l'utilisateur du fichier de mots de passe local.
Supprime le répertoire l'utilisateur (s'il lui appartient).
Supprime les courriers électroniques en attente pour l'utilisateur dans
/var/mail.Supprime tous les fichiers temporaires appartenant à l'utilisateur des zones de stockages temporaires comme
/tmp.Et enfin, supprime l'utilisateur de tous les groupes auxquels il appartient dans
/etc/group. Si le groupe est vide d'utilisateur à la suite de l'opération, le groupe est également supprimé !
Exemple 2. Suppression d'un utilisateur avec rmuser
salusa# rmuser danielle
Matching password entry:
danielle:*:2325:2325::0:0:User &:/home/danielle:/bin/sh
Is this the entry you wish to remove? yes
Remove user's home directory (/home/danielle)? yes
Removing user (danielle): mailspool home passwd.
salusa#
chpass modifie les informations de la base de données des utilisateurs comme les mots de passe, les interpréteurs de commandes, et les informations personnelles. Utilisé sans options, en dehors du nom facultatif de l'utilisateur, chpass ouvre un éditeur affichant les informations de l'utilisateur. Quand l'utilisateur quitte l'éditeur, la base de données utilisateur est mise à jour avec les nouvelles informations.
Exemple 3. Modification d'un utilisateur avec chpass
#Changing user information for danielle.
Login: danielle
Password: $1$9zDHGBah$2v99d67vDnmq0hPhtsF880
Uid [#]: 2325
Gid [# or name]: 2325
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/danielle
Shell: /bin/tcsh
Full Name: Danielle
Office Location:
Office Phone:
Home Phone:
Other information:
Tableau 1. Autres commandes
[1] Le « jeu » consistait à récupérer une copie du fichier /etc/passwd puis à faire tourner un programme de « crack ». Ce dernier passe en revue un dictionnaire de mots de passe qu'il hashe un à un et compare au hashage présent dans le fichier des mots de passe. En cas d'égalité on a retrouvé le mot de passe (la fonction de hashage est injective). Ce genre de programme parcourt donc l'espace des mots de passe possible ; il lui faut donc de la puissance de calcul et du temps. Or les PC de bureau d'aujourd'hui ont une puissance de calcul non négligeable !






