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