7. Faire en sorte que la suite shadow fonctionne

Contenu de cette section

Cette section explique quelques éléments que vous souhaitez savoir depuis que vous avez la suite shadow sur votre système. De plus amples informations sont disponibles dans les pages de manuels.

7.1 Ajouter, modifier, et supprimer des utilisateurs.

La Suite Shadow a ajouté les commandes suivantes qui sont orientées ``ligne de commande'', pour ajouter, modifier et supprimer des utilisateurs. Vous avez aussi sûrement dû installer le programme adduser.

useradd

la commande useradd peut être utilisée pour ajouter des utilisateurs à votre système. Vous appelez aussi cette commande pour changer les paramètres par défaut.

La première chose à faire est d'examiner les paramètres par défaut et effectuer des changements pour votre propre système.

useradd -D

GROUP=1
HOME=/home
INACTIVE=0
EXPIRE=0
SHELL=
SKEL=/etc/skel

Les paramètres par défauts ne sont probablements pas ceux que vous souhaitez, donc, si vous commencez à ajouter des utilisateurs maintenant, vous aurez à spécifier toutes les informations pour chacun d'entre eux. C'est pour cela que nous pouvons et devons changer les valeurs par défaut.

Sur mon sytème:

Pour effectuer ces changements, j'ai dû utiliser:
useradd -D -g100 -e60 -f0 -s/bin/bash

Maintenant, lancer useradd -D donne:


GROUP=100
HOME=/home
INACTIVE=0
EXPIRE=60
SHELL=/bin/bash
SKEL=/etc/skel

Ces valeurs par défaut sont stockées dans le fichier /etc/defaults/useradd

Maintenant vous pouvez utiliser useradd pour ajouter des utilisateurs à votre système. Par exemple, pour ajouter l'utilisateur fred, en utilisant les valeurs par défaut, vous devez utiliser ce qui suit:

useradd -m -c "Fred Flintstone" fred
Cela créera une entrée dans le fichier /etc/passwd:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash
Ainsi que cette entrée dans le fichier /etc/shadow:
fred:!:0:0:60:0:0:0:0
Le répertoire d'accueil de fredsera créé et le contenu de /etc/skel sera copié à cet endroit grâce à l'option -m

De plus, lorsque l'on ne spécifie pas l'IUD, le prochain disponible est utilisé.

Le compte de fred est maintenant créé, mais fred ne peut pas se loger tant que nous ne dévérouillons pas le compte. Nous effectuons cela en changeant le mot de passe.

passwd fred


Changing password for fred
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New Password: *******
Re-enter new password: *******

Maintenant /etc/shadow contient:

fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0

fred est maintenant capable de se connecter et d'utiliser le système. La chose intéressante à propos de useradd et des autres programmes provenant de la Suite Shadow, est qu'ils effectuent les changements dans les fichiers /etc/passwd et /etc/shadow automatiquement. Donc si vous ajoutez un utilisateur, et qu'un autre utilisateur change son mot de passe au même moment, les deux opérations sont effectuées correctement.

Vous devriez plutôt utiliser les commandes fournies qu'éditer directement les fichier /etc/passwd et /etc/shadow. Si vous éditez le fichier /etc/shadow et qu'un utilisateur change son mot de passe au même moment, ce que vous sauverez, sera bien dans le fichier mais, le nouveau mot de passe de l'utilisateur sera perdu.

Voici un petit script intéractif permettant d'ajouter des utilisateurs en utilisant les commandes useradd et passwd:


#!/bin/bash
#
# /sbin/newuser - A script to add users to the system using the Shadow
#                 Suite's useradd and passwd commands.
#
# Written my Mike Jackson <mhjack@tscnet.com> as an example for the Linux
# Shadow Password Howto.  Permission to use and modify is expressly granted.
#
# This could be modified to show the defaults and allow modification similar
# to the Slackware Adduser program.  It could also be modified to disallow
# stupid entries.  (i.e. better error checking).
#
##
#  Defaults for the useradd command
##
GROUP=100        # Default Group
HOME=/home       # Home directory location (/home/username)
SKEL=/etc/skel   # Skeleton Directory
INACTIVE=0       # Days after password expires to disable account (0=never)
EXPIRE=60        # Days that a passwords lasts
SHELL=/bin/bash  # Default Shell (full path)
##
#  Defaults for the passwd command
##
PASSMIN=0        # Days between password changes
PASSWARN=14      # Days before password expires that a warning is given
##
#  Ensure that root is running the script.
##
WHOAMI=`/usr/bin/whoami`
if [ $WHOAMI != "root" ]; then
        echo "You must be root to add news users!"
        exit 1
fi
##
#  Ask for username and fullname.
##
echo ""
echo -n "Username: "
read USERNAME
echo -n "Full name: "
read FULLNAME
#
echo "Adding user: $USERNAME."
#
# Note that the "" around $FULLNAME is required because this field is
# almost always going to contain at least on space, and without the 
# the useradd command would think that you we moving on to the next
# parameter when it reached the SPACE character.
#
/usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \
        -f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME
##
#  Set password defaults
##
/bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
##
#  Let the passwd command actually ask for password (twice)
##
/bin/passwd $USERNAME
##
#  Show what was done.
##
echo ""
echo "Entry from /etc/passwd:"
echo -n "   "
grep "$USERNAME:" /etc/passwd
echo "Entry from /etc/shadow:"
echo -n "   "
grep "$USERNAME:" /etc/shadow
echo "Summary output of the passwd command:"
echo -n "   "
passwd -S $USERNAME
echo ""

Utiliser un script pour ajouter des utilisateurs est préférable à l'édition des fichiers /etc/passwd et /etc/shadow ainsi qu'à l'utilisation de programmes comme adduser de la distribution Slackware.

Vous êtes libre d'utiliser et de modifier le script à en fonction de votre système.

Pour plus d'informations sur useradd, consultez le manuel en ligne.

usermod

Le programme usermod est utilisé pour modifier les informations relatives à un utilisateur. Les options sont les mêmes que pour useradd.

Disons que l'on souhaite changer le shell de fred. Vous devrez faire la chose suivante:

usermod -s /bin/tcsh fred

Maintenant l'entrée concernant fred dans le fichier /etc/passwd est devenue:

fred:*:505:100:Fred
Flintstone:/home/fred:/bin/tcsh

On change la date d'expiration du compte au 15/09/97:

usermod -e 09/15/97 fred

Maintenant l'entrée concernant fred dans le fichier /etc/shadow est devenue:

fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0

Pour plus d'informations concernant usermod, consultez la page de manuel en ligne.

userdel

userdel fait exactement ce que vous voulez, il efface le compte d'un utilisateur. Utilisez simplement:

userdel -r username

L'option -r implique que tous les fichiers du répertoire d'accueil d'un utilisateur seront effacés. Les fichiers situés en dehors du répertoire d'accueil devront être cherchés et effacés manuellement.

Si vous souhaitez simplement vérouiller un compte au lieu de l'effacer, utilisez la commande passwd.

7.2 La commande passwd et la durée du mot de passe.

La commande passwd a pour but de changer les mots de passe. De plus, elle est utilisée par l'utilisateur root pour:

Par exemple, jetons un coup d'oeil à fred:

passwd -S fred
fred P 03/04/96 0 60 0 0

Cela signifie que le mot de passe de fred est valide, qu'il a été changé pour la dernière fois le 04/03/96, qu'il peut être changé à n'importe quel moment, qu'il expire au bout de 60 jours, que fred ne sera pas averti, et que le compte ne sera pas vérouillé lors de l'expiration du mot de passe.

Cela veut simplement dire que si fred se loge après l'expiration de son mot de passe, il lui sera demandé de taper un nouveau mot de passe.

Si nous souhaitons prévenir fred 14 jours avant l'expiration de son mot de passe, et vérouiller son compte 14 jours après l'avoir laissé expiré, nous devrions faire la chose suivante:

passwd -w14 -i14 fred
Maintenant les informations concernant fred sont changées en:
fred P 03/04/96 0 60 14 14

Pour de plus amples informations concernant passwd, se référer au manuel en ligne.

7.3 Le fichier login.defs

Le fichier /etc/login.defs est le fichier de configuration du programme login ainsi que celui de toute le Suite Shadow.

Le fichier /etc/login.defs contient les paramètres allant de l'apparance de l'invite à l'expiration par défaut concernant les mots de passe utilisateurs.

Le fichier /etc/login.defs est assez bien documenté de part ses propres commentaires. De plus, il y a quelques points a noter:

Des informations précédantes on peut en déduire que c'est un fichier important, vous devez être sûr qu'il existe et que les valeurs sont celles que vous désirez pour votre système.

7.4 Les mots de passe pour les groupes

Le fichier /etc/groups peut contenir des mots de passe permettant à un utilisateur de devenir un membre d'un groupe particulier. Cette fonction est validée si vous validez la constante SHADOWGRP dans le fichier /usr/src/shadow-AAMMJJ/config.h.

Si vous définissez cette constante et que vous compilez, vous devez créer un fichier /etc/gshadow pour stocker les mots de passe pour les groupes, ainsi que les informations concernant l'administration du groupe.

Lorsque vous avez créé le fichier /etc/shadow, vous avez utilisé un programme appelé pwconv, il n'y a pas d'équivalent pour créer le fichier /etc/gshadow, mais ce n'est pas grave.

Pour créer le fichier /etc/gshadow initial, faites la chose suivante:

touch /etc/gshadow
chown root.root /etc/gshadow
chmod 700 /etc/gshadow

Une fois que vous créez un nouveau groupe, il sera ajouté dans le fichier /etc/group ainsi que dans le fichier /etc/gshadow. Si vous modifiez un groupe en ajoutant, retirant, ou en changeant le mot de passe du groupe, le fichier /etc/gshadow sera changé.

Les programmes groups, groupadd, groupmod, et groupdel sont fournis dans la Suite Shadow pour modifier les groupes.

Le format du fichier /etc/group est:

groupname:!:GID:member,member,...
où:
groupname

Le nom du groupe,

!

Le champs contenant normalement le mot de passe qui est maintenant stocké dans le fichier /etc/gshadow,

GID

L'identificateur numérique du groupe,

member

La liste des membres du groupe.

Le format du fichier /etc/gshadow est:

groupname:password:admin,admin,...:member,member,...
où:
groupname

Le nom du groupe,

password

Le mot de passe encodé,

admin

La liste des administrateurs de groupe,

member

La liste des membres du groupe.

La commande gpasswd est utilisée pour ajouter, retirer des administrateurs et des membres d'un groupe. root ou un administrateur du groupe peut ajouter ou retirer des membres du groupe.

Le mot de passe du groupe peut être changé en utilisant le programme passwd par root ou un administrateur du groupe.

En dépit du fait qu'il n'y ait pas encore de page de manuel pour gpasswd, tapez gpasswd sans paramètres pour obtenir la liste des options. C'est relativement facile de comprendre comment tout marche un fois que vous avez compris le format du fichier et les concepts.

7.5 Programmes de vérification de la structure

pwck

Le programme pwck est fourni pour vérifier la cohérence des fichiers /etc/passwd et /etc/shadow. Il vérifie chaque nom d'utilisateur ainsi que les points suivants:

Il prévient aussi lorsqu'un compte ne possède pas de mot de passe.

C'est une bonne idée de lancer pwck après avoir installé la Suite Shadow. C'est aussi une bonne idée de le lancer périodiquement, une fois par semaine ou par mois. Si vous utilisez l'option -r, vous pouvez utiliser cron pour lancer une analyse régulière et avoir un rapport sous forme de courrier.

grpck

grpck est le programme de vérification de la cohérance des fichiers /etc/group et /etc/gshadow. Il effectue les vérifications suivantes:

Il possède aussi l'option -r pour des rapports automatiques.

7.6 Les mots de passe "Accès à distance"

Les mots de passe "Accès à distance" sont une autre ligne de défense des systèmes permettant la connexion à distance. Si vous avez un système qui permet à des utilisateurs de se connecter localement ou par l'intermédiaire d'un réseau, mais vous voulez contrôler qui peut appeler et se connecter, les mots de passe "Accès à distance" sont pour vous. Pour valider les mots de passe "Accès à distance", vous devez éditer le fichier /etc/login.defs et vous assurer que DIALUPS_CHECK_ENAB est positionnée à yes.

Les deux fichiers contenant les informations d'accès à distance sont /etc/dialups et /etc/d_passwd. Le fichier /etc/dialups contient les terminaux (un par ligne, avec l'entête "/dev/" supprimé). Si un terminal est listé alors, la vérification d'accès à distance est effectuée;.

Le second fichier /etc/d_passwd contient le chemin complet d'un shell, suivit d'un mot de passe optionnel.

Si un utilisateur se connecte à un terminal décrit dans une ligne du fichier /etc/dialup et que son shell est listé dans le fichier /etc/d_passwd alors l'accès lui est autorisé en fournissant le mot de passe correct.

Une autre possibilité utile des mots de passe "Accès à distance" est de spécifier un ligne qui ne permet qu'un certain type de connexion (PPP, ou UUCP par exemple). Si un utilisateur essaye d'avoir un autre type de connexion, (ie. une liste de shell), il doit connaitre un mot de passe pour l'utiliser.

Avant de pouvoir utiliser les possibilités de l'accès à distance, vous devez créer les fichiers.

La commande dpaswd est fournie pour assigner un mot de passe à un shell dans le fichier d_passwd. Lisez le manuel en ligne pour de plus amples informations.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre