Les droits sur les fichiers et les dossiers

gid , uid, ont été abordés dans l'article sur le montage des partitions, où umask a déjà été abordé.

Cette commande umask sera aussi traitée dans ce présent article.

cet article sera très utilement complété par la lecture attentive de cet article sur les ACL acl_permissions_sur_fichiers.pdf qui mériterait à lui seul un article

EDIT 2022/16/10 http://blog-libre.org/wp-content/uploads/2013/07/acl_permissions_sur_fichiers.pdf n'est malheureusement plus disponible…et wayback dit No URL has been captured for this URL prefix. http://blog-libre.org/wp-content/uploads/

Les fichiers et dossiers d'un utilisateur

Petit exemple : Soit un utilisateur r51 ayant ses fichiers dans /home/r51/.

Tous ses fichiers appartiennent à l'utilisateur r51 et au groupe r51 et sont en permission 750.

Ses fichiers ne seront donc accessibles que par lui même et par les membres du groupe r51.

Notion de groupe

Pour qu'un autre utilisateur ait accès aux fichiers de r51, il faudra donc que cet autre utilisateur appartienne au groupe r51.

chown

Syntaxe

  • On passe cette commande en mode admin (sudo).
  • On place des espaces sudo [espace] chown [espace] utilisateur:utilisateur [espace] /media/stock
  • On modifie dans cet exemple un dossier depuis la racine et on indique donc son chemin absolu avec les slash.

Pour un fichier ou un dossier

   sudo chown utilisateur:utilisateur /media/stock

Si le propriétaire du dossier /media/stock était root, il sera dorénavant l' utilisateur loggué sur ce compte utilisateur au moment de la modification.

Pour un dossier et tous ses sous-dossiers

Ajouter la commande -R = récursivité sur le contenu du dossier indiqué en premier.

Convention: utilisateur sera util. C'est le compte courant sous lequel on a démarré la session.

Le dossier Images appartient déjà à l'utilisateur courant, mais par un curieux hasard ( qui n'en est pas un, puisqu'il s'est agit d'une opération de récupération en liveCD qui se fait en mode root, et tout ce qui est sauvé appartient à root, même si à l' origine, il était à “util”), il s'avère que ses sous-dossiers et les fichiers qu'il contient appartiennent à root.

Il faudra donc modifier le propriétaire de tous les contenus de ce dossier, donc de façon récursive:

sudo chown -R util:util Images/.

Attention à la syntaxe ! [slash][point] —> /. Il n'y a pas de slash devant Images, car nous utilisons le chemin relatif (nous sommes dans le répertoire utilisateur et Images est un de ses sous-dossiers directs !)

Notons plusieurs points :

  • Nautilus même avec “gksudo nautilus” lancé depuis la console ne donne pas accès à ces réglages récursifs avancés.
  • Il est toujours victime d'un bug
  • Dolphin ne règle pas le souci comme indiqué dans cet article de la doc ubuntu.
  • La doc Ubuntu pourtant bien conçue ne donne aucune information sur la “bonne ligne de commande” (celle que je viens de citer au dessus) permettant de réaliser ces modifications récursives sur tout un dossier et son contenu.

http://doc.ubuntu-fr.org/permissions#graphiquement1 nous dit : “Attention, cette fonctionnalité subit le Bug #371025 et ce depuis 2006 (si si), elle touche sur la modification récursive de fichiers d'un répertoire (dont vous éditez les permissions) . Si vous vous y connaissez ! L'utilisation de dolphin (KDE) permet de résoudre le problème sous ubuntu.”

Notons enfin qu'il est inutile, sauf cas particulier, de se préoccupper des droits réellement transmis (à u , g et o en w , r ou x = voir ci- dessous), puisque ce sont les droits par défaut qui sont attribués selon le user_mask (qui est rwx r-x r-x sous ubuntu pour les fichiers et drwx r-x r-x pour les dossiers).

Voir pour mémoire l'article commandes_de_base_et_syntaxe_Icaunux, la toute fin sur la copie de répertoire..Commande non présente dans les tutos de la do Ubuntu …

Changer les permissions d'un fichier/dossier avec CHMOD

Codes

Leur signification sera traitée plus bas.

u user = utilisateur g = group = groupe o = other = autres

r read = lire w write = écrire x =execute = exécuter

La suite de caractères “rwx” donne donc tous les droits sur un fichier ou un dossier.

Fichiers_sur_csnu

Les permissions maximales sont donc rwxrwxrwx, ou 777 en octal. Pourquoi trois répéter trois fois rwx car on vise les user, group et other. En ce cas, ce fichier, (ou dossier ou programme) sera accessible à tout le monde.

Droits sur le dossier TEST

chmod [espace] [u ou g ou o] + rwx [espace] TEST

chmod u+rwx TEST : ajoute les permissions rwx à user pour le fichier ou le dossier TEST

chmod g+rwx TEST : ajoute les permissions rwx au groupe pour le fichier ou le dossier TEST

chmod o+rwx TEST : ajoute les permissions rwx à other pour le fichier ou le dossier TEST

Récursif

Vous pouvez changer les permissions d'un dossier et de tout ses sous-répertoires en ajoutant l'option -R :

   chmod -R o+r dir/  

Dans cet exemple, o = autres, r (lire) dir (le nom de répertoire) suivi sans espace d'un /

Les propriétaires

Par la propriété d'un fichier, on désigne à quel utilisateur appartient le fichier, qui le possède. À partir de cette possession (ou non), il sera ensuite possible de définir des permissions d'accès sur le fichier. La possession d'un fichier se définit sur trois catégories :

  1. l'utilisateur propriétaire du fichier (u).La plupart du temps, il s'agit du créateur du fichier. (Prenez note qu'un fichier créé par une commande exécutée à l'aide de sudo appartiendra à l'utilisateur root ; vous serez potentiellement amené à devoir changer le propriétaire de ce fichier pour pouvoir vous en servir avec votre propre compte utilisateur.)
  2. le groupe propriétaire du fichier (g). Si un utilisateur est membre d'un certain groupe qui possède la propriété d'un fichier, l'utilisateur aura aussi certaines permissions particulières sur ce fichier.
  3. les autres, other, le reste du monde(o). Bref, tout un chacun n'étant ni propriétaire du fichier, ni membre du groupe propriétaire du fichier.

Les droits sont affichés par une série de 9 caractères,associés 3 par 3 (rwx rwx rwx) définissent les droits des 3 identités (u,g et o). Voyons ci-dessous les permissions.

Les permissions: umask

umask (user file creation mode mask, masque de création de fichier par l'utilisateur) est un attribut des processus Unix, ainsi que la commande POSIX qui permet de modifier cet attribut. Le umask définit les permissions par défaut d'un répertoire ou d'un fichier créé.

Les permissions se définissent sur trois niveaux d'actions.

Lire, c'est r

r comme readable, lisible en anglais.

la lecture r : on peut par exemple lire le fichier avec un logiciel. Lorsque ce droit est alloué à un répertoire, il autorise l'affichage du contenu du répertoire (la liste des fichiers présents à la racine de ce répertoire).

Ecrire c'est w

w comme writable, que l'on peut écrire, modifier.

Le droit d' écriture permet de modifier ou de supprimer le fichier.

Lorsque ce droit est alloué à un répertoire, il autorise la création, la suppression et le changement de nom des fichiers qu'il contient, quels que soient les droits d'accès des fichiers de ce répertoire (même s'ils ne possèdent pas eux-mêmes le droit en écriture).

stick bit

Néanmoins le droit spécial sticky bit permet de passer outre ce comportement.

Ce droit (traduction bit collant) est utilisé pour manier de façon plus subtile les droits d'écriture d'un répertoire. En effet, le droit d'écriture signifie que l'on peut créer et supprimer les fichiers de ce répertoire.

Le sticky bit wikipedia_Sticky_Bit permet de faire la différence entre les deux droits.

Exécuter un programme, c'est x

x comme la seconde lettre du mot executable, exécutable. On peut exécuter le fichier s'il est prévu pour, c'est-à-dire si c'est un fichier exécutable. Lorsque ce droit est attribué à un répertoire, il autorise l'accès (ou ouverture) au répertoire.

Les parenthèses sont là pour faciliter la lecture, mais en sont pas présentes en réalité.

Chaque fichier est pourvu de droits (rwx) pour chacun des utilisateurs (u (utilisateur), g (groupe), o (other= les autres). Nous avons ainsi une série de neuf caractères. (rw-)(r–)(r–), mais il est plus simple en ligne de commande d'entrer une valeur numérique pour modifier cet umask.

En octal

En octal, chaque « groupement » de droits (pour user, group et other) sera représenté par un chiffre et à chaque droit correspond une valeur :

r = 4 w = 2 x = 1 - = 0 Par exemple, Pour rwx, on aura : 4+2+1 = 7 Pour rw-, on aura : 4+2+0 = 6 Pour r--, on aura : 4+0+0 = 4

Selon wikipedia, l' umask le plus courant vaut 0022. Il vaut (rw-)(r–)(r–), c'est-à-dire que le propriétaire du fichier a des droits en lecture et en écriture, tandis que les membres du groupe et les autres ne disposent que de la permission de lecture.Ces permissions sont restrictives comparées au fonctionnement par défaut d'ubuntu, qui accorde les permissions (rwx)(r-x)(r-x)

Les droits des fichiers d'un dossier peuvent être affichés par la commande

     ls -l
     

Le format des droits d'accès est une liste de 10 symboles :

   (d)(rwx)(r-x)(r-x)
   

Le premier symbole est soit « - », « l », soit « d », indiquant si le fichier en question est effectivement un fichier, est un lien ou est un dossier.

Annexes

Droits spéciaux

Il existe des permissions d'accès spéciales. Elles ne peuvent être attribués que par le propriétaire du fichier (ou par root).

Leurs valeurs octales sont 1000, 2000 et 4000. Les bits setuid et setgid sont ce qu'on appelle les permissions étendues

Ils permettent de “donner temporairement à un utilisateur” les droits qui sont normalement ceux du propriétaire du fichier.

setuid

Il faut utiliser la commande chmod u+s (ou chmod 4xxx). Un programme exécutant un tel fichier/dossier peut alors s'exécuter sous le nom d'un autre utilisateur. Par exemple, si un fichier appartenant à root est setuidé, tout utilisateur exécutant ce fichier peut effectuer ses tâches avec les permissions associés à root.

setgid

Il faut utiliser la commande chmod g+s (ou chmod 2xxx). C'est le même principe que setgid, mais appliqué au groupe.

sticky bit

Il faut utiliser la commande chmod u+t (ou chmod 1xxx). Pour les dossiers : lorsque ce droit est positionné, il empêche la suppression des fichiers du dossier à tout utilisateur n'étant pas le propriétaire du fichier. Cependant, un utilisateur ayant le droit d'écrire dans le fichier pourra toujours le modifier (et donc, le vider complètement s'il le veut !). Pour les fichiers : le positionnement de ce droit indique que le fichier devra rester en mémoire même après son exécution. Le but était d'éviter de charger/décharger trop souvent les fichiers souvent utilisés et d'améliorer ainsi les performances.

Différencier les droits des fichiers et des dossiers

rwx ou RWX

On peut différencier les droits des fichiers et ceux des dossiers.

Les dossiers devront être +x ( sinon on ne peut cliquer pour les ouvrir), mais pas les fichiers.

chmod gère cela : les lettres r w x en minuscules indiquent des fichiers, et les lettres R W X en majuscule indiquent des dossiers.

Par exemple

   chmod -R o-x+X dir/

Dans ce cas, on accorde à tout le monde le droit d'ouvrir le dossier “dir” et son contenu (/), sauf le droit d'exécuter les fichiers (pour les exécutables).

Liens

droits_sur_les_fichiers_et_les_dossiers.txt · Dernière modification: 2022/10/14 08:18 de wanica
GNU Free Documentation License 1.3
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5