User Tools

Site Tools


utilisateurs_droits

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

utilisateurs_droits [2020/06/27 08:50] (current)
guy created
Line 1: Line 1:
 +====== Utilisateurs,​ groupes, mots de passe, dossiers ======
 + 
 +La gestion des utilisateurs,​ des groupes des mots de passe... peut se faire de deux façons complémentaires:​
  
 +  * à un niveau élémentaire,​ pour l'​accès à l'​ordinateur en mode graphique, par le menu **Système/​Administration/​Utilisateurs et groupes**
 +
 +  * de façon plus fine, par **lignes de commande**, les fonctions suivantes sont décrites ci-après. Les paramètres des groupes existants sont dans le fichier **/​etc/​group**.
 +
 +===== Ajout/​suppression utilisateur,​ mot de passe =====
 +
 +  * Ajout d'​utilisateur:​ de préférence,​ **adduser** (il est interactif),​ ou bien **useradd**.
 +
 +**Adduser** ajoute, en un coup: le nouvel utilisateur,​ son groupe, son répertoire personnel dans /home et ses informations.
 +
 +<​file>​sudo adduser tutu
 +Ajout de l'​utilisateur « tutu »...
 +Ajout du nouveau groupe « tutu » (1004)...
 +Ajout du nouvel utilisateur « tutu » (1004) avec le groupe « tutu »...
 +Création du répertoire personnel « /​home/​tutu »...
 +Copie des fichiers depuis « /​etc/​skel »...
 +Entrez le nouveau mot de passe UNIX : 
 +Retapez le nouveau mot de passe UNIX : 
 +passwd : le mot de passe a été mis à jour avec succès
 +Changing the user information for tutu
 +Enter the new value, or press ENTER for the default
 + Full Name []: Tutu
 + Room Number []: 
 + Work Phone []: 
 + Home Phone []: 
 + Other []: 
 +Ces informations sont-elles correctes ?​ [O/n] o
 +</​file>​
 +
 +  * Ajout de la fonction **admin**
 +Quand un utilisateur existe, on peut lui attribuer les droits d'​administration:​
 +<​file>​adduser tutu admin   # qui aura alors accès au sudo ou gksu</​file>​
 +
 +  * Ajout d'un utilisateur toto avec ses groupes group1 et group2:
 +<​file>​sudo adduser -g group1 -G group2 -m toto</​file>​
 +
 +  * Suppression d'un utilisateur:​ **userdel** ou **deluser**.
 +<​file>​userdel -r toto  # supprime également le contenu de /​home/​toto</​file>​
 +
 +  * La liste des utilisateurs est donnée par le fichier **/​etc/​passwd** (il faut un peu fouiller parmi les nombreux noms système...). On y trouve également le type de **shell** utilisé par chaque utilisateur.
 +
 +Les mots de passe sont cachés dans **/​etc/​shadow**.
 +
 +{{etc-passwd.png|}}
 +
 +===== Changement de mot de passe =====
 +
 +La commande pour fixer ou changer de mot de passe est **passwd**.
 +<​file>​sudo passwd login     # pour changer le mot de passe de l'​utilisateur login</​file>​
 +
 +<​file>​sudo passwd ​          # sans nom d'​utilisateur,​ change le mot de passe root</​file>​
 +
 +===== Ajout de groupe =====
 +
 +Les commandes sont **groupadd** ou **addgroup**
 +<​file>​
 +sudo groupadd groupe1 ​
 +sudo groupadd groupe2
 +</​file>​
 +
 +===== Ajout d'​utilisateurs dans les groupes =====
 +
 +En root, utiliser la commande **usermod**. L'​option **-g** permet d'​indiquer le groupe principal et **-G** ​ la liste des groupes secondaires. Ils doivent déjà exister.
 +<​file>​usermod -g users -G group1,​group3 mathurin</​file>​
 +
 +Pour vérifier, on utilise la commande groups suivie du <​login>​.
 +<​file>​groups mathurin
 +users group1 group2 group3</​file>​
 +
 +Pour connaitre la répartition des utilisateurs dans les groupes, consulter le fichier **/​etc/​group**:​
 +<​file>​sudo nano /​etc/​group</​file>​
 +
 +===== Création de fichiers/​dossiers. Appartenances ====
 +
 +  * Création de dossiers par **mkdir** (make directory)
 +<​file>​
 +mkdir dossier1 ​
 +mkdir dossier2  ​
 +</​file>​
 +Attention, le dossier appartient à celui qui le crée.
 +
 +  * Création de fichier vide: **touch** ou **>**
 +<​file>​touch dossier1/​fichier_x ​ </​file> ​
 +<​file>>​ dossier1/​fichier_x ​ </​file> ​
 +
 +  * Changement du propriétaire d'un dossier par **chown** (change owner). La syntaxe est
 +<​code>​chown [options] utilisateur fichier (ou dossier)</​code>​
 +<​file>​
 +sudo chown -R pierre dossier1 ​
 +chown -R marc.groupe2 dossier2 ​ # change le propriétaire et le groupe du dossier
 +</​file>​
 +L'​option **-R** modifie l'​appartenance de manière récursive dans une arborescence de répertoire.
 +
 +  * Changement de propriétaire et de groupe simultanément
 +<​code>​$ sudo chown denise:​family fichier ​ # change l'​appartenance de fichier à denise et au groupe family
 +$ ls -l
 +-rw-r--r-- ​ 1 denise family ​ ... fichier</​code>​
 +
 +===== Vérification des utilisateurs =====
 +
 +  * **users** ou **who** ou **w** affichent la liste des utilisateurs connectés (au sens ouverture de session) , ainsi que **finger**.
 +<​code>​guy@userv:​~$ users
 +guy jeff
 +guy@userv:​~$ who
 +guy      pts/1        2009-03-05 10:04 (192.168.123.2)
 +jeff     ​pts/​2 ​       2009-03-05 10:15 (192.168.123.7)</​code>​
 +<​code>​guy@userv:​~$ finger
 +Login     ​Name ​      ​Tty ​     Idle  Login Time   ​Office ​    ​Office Phone
 +guy       ​Guy ​       pts/1          Mar  5 10:04 (192.168.123.2)
 +jeff      Jeff       ​pts/​2 ​      ​5 ​ Mar  5 10:15 (192.168.123.7)
 +</​code>​
 +
 +<​code>​guy@Remix9-10~ >w                                                                                                10:37 #1030
 + ​10:​38:​08 up 25 min,  2 users, ​ load average: 0,16, 0,28, 0,24
 +USER     ​TTY ​     FROM              LOGIN@ ​  ​IDLE ​  ​JCPU ​  PCPU WHAT
 +guy      tty7     :​0 ​              ​10:​13 ​  ​25:​34 ​  ​1:​31 ​  0.40s gnome-session
 +guy      pts/1    :0.0             ​10:​34 ​   0.00s  0.34s  0.03s w
 +</​code>​
 +<​code>​guy@Remix9-10~ >​who ​                                                                                             10:37 #1029
 +guy      tty7         ​2010-02-02 10:13 (:0)
 +guy      pts/1        2010-02-02 10:34 (:​0.0)</​code>​
 +
 +  * **last** donne la liste des utilisateurs qui se sont connectés (depuis le début du mois).
 +<​code>​guy@userv:​~$ last
 +jeff     ​pts/​2 ​       192.168.123.7 ​   Thu Mar  5 10:15   still logged in
 +guy      pts/2        192.168.123.7 ​   Thu Mar  5 10:08 - 10:13  (00:05)
 +guy      pts/1        192.168.123.2 ​   Thu Mar  5 10:04   still logged in
 +guy      pts/0        192.168.123.2 ​   Thu Mar  5 10:03 - 10:18  (00:15)
 +guy      pts/0        192.168.123.2 ​   Wed Mar  4 18:53 - 21:45  (02:51)
 +guy      pts/0        192.168.123.2 ​   Wed Mar  4 16:55 - 18:34  (01:39)
 +reboot ​  ​system boot  2.6.24-19-server Wed Mar  4 16:54 - 10:26  (17:31)
 +</​code>​
 +
 +On voit que le 5 Mars, 3 terminaux étaient ouverts pts/0, pts/1 et pts/2.
 +
 +  * L'​option **-n** permet de limiter aux **n** dernières connexions.
 +<​file>​last -n 15  # pour n'​afficher que les 15 dernières</​file>​
 +
 +  * **lastb** (à lancer en root) donne la liste des connexions ayant **échoué**.
 +<​file>​sudo lastb</​file>​
 +
 +===== Vérification des shells-utilisateurs =====
 +
 +Pour connaître les shells des différents utilisateurs,​ éditer le fichier **/​etc/​passwd**.
 +<​file>​cat /​etc/​passwd</​file>​
 +
 +===== Vérification des groupes =====
 +
 +Pour vérifier à quels groupes appartient quelqu'​un,​ utiliser la commande **groups**.
 +<​file>​groups <​login> ​ # sans préciser l'​utilisateur,​ affiche ceux de l'​utilisateur courant</​file>​
 +
 +La commande **id <​login>​**,​ très proche, donne également les groupes de l'​utilisateur,​ mais avec leur GID (Group Id)
 +
 +{{id_untel.png|}}
 +
 +===== Groupes existants =====
 +
 +  * L'​information est dans le fichier **/​etc/​group**. En l'​éditant,​ on peut modifier l'​appartenance des utilisateurs aux groupes existants.
 +<​code>​guy@Athos-U9:​~$ cat /etc/group
 +root:x:0:
 +daemon:x:1:
 +bin:x:2:
 +sys:x:3:
 +adm:​x:​4:​xxx,​yyy
 +tty:x:5:
 +disk:x:6:
 +lp:x:7:
 +mail:x:8:
 +news:x:9:
 +uucp:x:10:
 +man:x:12:
 +proxy:x:13:
 +kmem:x:15:
 +dialout:​x:​20:​xxx,​yyy
 +fax:​x:​21:​xxx,​yyy
 +voice:x:22:
 +...
 +</​code>​
 +  * On peut connaitre les groupes de l'​utilisateur courant par les commandes suivantes **id** ou **groups**. Si on ajoute derrière un autre login en argument, on obtient les groupes de l'​utilisateur correspondant.
 +<​code>​guy@AthosN:​~$ sudo groups toto
 +toto : toto adm dialout fax cdrom audio dip video plugdev fuse lpadmin netdev admin sambashare vboxusers
 +</​code>​
 +
 +===== Gestion des groupes =====
 +
 +  * Ajout d'un groupe:
 +<​file>​sudo groupadd groupe_n</​file>​
 +
 +  * Recherche d'un groupe:
 +<​file>​ sudo grep group_n /​etc/​group</​file> ​
 +Réponse:
 +<​file>​group_n:​x410:</​file>​
 +
 +  * Suppression d'un groupe:
 +<​file>​sudo groupdel group_m</​file>​
 +Vérification:​ <​file>​sudo grep group_m /​etc/​group</​file>​
 +Réponse: la commande ne renvoie rien, le groupe a bien été supprimé.
 +
 +
 +  * Changement de nom du groupe:
 +<​file>​
 +sudo groupmod nouveau_nom group ancien_nom
 +</​file>​
 +
 +===== Attribution des droits =====
 +
 +  * Les droits sur les dossiers ou fichiers apparaissent avec les commandes du type ls -l ou ls -la sous la forme:
 +
 +- r w - r - - r - - formé d'un premier caractère (- pour un fichier ordinaire) et de 3 groupes ​ (propriétaire [**u**], groupe [**g**], autres utilisateurs [**o**]) de 3 caractères avec la signification suivante:
 +
 +  * **r** (Read) droit lecture
 +  * **w** (Write) droit d'​écriture
 +  * **x** (eXecute) droit d'​exécution pour un fichier, droit de passage pour un dossier
 +  * - pas de droit correspondant
 +
 +Pour changer ces droits, on utilise **chmod** en indiquant le(s) groupe(s) de permission concerné(s) (u, g et/ou o et même [**a**] all pour tous les utilisateurs (équivalent à [ugo]) avec le signe + pour ajouter, - pour retirer. Exemples: ​
 +<​file>​
 +guy@jeriserv://​home$ chmod u+x fichier1
 +</​file>​
 +ajoute le droit d'​exècution sur le fichier1 pour l'​utilisateur en cours.
 +
 +<​file>​
 +guy@jeriserv://​home$ chmod ug+x,o-r fichier1
 +</​file>​
 +ajoute le droit d'​éxècution pour le propriétaire et le groupe, et supprime la lecture aux autres.
 +
 +Une autre façon de paramétrer chmod est d'​utiliser la notation décimale selon la table de conversion suivante: ​
 +
 +|              ^ u           ^ g          ^ o       ​^ ​   a   ^
 +^ r    | 4          | 4        |  4                 ​| ​   4   |
 +^ w    | 2          | 2        |  2                 ​| ​   2   |
 +^ x    | 1          | 1        |  1                 ​| ​   1   |
 +
 +Faire ensuite les totaux par colonne pour chaque ensemble. On voit que **chmod 751 fichier_n** correspond à **chmod ​ u+rwx,​g+rx-w,​o+x-rw fichier_n**
 +
 +
 +Pour donner tous les droits (rwx) aux responsables et équipiers et rien pour les autres sur le dossier projet1:
 +
 +<​file>​
 +chmod u+rwx,​g+rwx,​o-rwx projet1/ ​         # ou chmod 770 projet1/
 +</​file>​
 +
 +Pour étendre ces droits à tous les fichiers du répertoire projet1:
 +
 +<​file>​
 +chmod u+rwx,​g+rwx,​o-rwx projet1/​* ​       # ou chmod 770 projet1/*
 +</​file>​
 +
 +>>>​De façon générale, pour donner des droits à un **répertoire** de façon **récursive** à l'​intérieur de ce répertoire,​ utiliser l'​option **-R**.
 +<​file>​chmod 770 -R repertoire1/ ​ # attribue ces droits au répertoire et à ses descendants</​file>​
 +
 +  * Les changements de propriétaire se fait par **sudo chown**.
 +
 +  * Les changements de groupe sont faits par **sudo chgrp**.
 +
 +
 +===== Utilisateurs et environnement =====
 +
 +Plusieurs commandes permettent de connaître l'​environnement utilisateurs.
 +
 +  * **logname** qui affiche le nom d'​utilisateur de la connexion
 +
 +{{logname.png|}}
 +
 +
 +  * **whoami** qui affiche le nom d'​utilisateur courant
 +
 +{{whoami.png|}}
 +
 +
 +  * **id** qui donne l'​identifiant numérique de l'​utilisateur courant (ou indiqué) ainsi que les identifiants des groupes auxquels il appartient
 +
 +{{id.png|}}
 +
 +  * **who** qui donne le nom des utilisateurs connectés, avec une ligne par shell ouvert. **tty7** correspond à la sortie graphique, **pts/1**, **pts/2**, **...** ​ aux shells ouverts.
 +
 +{{who.png|}}
 +
 +  * **last** qui affiche l'​historique des connexions (commande très utile en sécurité)
 +
 +{{last.png|}}
 +
 +===== Changement de propriétaire =====
 +
 +
 +  * Changement du propriétaire d'un dossier par **chown** (change owner). La syntaxe est
 +<​code>​chown [options] utilisateur fichier (ou dossier)</​code>​
 +<​file>​
 +sudo chown -R pierre dossier1 ​
 +chown -R marc.groupe2 dossier2 ​ # change le propriétaire et le groupe du dossier
 +</​file>​
 +L'​option **-R** modifie l'​appartenance de manière récursive dans une arborescence de répertoire.
 +
 +  * Changement de propriétaire et de groupe simultanément
 +<​code>​$ sudo chown denise:​family fichier ​ # change l'​appartenance de fichier à denise et au groupe family
 +$ ls -l
 +-rw-r--r-- ​ 1 denise family ​ ... fichier</​code>​
 +
 +===== Changement de groupe pour les fichiers ou répertoires =====
 +
 +Utiliser la commande **chgrp** aussi bien pour les fichiers que pour les répertoires.
 +<​file>​
 +sudo chgrp group3 fich1 fich2 rep/
 +</​file>​
 +
 +Comme pour **chmod** (voir plus haut), la récursivié dans le dossier est donnée par l'​option **-R**.
 +<​file>​chgrp -R toto projet1 ​ # donne ces droits à l'​ntérieur du dossier</​file>​
 +
 +===== chroot, changement de racine =====
 +
 +La commande **chroot** (CHange ROOT) permet de passer **root** sur une autre partition-racine.
 +<​file>​chroot /​media/​sdaX ​ # pour chrooter sur la racine sdaX (après l'​avoir montée)</​file>​
 +
 +Cette technique est souvent utilisée pour réparer une distribution en panne. On démarre sur un système sain (LiveCD par exemple), le chroot est utilisé ensuite après le démarrage pour passer dans l'​environnement endommagé et faire des modifications directement dans ce dernier. La procédure est la suivante:
 +  * démarrer en LiveCD
 +  * repérer la partition-racine à réparer (disons sdxy). S'​aider de Gparted si besoin
 +  * monter la partition en /mnt
 +<​file>​mount/​dev/​sdxy /mnt </​file>​
 +  * monter l’arborescence de la partition relative au noyau :
 +<​file>​sudo mount -o bind /proc /​ubuntu/​proc </​file>​
 +  * lancer le chroot sur la partition et utiliser cette commande chroot pour passer au shell (invite de commande) de l'​installation à réparer au lieu de celle du LiveCD:
 +<​file>​sudo chroot /mnt /bin/bash </​file>​
 +  * Utilisation:​ l'​invite de commande est celle du système obtenu par le chroot, qui celui monté en chroot dans /mnt. On peut maintenant lancer à partir du terminal, les commandes nécessaires à la réparation,​ l'​installation,​ etc..
utilisateurs_droits.txt · Last modified: 2020/06/27 08:50 by guy