---
title: Chapitre 13. Gestion des comptes et des utilisateurs
part: Partie III. Administration Système
prev: books/handbook/boot
next: books/handbook/security
showBookMenu: true
weight: 17
params:
  path: "/books/handbook/users/"
---

[[users]]
= Gestion des comptes et des utilisateurs
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 13
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/users/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[users-synopsis]]
== Synopsis

FreeBSD permet à de nombreux utilisateurs d'utiliser l'ordinateur en même temps. Evidemment, seul un de ces utilisateurs peut être assis devant l'écran et le clavier à un instant donné , mais n'importe quel nombre d'utilisateurs peut ouvrir une session par l'intermédiaire du réseau pour mener à bien son travail. Pour utiliser le système chaque utilisateur doit posséder un compte.

Après la lecture de ce chapitre, vous connaîtrez:

* Les différences entre les divers comptes utilisateur sur un système FreeBSD.
* Comment ajouter des comptes utilisateur.
* Comment supprimer des comptes utilisateur.
* Comment modifier les paramètres d'un compte, comme le nom complet de l'utilisateur, ou l'interpréteur de commandes préféré.
* Comment fixer des limites par compte, pour contrôler les ressources comme la mémoire et le temps CPU auxquels les comptes et les groupes de comptes sont autorisés à accéder.
* Comment utiliser les groupes pour rendre la gestion de comptes plus aisée.

Avant de lire ce chapitre, vous devrez:

* Comprendre les fondements d'UNIX(R) et de FreeBSD (crossref:basics[basics,Quelques bases d'UNIX]).

[[users-introduction]]
== Introduction

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 capitale sur les systèmes FreeBSD.

Chaque compte sur un système FreeBSD est associé avec un certain nombre d'informations utilisé pour identifier le compte.

"User name" - nom d'utilisateur::
Le nom d'utilisateur comme il sera 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 man:passwd[5]; vous utiliserez généralement des noms d'utilisateurs de huit lettres ou moins et en minuscules.

"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. Cela signifie que vous pouvez avoir plusieurs comptes avec des noms d'utilisateurs différents mais le même UID. En ce qui concerne FreeBSD ces comptes ne sont qu'un seul et unique utilisateur. Il est peu probable que vous ayez jamais à faire cela.

"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. Si vous créez des comptes qui auront une durée de vie limitée, par exemple, dans une école où il existe des comptes pour les étudiants, alors vous pouvez spécifier la date d'expiration des comptes. 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 [.filename]#/home/username# ou [.filename]#/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 <<users-superuser,super-utilisateur>>, les <<users-system,utilisateurs système>>, et les <<users-user,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.

[[users-superuser]]
== Le compte super-utilisateur

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 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.

Donc, la première chose que vous devriez faire, après la lecture de ce chapitre, est de vous créer un compte utilisateur sans privilèges si vous n'en avez pas déjà. Cela s'applique aussi bien à une machine multi-utilisateurs qu'à une machine mono-utilisateur. Plus loin dans ce chapitre, nous expliquerons comment créer de nouveaux comptes, et comment passer d'un compte utilisateur ordinaire au compte du super-utilisateur.

[[users-system]]
== Comptes système

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.

[[users-user]]
== Comptes 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.

[[users-modifying]]
== Modifier des comptes

Il existe une variété de différentes commandes disponibles dans l'environnement UNIX(R) pour manipuler les comptes utilisateur. Les commandes les plus communes sont récapitulées ci-dessous, suivis par des exemples détaillés de leur utilisation.

[.informaltable]
[cols="1,1", frame="none", options="header"]
|===
| Commande
| Résumé

|man:adduser[8]
|L'application en ligne de commande recommandée pour ajouter de nouveaux utilisateurs.

|man:rmuser[8]
|L'application en ligne de commande recommandée pour supprimer des utilisateurs.

|man:chpass[1]
|Un outil flexible pour modifier les informations de la base de données utilisateur.

|man:passwd[1]
|L'outil simple en ligne de commande pour changer les mots de passe utilisateur.

|man:pw[8]
|Un puissant et flexible outil pour modifier tous les aspects des comptes utilisateurs.
|===

[[users-adduser]]
=== `adduser`

man:adduser[8] est un programme simple pour ajouter de nouveaux utilisateurs. Il crée les entrées dans les fichiers système [.filename]#passwd# et [.filename]#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 [.filename]#/usr/shared/skel#, et peut éventuellement envoyer à l'utilisateur un courrier électronique de bienvenue.

.Ajouter un utilisateur sous FreeBSD
[example]
====

[source,shell]
....
# adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : jru
Password   : ****
Full Name  : J. Random User
Uid        : 1001
Class      :
Groups     : jru wheel
Home       : /home/jru
Shell      : /usr/local/bin/zsh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
#
....

====

[NOTE]
====
Le mot de passe que vous tapez n'apparaît pas à l'écran, et il n'y a pas non plus d'astérisques affichés. Assurez-vous de ne pas vous tromper dans le mot de passe.
====

[[users-rmuser]]
=== `rmuser`

Vous pouvez utiliser man:rmuser[8] pour supprimer complètement un utilisateur du système. man:rmuser[8] effectue les opérations suivantes:

[.procedure]
====
. Supprime les entrées appartenant à l'utilisateur de la man:crontab[1] (s'il y en a).
. Supprime les tâches man:at[1] 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 [.filename]#/var/mail#.
. Supprime tous les fichiers temporaires appartenant à l'utilisateur des zones de stockages temporaires comme [.filename]#/tmp#.
. Et enfin, supprime l'utilisateur de tous les groupes auxquels il appartient dans [.filename]#/etc/group#.
+
[NOTE]
======
Si un groupe est vide de ce fait et que le nom du groupe est le même que celui de l'utilisateur, le groupe est supprimé; c'est la réciproque de la création par man:adduser[8] d'un groupe propre pour chaque utilisateur.
======
====

man:rmuser[8] ne peut pas être employé pour supprimer des comptes super-utilisateur, car cela entraînerait presque toujours des destructions massives.

Par défaut, la commande travaille en mode interactif, pour garantir que vous soyez sûr de ce que vous faites.

.Suppression interactive de compte avec `rmuser`
[example]
====

[source,shell]
....
# rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
#
....

====

[[users-chpass]]
=== `chpass`

man:chpass[1] 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.

Seuls les administrateurs système, comme le super-utilisateur, peuvent modifier les informations concernant les autres utilisateurs et les mots de passe à l'aide de man:chpass[1].

Utilisé sans options, en dehors du nom facultatif de l'utilisateur, man:chpass[1] 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.

[NOTE]
====
On vous demandera votre mot de passe en quittant l'éditeur si vous n'êtes pas le super-utilisateur.
====

.`chpass` interactif par le super-utilisateur
[example]
====

[source,shell]
....
#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
....

====

Un utilisateur ordinaire ne peut modifier qu'une partie de ces informations, et seulement celles qui le concernent.

.`chpass` interactif par un utilisateur ordinaire
[example]
====

[source,shell]
....
#Changing user database information for jru.
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
....

====

[NOTE]
====
man:chfn[1] et man:chsh[1] sont juste des liens vers man:chpass[1], comme le sont man:ypchpass[1], man:ypchfn[1], et man:ypchsh[1]. NIS est supporté automatiquement, aussi spécifier `yp` avant la commande n'est pas nécessaire. Si cela vous semble confus, ne vous inquiétez pas, NIS sera abordé dans le chapitre crossref:network-servers[network-servers,Serveurs réseau].
====

[[users-passwd]]
=== `passwd`

man:passwd[1] est la méthode habituelle pour modifier son mot de passe, ou celui d'un autre utilisateur si vous êtes le super-utilisateur.

[NOTE]
====
Pour prévenir des modifications accidentelles ou non autorisées, le mot de passe original doit être entré avant de pouvoir fixer un nouveau mot de passe.
====

.Modifier votre mot de passe
[example]
====

[source,shell]
....
% passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done
....

====

.Modifier le mot de passe d'un autre utilisateur en tant que super-utilisateur
[example]
====

[source,shell]
....
# passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: done
....

====

[NOTE]
====
Comme pour man:chpass[1], man:yppasswd[1] est juste un lien vers man:passwd[1], donc NIS fonctionnera avec l'une des deux commandes.
====

[[users-pw]]
=== `pw`

man:pw[8] est un utilitaire en ligne de commande pour créer, supprimer, modifier, et lister utilisateurs et groupes. Il fonctionne comme une interface aux fichiers d'utilisateurs et de groupe. man:pw[8] possède un ensemble puissant d'options qui le rende adapté à une utilisation dans des procédures, mais les nouveaux utilisateurs pourront le trouver plus compliqué que les autres commandes présentées ici.

[[users-limiting]]
== Mettre en place des restrictions pour les utilisateurs

Si vous avez plusieurs utilisateurs sur votre système, la possibilité de limiter leur utilisation du système peut venir à l'esprit. FreeBSD fournit plusieurs méthodes à l'administrateur système pour limiter la quantité de ressources système qu'un utilisateur peut utiliser. Ces limites sont généralement divisées en deux parties: les quotas disque, et les autres limites de ressource.

Les quotas limitent l'utilisation des disques par les utilisateurs, et ils fournissent un moyen de vérifier rapidement cette utilisation sans avoir à faire des calculs à chaque fois. Les quotas sont abordés dans la crossref:disks[quotas,Quotas d'utilisation des disques].

Les autres limites de ressource comprennent les moyens de limiter l'utilisation du CPU, de la mémoire, et les autres ressources qu'un utilisateur peut consommer. Elles sont définies en employant des classes de session et sont abordées ici.

Les classes de session sont définies dans [.filename]#/etc/login.conf#. La sémantique précise sort du cadre de cette section, mais est décrite en détail dans la page de manuel man:login.conf[5]. Il est suffisant de dire que chaque utilisateur est assigné à une classe (`default` par défaut), et que chaque classe dispose d'un ensemble de capacités associées. La forme utilisée pour ces capacités est une paire `nom=valeur` où _nom_ est un identifiant connu et _valeur_ est une chaîne arbitraire dépendante du nom. Paramétrer des classes et des capacités est plutôt direct et également décrit dans man:login.conf[5].

[NOTE]
====
Le système ne lit normalement pas directement le fichier [.filename]#/etc/login.conf#, mais plutôt la base de données [.filename]#/etc/login.conf.db# qui fournit plus rapidement les réponses au système. Pour générer [.filename]#/etc/login.conf.db# à partir du fichier [.filename]#/etc/login.conf#, exécutez la commande suivante:

[source,shell]
....
# cap_mkdb /etc/login.conf
....

====

Les limites de ressource sont différentes des capacités standards des classes en deux points. Premièrement, pour chaque limite, il existe une limite douce (actuelle) et limite dure. Une limite douce peut être ajustée par l'utilisateur ou une application, mais jamais dépasser la limite dure. Cette dernière peut être abaissée par l'utilisateur, mais jamais augmentée. Deuxièmement, la plupart des limites de ressource s'applique par processus à un utilisateur spécifique, et non pas à l'utilisateur dans sa totalité. Notez, cependant, que ces différences sont exigées par la manipulation spécifique des limites, et non pas par l'implémentation du système des capacités des classes de session utilisateur (i.e., elles ne sont _vraiment_ pas un cas particulier des capacités des classes de session).

Sans plus attendre, ci-dessous sont présentées les limites de ressource les plus souvent utilisées (le reste, avec les autres capacités des classes de session, peut être trouvé dans man:login.conf[5]).

`coredumpsize`::
La limite sur la taille du fichier core généré par un programme est, pour d'évidentes raisons, subordonnée aux autres limites sur l'utilisation du disque (e.g., `filesize`, ou les quotas de disque). Néanmoins, elle est souvent employée comme méthode moins sévère pour contrôler la consommation d'espace disque: puisque les utilisateurs ne génèrent pas de fichier core eux-mêmes, et souvent ne les suppriment pas, paramétrer cela peut leur éviter de manquer d'espace disque si un programme important (e.g., emacs) plante.

`cputime`::
C'est la quantité maximale de temps CPU qu'un processus d'un utilisateur peut consommer. Les processus la dépassant seront tués par le noyau.
+
[NOTE]
====
C'est une limite sur le _temps_ CPU consommé, non sur le pourcentage comme affiché par certains champs de man:top[1] et man:ps[1]. Une limite sur ce dernier est, au moment de l'écriture de ces lignes, impossible, et serait plutôt inutile: un compilateur-probablement une tâche légitime-peut aisément utiliser presque 100% du CPU pendant un certain temps.
====

`filesize`::
C'est la taille maximale du plus gros fichier qu'un utilisateur peut posséder. Contrairement aux crossref:disks[quotas,quotas], cette limite ne s'applique qu'aux fichiers individuellement, et non pas sur l'ensemble lui-même de tous les fichiers que possède un utilisateur.

`maxproc`::
C'est le nombre maximal de processus que peut exécuter un utilisateur en même temps. Ceci inclut les processus de premier plan et de tâche de fond. Pour d'évidentes raisons, il ne doit pas être plus grand que les limites du système spécifiées par la variable man:sysctl[8] `kern.maxproc`. Notez en outre qu'une valeur trop basse peut gêner la productivité de l'utilisateur: il est souvent utile d'ouvrir plusieurs sessions à la fois ou d'exécuter des opérations sous forme de "pipeline". Certaines tâches, comme compiler un gros programme, engendrent également de multiples processus (e.g., man:make[1], man:cc[1], et autres préprocesseurs).

`memorylocked`::
C'est la quantité maximale de mémoire qu'un processus peut avoir demandé de verrouiller en mémoire principale (e.g., voir man:mlock[2]). Certains programmes système critiques, comme man:amd[8], sont verrouillés en mémoire principale de sorte qu'en cas de dépassement de la mémoire de pagination, ils ne contribuent pas aux ennuis du système.

`memoryuse`::
C'est la quantité maximale de mémoire qu'un processus peut consommer à un instant donné. Cela inclus la mémoire principale et celle de pagination. Ce n'est pas le remède miracle pour restreindre la consommation de mémoire, mais c'est un bon début.

`openfiles`::
C'est le nombre maximal de fichiers qu'un processus peut avoir ouvert. Sous FreeBSD, des fichiers sont également employés pour représenter les sockets et les canaux IPC, par conséquent faites attention à ne fixer une valeur trop basse. La limite générale du système pour cela est définie par la variable man:sysctl[8] `kern.maxfiles`.

`sbsize`::
C'est une limite sur la quantité de mémoire réseau, et donc de "mbufs", qu'un utilisateur peut consommer. Ceci est à l'origine une réponse à une vielle attaque par refus de service en créant de nombreuses sockets, mais peut être généralement employée pour limiter les communications réseau.

`stacksize`::
C'est la taille maximale de la pile d'un processus. Seule, cela n'est pas suffisant pour limiter la quantité de mémoire que peut utiliser un programme, par conséquent, cette limite devra être utilisée en même temps que d'autres limitations.

Il y a quelques éléments à se rappeler quand on fixe des limites de ressource. Quelques astuces générales, suggestions, et commentaires divers:

* Les processus lancés au démarrage du système par [.filename]#/etc/rc# sont assignés à la classe `daemon`.
* Bien que le fichier [.filename]#/etc/login.conf# qui est fourni avec le système est une bonne source de valeurs raisonnables pour la plupart des limites, seul vous, l'administrateur, peut savoir ce qui est approprié à votre système. Fixer une limite trop haute peut laisser la porte ouverte aux abus, alors qu'une limite trop basse peut être un frein à la productivité.
* Les utilisateurs du système X Window (X11) devraient se voir allouer plus de ressources que les autres utilisateurs. X11 par lui-même utilise beaucoup de ressources, mais il encourage également les utilisateurs à exécuter plus de programmes simultanément.
* Souvenez-vous que de nombreuses limites ne s'appliquent qu'aux processus individuels, et non pas à l'utilisateur globalement. Par exemple, paramétrer `openfiles` à 50 signifie que chaque processus que l'utilisateur exécute pourra ouvrir jusqu'à 50 fichiers. Ainsi, la quantité totale de fichiers qu'un utilisateur peut ouvrir est la valeur `openfiles` multipliée par la valeur `maxproc`. Ceci s'applique également à la consommation de mémoire.

Pour de plus amples informations sur les limites et les classes de session et les capacités en général, veuillez consulter les pages de manuel appropriées: man:cap.mkdb[1], man:getrlimit[2], man:login.conf[5].

[[users-groups]]
== Groupes

Un groupe est simplement une liste d'utilisateurs. Les groupes sont identifiés par leur nom et leur GID (identificateur de groupe). Dans FreeBSD (et la plupart des systèmes UNIX(R)), les deux éléments que le noyau utilise pour décider si un processus est autorisé à faire quelque chose sont son ID utilisateur et la liste des groupes auxquels il appartient. Différent d'un identificateur utilisateur, un processus est associé à une liste de groupes. Vous pourrez entendre faire références au "group ID" d'un utilisateur ou d'un processus; la plupart du temps on veut parler du premier groupe dans la liste.

La table d'équivalence nom de groupe et identificateur de groupe se trouve dans [.filename]#/etc/group#. C'est un fichier texte avec quatre champs délimités par deux points. Le premier champ est le nom du groupe, le second est le mot de passe crypté, le troisième est l'ID du groupe, et le quatrième est une liste de membres séparés par des virgules. Ce fichier peut sans risque être édité à la main (en supposant, bien sûr, que vous ne faites pas d'erreur de syntaxe!). Pour une description complète de le syntaxe, voir la page de manuel man:group[5].

Si vous ne voulez pas éditer [.filename]#/etc/group# à la main, vous pouvez utiliser la commande man:pw[8] pour ajouter et éditer des groupes. Par exemple, pour ajouter un groupe appelé `teamtwo` et ensuite vérifier qu'il existe bien vous pouvez utiliser:

.Ajouter un groupe en utilisant man:pw[8]
[example]
====

[source,shell]
....
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:
....

====

Le nombre `1100` ci-dessus est l'identificateur de groupe pour le groupe `teamtwo`. A cet instant `teamtwo` n'a aucun membre, et est par conséquent plutôt inutile. Changeons cela en ajoutant `jru` au groupe `teamtwo`.

.Ajouter quelqu'un dans un groupe en utilisant man:pw[8]
[example]
====

[source,shell]
....
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru
....

====

Le paramètre ajouté à l'option `-M` est une liste, délimitée par des virgules, d'utilisateurs qui sont membres du groupe. Des sections précédentes nous savons que le fichier des mots de passe contient également un groupe pour chaque utilisateur. Le dernier (utilisateur) est automatiquement ajouté à la liste des groupes par le système; l'utilisateur n'apparaîtra pas comme étant membre quand on utilise l'option `groupshow` avec man:pw[8], mais apparaîtra quand l'information est demandée par l'intermédiaire de man:id[1] ou un outil similaire. En d'autres termes, man:pw[8] manipule uniquement le fichier [.filename]#/etc/group#, il n'essaiera jamais de lire des données supplémentaires à partir du fichier [.filename]#/etc/passwd#.

.Utilisation de man:id[1] pour déterminer l'appartenance à un groupe
[example]
====

[source,shell]
....
% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
....

====

Comme vous pouvez le voir, `jru` est membre des groupes `jru` et `teamtwo`.

Pour plus d'information sur man:pw[8], voir sa page de manuel, et pour d'information sur le format de [.filename]#/etc/group#, consultez la page de manuel man:group[5].
