Outils personnels
Vous êtes ici : Accueil Linux Installer un serveur de fichiers (et de messagerie) Configurer les dossiers utilisateurs (droits, propriétés, etc.)

Configurer les dossiers utilisateurs (droits, propriétés, etc.)

Par Freecrazy - Dernière modification 11/05/2011 21:07

Nous avons, précédemment, créé et monté des espaces pour les utilisateurs (dossiers personnels, espaces de stockage communs. Maintenant il faut faire en sorte qu'ils soient accessibles aux utilisateurs.

Dans l'article précédent, nous avons créé et monté des dossiers prévus pour nos utilisateurs, qu'ils soient dédiés comme les /home/userx ou commun comme ceux montés sous /mnt/ : famille, media et archives.

Mais pour l'instant, ce ne sont que des dossiers vides, des coquilles, attachés à personne si ce n'est l'administrateur. Pour qu'ils remplissent leur fonction, il faut les caractériser par leur(s) utilisateur(s) et les droits que ces derniers ont sur ces dossiers. Mais avant cela, il nous faut créer les utilisateurs

1 - Créer les utilisateurs

A l'installation nous avions déjà créé un utilisateur (admin_local), ici il s'agit de créer les suivants, les vrais !

Le Centre de Contrôle Mandrake en interface graphique se prête bien à cet exercice pour les configurations simples (elle ne permet pas par ex de choisir le groupe primaire de l'utilisateur). Mais pour ce serveur nous allons continuer de passer par la ligne de commande, c'est plus amusant et au moins on est amené à comprendre exactement ce que l'on fait.

Sous Mandriva, lors de la création d'un utilisateur, il est créé automatiquement un groupe de même nom. Cela ne me convient pas car cela multiplie les groupes inutilement. Pour moi, tous mes utilisateurs appartiennent à un même groupe "famille". Nous allons donc commencer par créer ce dernier :

# groupadd famille

Maintenant on peut créer l'utilisateur "famille" (ce n'est pas obligatoire, mais je trouve plus pratique d'associer un utilisateur "famille" au groupe "famille")

# useradd -M -n -g famille famille

Arrêtons-nous un instant sur cette commande :

  • -M indique de ne pas construire le dossier /home/famille (c'est le seul 'utilisateur' que nous mettrons sous /mnt);
  • -n (ou -N en 2011) indique seulement de ne pas créer le groupe de même nom. Au cas précis, nous aurions pu nous épargner la pré création du groupe famille, mais j'ai préféré garder un process de création plus générique.
  • -g famille , est vous l'avez compris, l'indication d'ajout de l'utilisateur créé au groupe famille (ici au groupe primaire, pour les ajouter à d'autres groupes dits secondaires il faut utiliser l'option -G)
  • famille = le nom de l'utilisateur créé

 Maintenant il ne nous reste plus qu'à créer les utilisateurs avec un "useradd -n -g famille user1", mais voici ce que cela donne :

Useradd

Le répertoire par défaut ne me convient pas. En effet il comprend des fichiers qui sont utiles pour un utilisateur qui ouvre une session graphique sur le serveur (et il n'est pas prévu que ce soit le cas), c'est également dans ce dossier que viendront plus tard les dossiers de messagerie et je ne veux pas que mes utilisateurs trouvent sur leur espace personnel de stockage ces fichiers qui leur sont utilement accessibles par ailleurs.

Donc j'ai modifié le répertoire des utilisateurs en modifiant leur modèle qui est sous : /etc/skel (pour info la configuration par défaut de useradd se trouve sous /etc/default/useradd). En fait je garde les fichiers actuels, j'ajoute un seul dossier Documents sous lequel je crée des dossiers (avec la commande mkdir) : Images, Musique, Téléchargements, Vidéos. C'est ce dossier /home/userx/Documents qui sera accessible via le serveur de fichiers Samba.

Et cette fois cela donne ceci dans /etc/skel :

ls de skel

que l'on retrouve lors de la création d'un user :

ls de user2

Noter que les information de début de ligne (les droits) ne me conviennent pas non plus mais nous verrons cela au paragraphe suivant.

Si vous préférez définir un /etc/skel_new, la commande devient alors :

# useradd -n -g famille -m -k /etc/skel_new user1

Les utilisateurs sont créés et pour en avoir complétement terminés avec eux, il faut pour chacun leur associer des mots de passe comme ceci :

# passwd user1
Changement de mot de passe pour l'utilisateur user1.
Nouveau mot de passe :
Retapez le nouveau mot de passe :
passwd : mise à jour réussie de tous les jetons d'authentification.

4 - Donner les bons droits à chaque dossier

4.1 - Changer les propriétaire et groupe avec chown

Nous avons monté nos espaces de stockage en tant qu'administrateur, ils appartiennent donc à root comme nous le voyons ici :

ls mnt nok

Cela signifie que pour l'instant seul root (en tant qu'utilisateur root et membre du groupe root) a le droit d'y accéder, or il doit être accessible par tous les membres du groupe famille ! Pour y remédier nous allons changer les propriétaires avec chown (pour change owner) :

# chown -R famille:famille /mnt/archives

Le -R vous l'aurez compris est pour la récursivité.

Le premier 'famille' désigne l'utilisateur 'famille', le second désigne le groupe 'famille'. Ce sera plus clair avec la suite.

Si nous avions à changer le propriétaire des dossiers /home/user1, la commande serait :

# chown -R user1:famille /home/user1

Notez bien que cette commande ne dit pas que user1 appartient au groupe famille (cela c'est useradd qui le fait), elle dit simplement à qui s'appliquent les droits que nous allons définir maintenant.

4.2 Modifier les droits avec chmod

Comme vous le savez certainement, sous Linux tout est fichier, y/c les dossiers et chaque fichier à des droits de lecture, d'écriture et d'exécution ajustables pour 3 catégories : le propriétaire/utilisateur (u), le groupe (g), public (o) (o pour other, c.a.d n'importe qui !).

Illustrons par un exemple :

# ls -al /mnt
drwxr-xr-x     root     root     ./

Nota : la restitution du ls a été simplifiée.

Nous avons par ordre de lecture :

d --> signifie que notre 'fichier' est un dossier (directory)

rwx --> donne les droits de lecture (r - read), d'écriture (w - write) et d'exécution (x - execute) pour le propriétaire/utilisateur. Une autre forme d'écriture est 7 soit 111 en binaire.

r-x --> donne le droit de lecture (r - read), pas de droit d'écriture (-) et le droit d'exécution (x - execute) pour les membres du groupe. Une autre forme d'écriture est 6 soit 101 en binaire.

r-x --> donne le droit de lecture (r - read), pas de droit d'écriture (-) et le droit d'exécution (x - execute) pour tous. Une autre forme d'écriture est 6 soit 101 en binaire. Attention le x n'a pas la même signification si le fichier est un exécutable (script, binaire) ou si le fichier est un dossier, dans ce dernier cas le x signifie qu'on peut y accéder, c.a.d entrer à l'intérieur et voir les fichiers contenus dans ce dossier s'ils ont les bons droits. 

root --> le propriétaire

root --> le groupe (et ici ce groupe a pour seul et unique membre root lui-même)

 

Si les dossiers utilisateurs ont bien les bons utilisateurs (userx et famille), les droits 766 ne conviennent pas, car ainsi, non seulement les membres du groupe famille peuvent voir les dossiers personnels de chacun mais aussi n'importe qui !.

De même pour les dossiers communs (famille, archives et media), les droits 766 ne conviennent pas non plus car n'importe qui peut voir les dossiers (mais pour media ce n'est pas si gênant que cela, on peut laisser éventuellement à nos invités le droit d'y aller) et surtout parce tous les membres du groupe famille n'ont pas le droit d'écriture.

Pour ma part j'ai structuré les choses ainsi :

  • Mes users sont propriétaires de leur dossier personnel sur lequel ils sont exclusivement les seuls à avoir tous les droits.
  • Mes users appartiennent tous au groupe famille comme vu précédemment.
  • Les dossiers de stockage (famille, media et archives) appartiennent à famille et sont complétement accessibles aux membres du groupe famille, mais absolument pas à n'importe qui.

Cela se fait avec la commande suivante pour chaque utilisateur :

# chmod -R 700 /home/user1

Une autre façon de faire est d'appliquer ces changements de droits à /etc/skel

# chmod -R 700 /etc/skel

Ainsi dès la création de l'utilisateur tout est bon :

ls de user OK

Attention, si votre dossier /home/user1 n'est pas vide, la commande useradd ne modifiera en rien l'existant.

Pour les espaces de stockage, la commande est la suivante :

# chmod -R 770 /mnt/archives

Ce qui vous donnera le résultat suivant :

droits mnt ok

 

Voilà tout est prêt, les utilisateurs sont créés, leur espaces mémoires personnels et communs également, le serveur de fichier peut maintenant être mis en place.

Actions sur le document