- 2013-12-01 - Licence Fondamentale d'Informatique
vendredi 6 décembre 2013

Gestion des comptes et groupes d'utilisateurs sur Linux

Gestion des comptes et groupes d'utilisateurs sur Linux

Généralités - notion d'utilisateurs

Même si on est la seule personne à utiliser son système Linux, la compréhension et la gestion des comptes utilisateurs constituent un sujet très important pour l'administration du système. Et encore plus si la machine héberge plusieurs comptes de plusieurs personnes.

Les comptes utilisateur servent à beaucoup de choses sur les systèmes UNIX et Linux :

- Ils permettent de distinguer les différents utilisateurs qui ont accès au système, pour des raisons de sécurité. Chacun d'eux possède un compte personnel, auquel il accède par un identifiant et un mot de passe secret.
- Ces utilisateurs peuvent définir des permissions d'accès à leurs données, afin d'en autoriser ou d'en interdire l'exploitation par les autres.
- Les comptes permettent l'authentification de chaque utilisateur accédant au système, ce qui permet bien d'autres actes de gestion tels que gérer les courriers électroniques des utilisateurs par exemple ou savoir qui a fait une bêtise en examinant les fichiers de trace du système.

En dehors des comptes personnels, il existe des utilisateurs qui ne sont pas forcément des personnes physiques. Ces utilisateurs remplissent des fonctions administratives. C'est le cas du compte root utilisé par l'administrateur pour effectuer la maintenance par exemple. C'est aussi le cas des comptes en général destinés à des démons qui doivent avoir accès à certains fichiers sous une identification spécifique ('le compte news par exemple permet de recevoir les news Usenet en provenance d'un autre site.

Gestion des comptes d'utilisateurs


Création d'un compte d'utilisateur

La création d'un compte demande plusieurs opérations : l'ajout d'une entrée dans le fichier /etc/passwd, la création du répertoire personnel de l'utilisateur, et la mise en place de la configuration par défaut dans le répertoire de cet utilisateur.

L'ensemble de ces opérations est pris en charge par la commande adduser.ou useradd dont la syntaxe se présente comme suit :

adduser [-c commentaires] [-d rep_personnel]
[-e date_expiration] [-f tps_inactivité]
[-g groupe_initial] [-G groupe[,...]
[-m [-k squelette_rep | -M] [-p motdepasse]
[-s shell] [-u uid [-o]] [-n] [-r] utilisateur

Utilisée sans aucun argument, cette commande demande de manière interactive toutes les informations nécessaires pour identifier l'utilisateur en cours de création.

Utilisée sans option (donc uniquement avec l'argument nom d'utilisateur, cette commande applique un ensemble de valeurs par défaut qui sont consignées dans le fichier : /etc/default/useradd 

Voici un exemple de ce fichier, auquel de brefs commentaires sont rajoutés.
GROUP=100 identifiant du groupe primaire
HOME=/homeracine des rép. Personnels
INACTIVE=-1 (nb de jours avant destruction du compte
EXPIRE= nb de jours avant expiration du mot de passe
SHELL=/bin/bash shell de connexion attribué au compte
SKEL=/etc/skel fichiers recopiés par défaut dans chaque rép. personnel

Le tableau ci-dessous synthétise les options les plus utilisées

Option
Résumé
-c commentaires
Nom complet de l'utilisateur et des commentaires divers
-d rep_personnel
Par défaut dans le répertoire /home
-e date_expiration
Fixe la date d'expiration du compte (format MM/JJ/AA)
-f tps_inactivité
Nombre de jours entre l'expiration et la désactivation permanente du compte
-g groupe_initial
Groupe d'affectation du compte. Doit exister avant la création du compte.
-G liste
Fixe l'appartenance de l'utilisateur à une liste de groupes secondaires (séparateur , sans espace)
-m
Le répertoire personnel sera créé s'il n'existe pas. L'option -k n'est valide qu'en conjonction avec l'option -m
-k squelette_rep
Recopie le contenu du répertoire squelette_rep dans le rép. Personnel ; par défaut /etc/skel
-p motdepasse
Mot de passe crypté. Par défaut le compte est désactivé
-s shell
Par défaut, attribution du shell par défaut bash
-u uid
Pour fixer l'identifiant uid à l'utilisateur
-n
Un groupe ayant le même nom que le compte en cours de création sera crée sur le système par défaut. Cette option désactivera ce comportement spécifique à Linux Mandriva

Suppression d'un compte d'utilisateur :
Pour supprimer le compte d'un utilisateur (non connecté), on utilise la commande userdel

userdel [-r] utilisateur

L'option -r supprime aussi le répertoire. personnel et les fichiers de l'utilisateur.
La commande supprime toute trace de l'utilisateur dans le fichier de configuration : /etc/passwd y compris dans les groupes d'utiliseurs.

Modification d'un compte d'utilisateur :
Pour modifier le compte d'un utilisateur, on utilise la commande usermod comme suit :

usermod [options] utilisateur

Les options sont les mêmes que adduserusermod -G stagiaire,prof stagex ajoute stagex dans les 2 groupes stagiaire et profs (qui doivent exister au préalable)
Pour lui attribuer le nouveau mot de passe stgx : passwd stagex
La saisie du nouveau mot de passe sera demandée deux fois.

Remarques :
- Si root souhaite redéfinir son propre mot de passe, il doit passer la commande passwd !
- Un utilisateur quelconque ne peut pas créer de compte, même s'il a le privilège de faire partie du groupe root.! Par contre, il peut modifier lui-même son mot de passe.
- Pour avoir plus d'informations sur les options, ne pas hésiter à faire recours aux pages man de la commande adduser ou utiliser la commande : useradd -h
- Pour une gestion sous interface graphique, Il existe divers outils qui seront présentés dans ce même dossierfont size='2'>
Attention ! Le compte créé permet à l'utilisateur d'accéder au système de fichier Linux (avec des droits que nous verrons).
- Pour pouvoir se connecter au réseau SAMBA, à partir d'une station distante Windows, il faut créer un compte Samba avec l'utilitaire smbpasswd

Gestion des groupes d'utilisateurs


Un groupe sous Linux est un ensemble d'utilisateurs qui partagent les mêmes fichers et répertoires. Nous verrons que les fichiers accordent des droits d'accès réglables à ces groupes.

Chaque utilisateur doit faire partie au moins d'un groupe, son groupe initial ou primaire. Celui-ci est défini au moment de la création du compte, et par défaut sous Linux Mandriva, l'utilisateur appartient à un nouveau groupe créé, portant son nom.
Ainsi, dans /etc/passwd chaque utilisateur possède un groupe par défaut, précisé par son identifiant gid dans ce fichier.

L'appartenance au groupe primaire n'étant pas exclusive, tout utilisateur peut faire partie de plusieurs autres groupes, appelés ses groupes secondaires.

Mais le rôle joué par le groupe primaire demeure prépondérant, comme nous le verrons dans le système des permissions des fichiers.

Pour lister tous les groupes (primaire et secondaires) d'un utilisateur : groups utilisateur

Pour créer un nouveau groupe : groupadd groupe

Supprimer le groupe .stagiaires : groupdel stagiaires (Le groupe est alors supprimé du fichier /etc/group).

Pour ajouter un utilisateur à un groupe, le plus simple est d'éditer le fichier /etc/group et d'ajouter une liste d'utilisateurs (séparés par des virgules) sur la ligne du groupe (ou utiliser Linuxconf).

Structures des fichiers /etc/passwd et /etc/group


Tout ce qui concerne la gestion et l'authentification des utilisateurs est inscrit dans un seul fichier /etc/passwd 
La gestion des groupes est assurée par 
/etc/group
Les mots de passe cryptés sont souvent placés dans /etc/shadow, par sécurité lisible seulement par root.

Structure de /etc/passwd

Ce fichier comprend 7 champs, séparés par le symbole « : »
  1. nom de connexion (encore appelé nom d'utilisateur ou login)
  2. ancienne place du mot de passe crypté
  3. numéro d'utilisateur uid, sa valeur est le véritable identifiant pour le système Linux; l'uid de root est 0, le système attribue conventionnellement un uid à partir de 500 aux comptes créés.
  4. numéro de groupe gid, dans lequel se touve l'utilisateur par défaut; le gid de root est 0, les groupes d'utilisateurs au delà de 500
  5. nom complet, il peut être suivi d'une liste de renseignements personnels (cf chfn)
  6. rép. personnel (c'est également le rép. de connexion)
  7. shell, interprétateur de commandes (par défaut /bin/bash)
Structure de /etc/group

Ce fichier comprend 4 champs, séparés par le symbole « : »
  1. nom du groupe
  2. x pour remplacer un mot de passe non attribué maintenant
  3. numéro de groupe, c-à-d l'identifiant gid
  4. la liste des membres du groupe
Pour Connaitre l'uid et le gid de l'utilisateur courant, on utilise la commande id dont le résultat ressemble à ce qui suit :

uid=501(stage1) gid=501(stage1) groups=501(stage1), 504(stagiaire)

Pour décrire un utilisateur on utilise la commande : chfn
Cette commande permet d'indiquer dans le champ numéro 5 du fichier /etc/passwd différentes informations sur un utilisateur, son nom complet, son bureau, ses numeros de téléphone (séparées par des virgules).

Outils opérationnels en mode texte


La commande passwd
Elle est chargée du cryptage du mot de passe dans /etc/shadow
Syntaxe : passwd [option] nom-login

Options :
--stdin, la commande abandonne son caractère interactif habituel et examine son entrée standard pour s'en servir comme mot de passe.
Très utile dans un script : echo mot | passwd --stdin (attention tout caractère est significatif, y compris les ' ')
-d , pour supprimer le mot de passe, l'utilisateur pourra se connecter sans !
-l , pour verrouiller le compte et empêcher sa connexion.
-u , pour déverrouiller.

Cryptage des mots de passe
Pour des questions de sécurité, les mots de passe cryptés ne sont pas stockés dans /etc/passwd qui doit etre accessible en lecture par tous.

La commande /usr/sbin/pwconv est chargée de transférer les mots de passes cryptés, dans /etc/shadow. Pour plus de détails , consulter man pwconv

Pour interdire l'utilisation, il suffit de remplacer le mot de passe chiffré par une étoile : '*'.
Les accès à un compte peuvent éventuellement être ouverts en laissant le champ mot_de_passe vide. Toute personne voulant se connecter avec ce compte pourra alors le faire.

Récapitulatif des principales commandes 


useradd, usermod, userdel
gestion des comptes utilisateur
groupadd, groupmod, groupdel
gestion des groupes
pwck, grpck
vérification des fichiers
passwd
changer le mot de passe d'un utilisateur
chfn, id, groups, finger
utilitaires divers

Outils graphiques de gestion des comptes et groupes


Les trois outils que nous présentons brièvement nécessitent tous une connexion au système en tant que root.

Linuxconf
Linuxconf est un véritable couteau suisse d'aministration Linux dont l'utilisation nécessite de se connecter au système en tant que root. En général il se lance en ligne de commande (on peut utiliser linuxconf sous X-KDE sur les systèmes Redhat Section Comptes utilisateurs)

Kuser
Kuser est une petite application graphique intégrée à l'interface graphique KDE. Pour le lancer sous Linux Mandriva, il faut exécuter la commande Lanceur d'application/Configuration/Other/User Manager ou tout simplement la commande Kuser dans une fenêtre console.

Userdrake
Userdrakeest une utilitaire graphique dévéloppé par l'éditeur Mandrakesoft. Pour le lancer sous Linux Mandriva, il faut exécuter la commande Lanceur d'application /Configuration/Other/Userdrake ou tout simplement la commande userdrake dans une fenêtre console.

La personnalisation du shell


Il est possible à partir du Shell de modifier l'interpréteur de commandes.
Pour ce faire, il faut utiliser la commande chsh ou alors passwd -s. Linux cherche alors dans le fichier/etc/shells le programme que vous avez spécifié. Seules les commandes présentes dans ce fichier seront acceptées et remplaceront la valeur actuelle du champ programme_de_demarrage. Ces restrictions ne s'appliquent pas au compte du superutilisateur.

Assurez-vous que les droits d'accès du fichier /etc/shells sont les mêmes que pour le fichier /etc/passwd.

Le superutilisateur ne se nomme pas obligatoirement root. Pour le changer, il suffit de remplacer le nom du compte root par celui désiré. Un compte privilégié est un compte dont l'identifiant (UID, User ID) vaut zéro.

Le fichier /etc/profile permet de configurer le Shell. Il concerne tous les utilisateurs.
On y trouve tout d'abord les variables du Shell telles que OPENWINHOME, PATH, ..le type de terminal et la variable TERM. Une partie est consacrée au prompt du Shell, enfin une dernière permet la définition des couleurs de la commande ls..
Au démarrage de Linux, il est agréable d'avoir le pavé numérique allumé, ce qui n'est pas le cas par défaut. Il suffit de rajouter au fichier /etc/profile les lignes qui suivent :

INITTY=/dev/tty[1-7]
for tty in ;
do setleds -D +num <
done

L'administrateur configure un prompt identique pour tous les utilisateurs du système en modifiant la variable PS1 dans le fichier /etc/profile.
S'il veut un prompt du genre 'Bonjour#', il lui faut d'éditer le fichier. Toutes les lignes concernant la variable PS1 doivent alors être précédées d'un dièze: #. Il suffit alors d'ajouter la ligne PS1='Bonjour#'.

L'utilisateur a le loisir de reconfigurer son prompt en éditant le fichier ~/.bash_profile (donc un fichier caché de son répertoire personnel) et en positionnant à sa guise la même variable.

Il est vivement conseillé de laisser un blanc après le prompt pour une meilleure lisibilité. Il est également possible d'utiliser des variables dans le prompt (pour afficher par exemple l'heure ou le nom de la machine...) :

- d pour ajouter la date (format anglais)
- pour ajouter l'heure (HH:MM:SS)
- u pour ajouter le nom de l'utilisateur
- pour un retour à la ligne
- w pour ajouter le chemin complet du répertoire courant
- W pour ajouter le répertoire courant
- h pour ajouter le nom de la machine

La couleur peut également être changée. Pour ceci, il faut utiliser la variable PS1 comme ceci:

PS1='[�33[num_couleurm]prompt_voulu�33[0m]'

Le numéro de la couleur sera pris dans la liste suivante:
Noir
0;30
Rouge
0;31
Vert
0;32
Brun
0;33
Bleu
0;34
Violet
0;35
Cyan
0;36
Gris Clair
0;37
Gris
1;30
Rose
1;31
Vert Clair
1;32
Brun Clair
1;33
Bleu Clair
1;34
Violet Clair
1;35
Cyan Clair
1;36
Blanc
1;37





Voici un exemple qui indique l'heure suivie du nom de l'utilisateur en rouge:
PS1=' [�33[0;31m]u�33[0m]'


Par l'équipe technique A.N.F.A


Vous pouvez également faire héberger vos tutoriaux sur le site Misfu, il vous suffit de nous les envoyer

Ubuntu Linux: Add a User To Group

How do I add a user to group under Ubuntu Linux operating system using command line options?

You need to use the following commands:
Tutorial details
DifficultyIntermediate (rss)
Root privilegesYes
Requirementsuseradd / usermod
Estimated completion time5 minutes
[a] useradd command - Create a new user or update default new user information or add a new user to secondary group.
[b] usermod command - Modifies the system account and make changes to existing user accounts.

First, login as the root user

You must login as the root user. You can switch to the root user by typing 'su -' and entering the root password, when prompted. However, sudo command is recommend under Ubuntu Linux for switching to root user:
su -
OR
sudo -s
OR
sudo useradd ...

Ubuntu Linux: add a new user to secondary group

Use the following syntax:
 
useradd -G Group-name Username
passwd Username
 
Create a group called foo and add user tom to a secondary group called foo:
$ sudo groupadd foo
$ sudo useradd -G foo tom

OR
# groupadd foo
# useradd -G foo tom

Verify new settings:
 
id tom
groups tom
 
Finally, set the password for tom user, enter:
$ sudo passwd tom
OR
# passwd tom
You can add user tom to multiple groups - foo, bar, and ftp, enter:
# useradd -G foo,bar,ftp tom

Ubuntu Linux: add a new user to primary group

To add a user called tom to a group called www use the following command:
useradd -g www tom
id tom
groups tom
 

Ubuntu Linux: add a existing user to existing group

To add an existing user jerry to ftp supplementary/secondary group with usermod command using -a option ~ i.e. add the user to the supplemental group(s). Use only with -G option:
 
usermod -a -G ftp jerry
id jerry
 
To change existing jerry's primary group to www, enter:
 
usermod -g www jerry
mardi 3 décembre 2013

LFI3::FSM : correction du TP de la programmation web



Insertion des données saisies
ü  Dans un premier temps, nous allons suivre pas à pas les étapes de la récupération des données d'un formulaire pour l'introduire ensuite dans la base.
ü  Dans un second temps, nous allons faire l'inverse. Nous sélectionnerons des données dans la base que l'on va ensuite récupérer à l'aide de PHP et ensuite on l'affichera dans un tableau html.
ü  Voici donc un formulaire de saisie (Inscription.HTML )  qui nous permettra de saisir des élèves.

Traitement des données saisies

Ø  Une fois que l'on aura saisi les données, l'étape suivante consistera à les récupérer et à les insérer dans la base de données.
Connexion à la base : Avant tout, il est quand même important de savoir qu'à chaque fois que l'on veut effectuer un traitement mysql en PHP, il nous faut ouvrir et fermer une connexion à la base.

De nombreuses fonctions de base sont utilisées pour la connexion, en voici quelques une qui sont bonnes à savoir :
·         Connexion au serveur: mysql_connect()
·         Sélection de la base de données : mysql_select_db()
·         Fermeture de la base : mysql_close()
·         Code dans fonctionBD.php : Un fichier contient deux fonctions connect_bd et deconnect_bd servent respectivement à l'ouverture et à la fermeture de la connexion. Le fichier sera alors inclus à chaque fois que l'on aura besoin d'une communication avec la base.

Traitement de données
Ø  Passons maintenant au vif du sujet. On a maintenant les données, il ne nous reste plus qu'à les récupérer, communiquer avec la base et les insérer dans la base. Tout cela va se dérouler dans un fichier Traitement.php.

Il est vrai qu'il y a encore un certain nombre de choses que l'on a zappé, comme les vérifications des champs saisi par exemple. Entre temps, le javascipt peut s'occuper de cela. Néanmoins, on a essayé d'être un petit peu prudent et on a utilisé la fonction addslashes. Cette fonction rajoutera des antislashs dans une chaîne là ou il y a des caractères à échapper. Si jamais l'utilisateur nous a par exemple rentré une adresse telle que " avenue de l'indépendance ", la fonction nous rajoutera automatiquement un antislash avant le guillemet afin d'éviter toute erreur.

Ensuite vient le tour de l'insertion de la base. C'est la fonction mysql_query qui s'occupe de l'envoie de la requête d'insertion au serveur.

Sélection et Affichage des données

Ø  Maintenant, faisons l'inverse. Après avoir inséré bon nombre de données dans la base, essayons de les sélectionner et de les afficher. . Tout cela va se dérouler dans un fichier Affichage.php.


La fonction mysql_fetch_array() nous retourne une ligne de résultats sous la forme d'un tableau, dont les clés sont les noms des champs sélectionnés (numero, nom,…)


 Remarque :
              Les fichiers  Traitement.php, fonctionBD.php, Affichage.php seront enregistrés sous localhost (www) et le fichier  Inscription.HTML peut être enregistré dans n’import quel emplacement.



              Voici un tableau exemple :

              test (nom du base) -> etudiant(nom du table)

numero
nom
prenom
addresse
001
Khalifi
Ali
monastir
002
Ben ahmed
Jalel
sousse




Pour télecharger le code voila le lien  : http://sdrv.ms/IqXn5S


Rq: Tp_Prog_Web.rar c'est fichier qu'il contient :
* -readline-
* affichage.php
* fonctionBD.php
*inscription.html
*traitement.php


 
-