Gestion des comptes utilisateurs

I) Ajouter et Supprimer un utilisateur :

La commande classique pour ajouter un utilisateur est

useradd

. Cependant, il est plus facile d’utiliser adduser, une interface à useradd. Utiliser adduser vous dispense d’appeler manuellement passwd pour choisir un mot de passe à l’utilisateur et à lui créer un répertoire utilisateur. Les paramètres que vous avez à votre disposition sont les suivantes :

Paramètres de adduser :
-d chemin Emplacement du répertoire
utilisateur si différent de /home/$utilisateur.
-g groupe Groupe principal de l’utilisateur.
-G groupe 1,…,groupe n Groupes supplémentaires
auxquels l’utilisateur appartiendra.
-c commentaire Champ cmmentaire du fichier
/etc/password.
-k répertoire Répertoire des
fichiers de configuration par défaut si différent de /etc/skel.
-s shell Shell de l’utilisateur,
en général /bin/bash est spécifié par défaut.
-p mot de passe Mot de passe.
-u uid User Identifiant (UID) pour
cet utilisateur.
-e date Date d’expiration, au
format AAAA-MM-JJ.
-f nombre de jours Nombre de jours après
l’expiration d’un mot de passe avant que le compte ne soit désactivé.

Exemple, nous souhaitons créer l’utilisateur toto ayant pour shell zsh et ce compte doit être désactivé le 21 février 2004 :

# adduser toto -s /bin/zsh -e 2004-02-28

Pour supprimer ce compte en effaçant son répertoire personnel :

# deluser toto && rm -rf /home/toto

Voyons pas à pas comment créer manuellement un utilisateur afin de bien comprendre le principe :

On ajoute un groupe pour cet utilisateur :

# groupadd -g 5001 toto

On ajoute l’utilisateur :

# useradd -g 5001 -u 5001 -d /home/toto -m toto

On donne un mot de passe à cet utilisateur :

# passwd toto

Et on copie les fichiers squellettes dans son répertoire personnel :

# cp -r /etc/skel/* /home/toto

Pour modifier les paramètres d’un utilisateur, vous disposer des commande chsh pour changer son shell, ceci ne nécessite pas d’être root. Ainsi, un utilisateur peut changer son shell alors qu’il n’a pas les permissions pour écrire dans /etc/passwd. usermod pour modifier un utilisateur et groupmod pour modifier un groupe. De la même
façon, groupadd et groupdel permettent la création et la suppression d’un groupe.

II) Gestion des mots de passe et des comptes :

Sous Linux, nous avons la commande chage qui se charge de contrôler le vieillissement des mots de passe. La syntaxe de la commande chage est la suivante :

# chage  

Et les paramètres sont les suivants :

-l utilisateur Affiche la liste
des paramètres pour l’utilisateur.
-m nombre Nombre de jours
minimum entre les changements de mot de passe. 0 pour désactiver.
-M nombre Nombre de jour maximum
pour lequel un mot de passe est valide.
-d AAAA-MM-JJ Indique depuis quand
à partir du 1er janvier 1970, le mot de passe à été
changé. Maintenu automatiquement.
-E AAAA-MM-JJ Date d’expiration du compte.
-I nombre Nombre de jour d’incativité
après l’expiration d’un mot de passe avant que le compte ne soit fermé.
-W nombre Nombre de jour avant
que l’utilisateur ne soit prévenu de l’expiration de son mot de passe.

Si aucun paramètre n’est donné à chage, il demandra à l’utilisateur de saisir pas à pas chacune des commandes. Exemple, nous voulons que toto change son mot de passe dès l’ouverture de sa session, qu’il en change tous les 100 jours et qu’il soit prévenu 10 jours avant son expiration :

# chage -m 0 -M 100 -d 0 -I 0 -E 0 -W 10 toto

Lors de la création d’un compte, l’utilisateur reçoit quelques fichiers de configuration par défaut, notament pour son shell (ex : .bashrc, .bash_profile etc…). Pensez qu’il pourrait être judicieux de préconfigurer kde, gnome, gimp, mozilla et les fichiers de conf de bash (notament un .bash_logout qui n’est généralement pas présent par défaut), ou bien encore un .evolution pour tout vos utilisateurs afin qu’ils ne perdent pas de temps à personnaliser leur environnement et de plus il vous serait possible de fixer un environnement de travail adapté aux besoins de vos utilisateurs. Ces fichiers se trouvent dans /etc/skel. Pensez aussi que la commande adduser avec l’option -k permet de spécifier un emplacement différent du répertoire /etc/skel afin d’avoir des fichiers de configuration par défaut personnalisés en fonction de leur rôle dans votre établissement.

III) Les Listes de Contrôle d’Accès (ACL) :

Les listes de contrôle d’accès Posix ont pour but d’affranchir les limitations imposées par les règles de droit d’accès classiques sous Unix. En effet la commande chmod ne peut attribuer des permission qu’à un seul group et à un seul utilisateur. Les permissions pour les utilisateurs ne faisant pas partie de ce group devenant alors toutes les mêmes. Les ACL pour Linux 2.4 consiste en un patch à appliquer au noyau afin que celui-ci soit apte à stocker des permissions supplémentaires. Vous trouverez le patch pour le noyau 2.4.20 ici ou bien à l’adresse officielle acl.bestbits.at. Depuis le noyau 2.6, les ACL sont disponibles en standard pour un certain nombre de systèmes de fichiers. Une fois le patch récupéré et extrait, appliquez le :

# cd /usr/src/linux
# patch -p1 -E < 

Commencez une compilation du kernel en sélectionnant les options suivantes :

File systems / Ext3 journalling file system support
  Ext3 extended attributes
  Ext3 extended user attributes
  Ext3 POSIX Access Control Lists
File systems / Second extended fs support
  Ext2 extended attributes
  Ext2 extended user attributes
  Ext2 POSIX Access Control Lists

Après ça, recompilez votre noyau. Ensuite, il faut préciser dans la fstab ou lors du montage manuel des partitions que les ACL doivent être prises en compte. Exemple :

/dev/hdb2 /home ext3 defaults,acl,user_xattr 0 2

La manipulation des ACL nécessitera aussi que vous ayez installé les paquets acl, libacl1 et libattr1. Pour ça, je vous renvoie à votre distribution.

Il existe deux commandes pour manipuler des ACL, setfacl et getfacl. setfacl est utilisée pour modifier ou attribuer des permissions et getfacl pour afficher les permissions d’un fichier. Les syntaxes de base de setfacl sont :

# setfacl <-s/-m/-x> u:: 
# setfacl <-s/-m/-x> g:: 
# setfacl <-s/-m/-x> o: 

Les paramètres -s, -m, et -x servent respectivement à attribuer, modifier et supprimer une permission. u, g et o servent à spécifier si l’on s’adresse à un utilisateur, à un groupe ou bien aux autres utilisateurs. Les permissions restent les permissions classiques sous Unix à savoir r, w et x.

Exemple, nous voulons donner au groupe toto le droit de lecture sur le fichier image.jpg :

# setfacl -s g:toto:r image.jpg

Exemple 2, nous souhaitons modifier les permissions de l’utilisateur toto sur le répertoire /var/www et nous voulons que ces permissions s’applique également aux sous-dossiers de ce répertoire :

# setfacl -R -m u:toto:rwx /var/www

Exemple 3 : nous souhaitons retier toutes les permissions sur le fichier /etc/fichier :

# setfacl -b /etc/fichier

Exemple 4 : nous voulons donnerles mmes permissions à /etc/fichier qu’à /var/www :

# getfacl /var/www | setfacl -S- /etc/fichier

Sachez que les ACL ne sont actuellement pas interprétées par NFS, tar, un système de fichier non ext2/3 ou encore par un noyau n’ayant pas le support pour. Par contre Samba sait prendre en compte les ACL à la condition qu’à la compilation vous ayez spécifié le paramètre –with-acl-support ce qui n’est pas le cas par exemple sous Debian Woody par défaut.

IV) Utiliser PAM pour améliorer la sécurité:

PAM est le système d’authentification communément admis par la plupart des distributions de GNU/Linux. En effet, il permet de gérer plus finement l’authentification des utilisateurs et de plus, il permet de s’authenfier à partir de multriples sources (LDAP, samba…). Ce qui nous interresse ici est de voir comment améliorer l’authentification des utilisateurs au travers de PAM. PAM possède un fichier de configuration dans
/etc/pam.d portant le nom du système d’authentification qu’il prend en charge. Celui que nous verrons donc ici est /etc/pam.d/login. PAM a une structure bien définie. Un certain
nombre d’actions empilées sont réalisées pour assurer l’authentification de l’utilisateur. Le fichier possède une série de lignes de la forme:

   

Voyons maintenant comment améliorer la sécurité de /etc/pam.d/passwd. Tout d’abord, installez le module pam_cracklib.so, il permet d’éviter aux utilisateurs d’avoir des mots de passe ayant une signification et mettez les ligne suivantes :

passwd required pam_cracklib.so type=user retry=3 min=4 max=5 md5
passwd required pam_cracklib.so use_authtok min=4 max=8 md5

Voilà, c’est déjà un peu mieux.

V) Les quotas :

Les quotas permettent de limiter l’espace disque qu’un utilisateur ou un groupe pourra utiliser. Afin de pouvoir utiliser les quotas, vous devrez avoir compilé l’option dans votre noyau :

File systems
  [*] Quota support

Ensuite, vous devez avoir mis usrquota et grpquota en option de montage sur la partition sur laquelle vous désirez exercer les quotas dans le fichier /etc/fstab. Exemple :

 /dev/hdb2 /home ext3 defaults,acl,user_xattr,usrquota,grpquota 0 2

Sur la partition sur laquelle vous désirez mettre en place les quotas, vous devez créer deux fichiers quota.user et quota.group dont le propriétaire sera root :

# touch /partition/quota.user
# touch /partition/quota.group
# chmod 600 /partition/quota.user
# chmod 600 /partition/quota.group

Donc dans notre exemple de /home, celà donne :

# touch /home/quota.user
# touch /home/quota.group
# chmod 600 /home/quota.user
# chmod 600 /home/quota.group

Et pour terminer, il vous faut le paquetage quotatool. Une fois tout ça mis en place, nous pouvons commencer à utiliser les quotas. La configuration des quotas se fait avec la commande edquota. Par exemple, edquota -u toto, va permettre la configuration des quotas pour l’utilisateur toto. eduqota lance l’éditeur de texte configuré dans la variable $EDITOR. Lançons la configuration des quotas pour l’utilisateur toto :

# edquota -u toto
Disk quotas for user toto (uid 1001):
Filesystem   blocks   soft   hard   inodes   soft   hard
/dev/hdb2    28       10000  10000        6       0        0

Les lignes soft et hard indiquent l’espace disque maximum en kilo octects que l’utilisateur pourra utiliser avant de saturer l’espace disque qui lui est alloué. Ici, environ 10 Mo.

Pour activer ou désactivre les quotas, nous avons les commandes quotaon et quotaoff. Ces commandes s’utilisent de la sorte:

# quotaon  
# quotaoff  

Exemple :

# quotaon -avug /dev/hdb2
/dev/hdb2 [/home]: group quotas turned on
/dev/hdb2 [/home]: user quotas turned on

Voilà pour cet article. Vous devriez pouvoir gérer plus finement vos utilisateurs maintenant, ce qui est indispensable pour un serveur ayant une politique de sécurité raisonnable.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.