Cours Systèmes d'exploitation, Dalila Souilem, ISITC, département informatique. Chapitre II Généralités sur UNIX II.1 Présentation d'UNIX A Historique B La normalisation d'UNIX C Les qualités du système UNIX D Caractéristiques générales du noyau II.2 Connexion, déconnexion et gestion des utilisateurs et des groupes A Connexion B Modification du mot de passe C Gestion des utilisateurs et des groupes D Les commandes unix E Caractères génériques 1 Cours Systèmes d'exploitation, Dalila Souilem, ISITC, département informatique. II.2- Connexion, déconnexion et gestion des utilisateurs et des groupes On suppose ici, que l'utilisateur a déjà été enregistré sur le système et que donc, son identité est présente dans des fichiers particuliers gérés par l'administrateur du système. 2.1- Procédure de connexion 2.1.1- Connexion logique La connexion logique doit avoir lieu entre le terminal (écran + clavier) et l'ordinateur sur lequel on veut travailler. Le terminal peut être aussi un autre ordinateur (stations UNIX, PCs, Macintosh, etc.). Cette connexion dépend de la liaison matérielle entre le terminal et l'ordinateur. Dans le cas le plus simple de la liaison directe, il suffit d'allumer le terminal. 2.1.2- Initialisation de la session de travail C'est durant cette étape que l'utilisateur va devoir s'identifier auprès du système. Cette identification a lieu de la façon suivante : - affichage du message login: après lequel il faut rentrer son nom d'utilisateur - affichage du message Password: après lequel il faut rentrer son mot de passe. Celuici n'est pas affiché pendant la frappe pour éviter bien sûr que quelqu'un d'autre puisse l'apercevoir. Puis, souvent, apparaît un message demandant de spécifier le type de terminal utilisé (ex : vt100) et ceci de façon à ce que les éditeurs fonctionnent correctement ; si ce message n'est pas affiché, un type de terminal est pris par défaut. Après la connexion, différents messages en provenance de l'administration du système (mots du jour, présence de courrier dans la boîte à lettres, etc.) sont affichés. L'utilisateur est effectivement prêt à travailler quand il reçoit l'invite du système consistant en un marqueur en début de ligne. Ce marqueur est variable selon les machines ($ , nom utilisateur@nom machine>,#, etc ...) 2.2- Choix d’un mot de passe 2.2.1- Changement de mot de passe Le changement de mot de passe s'effectue avec la commande passwd (ou yppasswd). L'utilisation de l'une ou l'autre commande dépend du type de configuration du système d'enregistrement des utilisateurs d'un système UNIX. Si ceux-ci sont les utilisateurs locaux d'une machine donnée, ils doivent utiliser la commande passwd. Le changement de mot de passe s'effectue en entrant d'abord le mot de passe actuel puis en entrant le nouveau mot de passe que l'on doit retaper pour confirmation. 2.2.2- Qualités d'un "bon" mot de passe Des personnes peuvent essayer d'accéder de façon illégale à un système UNIX. Un des moyens dont ils disposent est d'entrer sur un compte utilisateur en déterminant son mot de passe. Pour cela, ils utilisent des chaînes de caractères appartenant à des dictionnaires ou correspondant à des informations personnelles sur l'utilisateur (prénom, nom, numéro de téléphone, etc.). Il est donc nécessaire que votre mot de passe respecte certaines règles de sécurité, par exemple : 2 Cours Systèmes d'exploitation, Dalila Souilem, ISITC, département informatique. - il doit posséder au moins 7 caractères et contenir au moins un chiffre et ceux-ci à l'intérieur et non en début de mot de passe. - il ne doit pas contenir des données relatives à votre identité comme votre nom d'utilisateur ou une information livrée par la commande finger (voir plus loin) ; - il ne doit pas contenir des répétitions de caractère ; - etc ... 2.3- Procédure de déconnexion Celle-ci dépend du type de session qui a été ouverte. Si un environnement graphique (tel que celui créé par X Windows, l'environnement multi-fenêtrage) est en place, il existe généralement un menu "logout" (ou "exit") qui permet de quitter cet environnement et ainsi de terminer la session de travail. Parfois aussi, ce menu ne permet simplement que de quitter l'environnement graphique. Il faut ensuite procéder à l'étape de déconnexion ci-dessous. En l'absence d'un environnement graphique, une simple commande telle que logout ou exit, entrée après l'invite du système, suffit pour terminer la session de travail. 2.4- Gestion des utilisateurs et des groupes Le système, dès son installation, avant même la première connexion au système a créé des utilisateurs système. Un utilisateur n'est donc pas uniquement une personne physique, le système a besoin d'utilisateurs pour sa gestion interne, notamment comme propriétaire des divers processus. La commande ps aux | less montre qu'avant toute connexion d'utilisateur humain (repérée par les lignes login --user), root a lancé init, et la plupart des services, crond, inetd, lpd, smbd, ... , avant de lancer les connexions utilisateurs dans les consoles, y compris éventuellement la sienne ! 2.4.1-Les principales commandes pour la gestion des utilisateurs et des groupes useradd, usermod, userdel gestion des comptes utilisateur groupadd, groupmod, groupdel gestion des groupes passwd changer le mot de passe d'un utilisateur chfn, id, groups utilitaires divers 2.4.2- Gestion des comptes • Créer un compte pour un nouvel utilisateur 3 Cours Systèmes d'exploitation, Dalila Souilem, ISITC, département informatique. Cela signifie lui permettre d'être connu du poste local, s'y loguer, avoir un accès complet sur son répertoire personnel. • Pour créer l'utilisateur etudiant, root passe la commande : useradd etudiant .Ceci crée : o le répertoire personnel /home/etudiant, portant par défaut le nom du compte o une nouvelle entrée dans les 2 fichiers fondamentaux /etc/passwd et /etc/group. Remarque : Pour connaitre les options de useradd (indispensable pour gérer les comptes à l'aide de scripts) voir complément. • Pour lui attribuer un mot de passe: passwd etudiant Saisir 2 fois le mot de passe • Supprimer le compte userdel [-r] totox d'un utilisateur (non connecté), au hasard totox. 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'utilisateurs. • Modifier le compte de l'utilisateur toto usermod [options] totox Les options sont les mêmes que useradd usermod -G stagiaire,root etudiant ajoute etudiant dans les 2 groupes stagiaire et root (les groupes spécifiés doivent exister). 2.4.3 Gestion des groupes • Un groupe est, aussi pour Linux, un ensemble d'utilisateurs qui partagent les mêmes fichiers et répertoires. Nous verrons que les fichiers accordent des droits d'accès réglables à ces groupes. 4 Cours Systèmes d'exploitation, Dalila Souilem, ISITC, département informatique. • • • Chaque utilisateur doit faire partie au moins d'un groupe, son groupe primaire. Celuici est défini au moment de la création du compte, et par défaut, 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 • • • Pour lister tous les groupes (primaire et secondaires) d'un utilisateur : groups nom_user Pour créer un nouveau groupe groupadd nom_group Supprimer un groupe groupdel nom_group Le groupe est 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 : outil graphique pour la gestion des comptes utilisateurs). Complément : Options de la commande useradd : Nous avons jusqu'ici utilisé cette commande avec ses options par défaut. La maitrise de cette commande est indispensable pour écrire des scripts de génération automatique de comptes. Syntaxe : useradd [options] nom_login Options : -u UID pour fixer l'identifiant UID -g groupe-primaire -G liste fixe l'appartenance de l'utilisateur à une liste de groupes secondaires (séparateur , 5 Cours Systèmes d'exploitation, Dalila Souilem, ISITC, département informatique. sans espace) • • • -s shell par défaut, attribution du shell par défaut bash -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) -m pour créer le répertoire personnel 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 maintenant 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 2. ancienne place du mot de passe crypté 3. numéro d'utilisateur UID (identificateur de l’utilisateur), sa valeur est le véritable identifiant pour le système Linux; l'UID de root est 0, le système attribut conventionnellement un UID à partir de 500 aux comptes créés. 4. numéro de groupe GID (identificateur du groupe), dans lequel se trouve l'utilisateur par défaut; le GID de root est 0, des groupes d'utilisateurs au delà de 500 5. nom complet, il peut être suivi d'une liste de renseignements personnels 6. répertoire personnel (c'est également le répertoire 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. 2. 3. 4. nom du groupe x pour remplacer un mot de passe non attribué maintenant numéro de groupe, c’est-à-dire l'identifiant GID la liste des membres du groupe 3- Les Commandes UNIX 6 Cours Systèmes d'exploitation, Dalila Souilem, ISITC, département informatique. 3.1- Interpréteur de commandes L'utilisateur peut taper des commandes lorsque l'invite de commandes apparaît. Toute commande entrée sera interprétée par l'interpréteur de commandes (ou shell). Le terme shell veut dire coquille pour exprimer l'idée d'interface entre utilisateurs et système UNIX et a été donné par opposition au noyau du système. Il existe des dizaines d'interpréteurs de commandes sous UNIX mais les 2 principaux (qu'on retrouve sur la plupart des systèmes) sont le Bourne-shell (sh) et le C-shell (csh). Le choix de l'interpréteur activé à la connexion est fait à l'enregistrement de l'utilisateur dans le système. 3.2- Syntaxe des commandes Celle-ci est généralement la suivante : nom_commande [options] [arguments] • . le caractère séparateur entre les différents éléments de la commande est l’ESPACE ; • . les options commencent habituellement par le caractère - (signe moins) suivi d'une ou plusieurs lettres-clés • . les arguments spécifient les objets (fichiers ou variables) sur lesquels la commande va s'appliquer. Note : les crochets autour des arguments et des options signifient que ceux-ci sont optionnels. Exemple : liste de fichiers avec les commandes suivantes : ls ls -l (l comme long, donne tous les attributs des fichiers) ls -la (a comme all, liste aussi les fichiers cachés dont les noms commencent par le caractère.) Exemple : visualisation d'un ou plusieurs fichiers : cat fic1 cat fic1 fic2 À noter que tous les shells font la distinction entre les lettres minuscules et majuscules pour les commandes et les noms de fichiers contrairement au MS-DOS. 3.3- Manuel des commandes Si on veut de l'aide sur les règles d'utilisation ou encore sur les fonctionnalités d'une commande, on peut utiliser l'aide en ligne grâce à la commande man (comme MANual pages) de la façon suivante : man nom_commande Exemple : man ls man man Note : l'affichage des "manuel pages" se fait à l'aide de la commande more, afficheur page par page. Pour faire avancer l'affichage, il suffit de taper la barre d'espace. Si on ne connaît pas la syntaxe de la commande, il est possible de faire une recherche par mot-clé dans le système de "manuel pages") à l'aide de la commande suivante : man -k mot-clé Exemple : man -k list ; man -k directories 3.4- Caractères génériques 7 Cours Systèmes d'exploitation, Dalila Souilem, ISITC, département informatique. Certaines commandes acceptent plusieurs noms de fichiers en arguments aussi, il était intéressant d'avoir des notations permettant de raccourcir l'écriture d'une telle liste. Ainsi, il existe plusieurs caractères génériques qui, incorporés dans les noms de fichiers, ont la signification suivante : - le caractère ? qui peut remplacer n'importe quel caractère ; - le caractère * qui peut remplacer n'importe quelle chaîne de caractères, y compris la chaîne vide. Exemple : $ ls fic fic1 fic2 fic3 fic33 mbox rep1 rep2 rep3 $ ls fic? fic1 fic2 fic3 $ ls fic* fic fic2 fic33 fic1 fic3 $ ls fic?? fic33 8