|
|
Page précédente : Permissions II Permissions IIISommaire :
Complément sur les permissions pour un répertoireLes permissions 'normales'Nous avons indiqué sommairement à la page précédente que les permissions pour un répertoire ont une interprétation un peu différente de celle des permissions pour un fichier. Précisons un peu.
Index de la section - Index de la Base de Connaissances Le bit setGIDLe bit setGID (le 's' ou parfois le 'S' qui dans la sortie de 'ls -l' occupe la position du bit d'exécution du groupe propriétaire) a une interprétation très particulière pour un répertoire. S'il est positionné cela implique que tout fichier créé dans le répertoire aura automatiquement le même groupe propriétaire que le répertoire lui-même. Index de la section - Index de la Base de Connaissances Le bit stickyCe bit est représenté par un 't' (ou parfois par un 'T') qui occupe la position du bit d'exécution des 'autres utilisateurs'. drwxrwxrwt Permissions en majuscules ou en minuscules ?Etant donné que dans la représentation usuelle les bits setUID, setGID et sticky occupent la position du bit d'exécution, comment savoir si ce dernier est positionné ? La réponse est simple et obéit à la convention suivante :
Les permissions attribuées lors de la création d'un fichier : le masque de permissions ou "umask"Au point où vous en êtes maintenant vous savez que tout fichier Linux possède un jeu de permissions pour son propriétaire, pour son groupe et pour l'ensemble des autres utilisateurs. Qu'en est-il donc lorsque je crée moi-même un fichier, pourriez-vous alors vous demander… et lorsque 'root' crée un fichier, qu'en est-il ? Vous savez que le propriétaire du fichier est toujours le créateur du fichier et que le groupe propriétaire du fichier sera le groupe (principal) de cet utilisateur, certes, mais les permissions, comment sont-elles attribuées ? Eh bien, le système doit posséder, pour chaque utilisateur, un ensemble de permissions par défaut, qui sont attribuées aux fichiers créés par cet utilisateur. C'est ce que définit le "masque de permissions" encore appelé "umask". Pour savoir quelles sont ces permissions pour un utilisateur donné, connectez-vous sous son identité et lancez la commande 'umask -S'. L'option '-S' provoque un affichage non numérique du type de celui que vous avez appris à interpréter et à utiliser dans la section consacrée à chmod, où 'u' représente le propriétaire du fichier (son utilisateur comme on dit aussi parfois), 'g' son groupe propriétaire et 'o' les autres utilisateurs du système. Vous pourrez donc obtenir quelque chose comme celà : umask -S u=rwx,g=rx,o=rx ce qui signifie que le propriétaire du nouveau fichier aura les droits de lecture-écriture-exécution sur le fichier et que tous les autres utilisateurs auront les droits de lecture-exécution. Sur mon système ce sont là les valeurs de 'umask' pour moi-même, et aussi pour 'root'. Si maintenant vous lancez, dans le même environnement, la commande 'umask' sans l'option '-S', vous obtiendrez ceci : umask 0022 hum… bizarre… Vous obtenez en fait un nombre octal. C'est ce qu'indique le '0' initial, qui ne varie pas. Les trois autres chiffres correspondent respectivement aux permissions du propriétaire, du groupe et des autres, comme d'habitude… Mais d'une façon un peu étrange : pour retrouver les valeurs numériques qui représentent les permissions lorsqu'on utilise chmod (si vous avez oublié cela commencez par réviser un peu...), il faut soustraire de 7 le chiffre de l'umask. Comment ? Que dites-vous ? Voyons cela de plus près. Examinons d'abord le cas du propriétaire du fichier. Dans l'umask il a pour valeur '0' (c'est le premier chiffre après le '0' initial, vous vous rappelez ?). Or '7-0=7' n'est-ce pas? Donc, les permissions du propriétaire sont représentées par '7' dans le système chmod et vous savez que '7' représente les permissions maximales : 'rwx'. Le propriétaire a donc bien les droits de lecture, écriture et exécution. La commande 'umask' permet aussi de changer les permissions par défaut. Utilisez cela avec précaution et seulement si vous savez vraiment ce que vous faites, car en principe les valeurs par défaut choisies par votre distribution devraient être satisfaisantes. Si vous faites : umask 0002 les permissions par défaut donneront désormais, pour les fichiers qui seront créés, les droits de lecture-écriture-exécution (7-0=7) au propriétaire mais aussi, cette fois, au groupe, tandis que les autres utilisateurs auront seulement les droits de lecture et écriture (7-2=5). Des permissions pour l'ensemble des utilisateurs d'un système peuvent ainsi être définies dans le fichier de configuration du shell '/etc/bashrc' (regardez donc si vous trouvez dans le vôtre des lignes qui contiennent 'umask', mais attention ne modifiez pas cela inconsidérément, si vous mettiez cet 'umask' à la valeur 777 vous risqueriez de ne plus pouvoir vous reconnecter...). Notez enfin qu'il est aussi possible d'attribuer un 'umask' à une partition entière par le biais de l'entrée qui concerne cette partition dans le fichier '/etc/fstab', voir là-dessus Lea-Linux - Montage de disques : /etc/fstab. Nous ne sommes pas encore tout à fait au bout de nos peines, à vrai dire. Comme vous le savez la permission d'exécution n'a de sens et d'intérêt que pour un fichier dont le contenu est… exécutable, elle n'a pas de sens pour des fichiers de données brutes. D'autre part, il n'est pas toujours souhaitable qu'un fichier exécutable le soit par défaut, pour des raisons de sécurité. Pour ces raisons, le système, le plus souvent, n'attribue pas la permission d'exécution même quand elle est prévue par l'umask… C'est pourquoi on vous recommande généralement, dans les documentations, de rendre exécutable un fichier de script que vous venez de créer. Même si votre 'umask' donne 'théoriquement' le bit d'exécution au propriétaire du fichier, dans la pratique, il n'est le plus souvent pas attribué à la création du fichier… Vous pourrez vérifier tout cela pour votre cas personnel en créant différentes sortes de fichiers et en examinant les permissions qui leur auront été attribuées. Pour terminer notez que l'umask a parfois une incidence sur la façon dont la commande 'chmod' est exécutée. Il est en effet possible de lancer cette commande sans préciser explicitement à quels types d'utilisateurs les permissions mentionnées s'appliqueront. Par exemple on peut faire ceci : chmod +w choin Dans un tel cas la permission d'écriture (w) sera attribuée aux utilisateurs pour lesquels l'umask prévoit cette permission. Autrement dit si vous appliquez cette commande à un fichier 'choin' qui possède les permissions '-r-xr-xr-x' et si votre umask est u=rwx,g=rx,o=rx. Les permissions de 'choin' après exécution de 'chmod' deviendront ceci : ls -l choin -rwxr-xr-x le droit d'écriture n'est attribué qu'au propriétaire, seul droit d'écriture prévu par l'umask. Notez que vous pouvez attribuer ce droit à d'autres utilisateurs, il vous suffira d'utiliser une version plus 'explicite' de 'chmod', par exemple la lettre 'a' vous permettrait d'accorder ce droit à tous les utilisateurs sans que l'umask joue alors le moindre rôle : chmod a+w choin ls -l choin -rwxrwxrwx Le choix du masque de permissions pour 'root' et pour les simples utilisateurs fait partie des réglages de sécurité du système (voir la commande "draksec", onglet "options système"). Index de la section - Index de la Base de Connaissances Autres ressourcesMinet : Les droits d'accèsLea-Linux : Les permissions sur les fichiers Changement des permissions : chmod, chown et chgrp (vous trouverez notamment dans ce dernier document une définition des notions de EUID et RUID) Index de la section - Index de la Base de Connaissances Page suivante : Changer permissions et propriétaires par l'interface graphique Auteur: ptyxs (novembre 2005) Legal: This page is covered by the GNU Free Documentation License . Standard disclaimers of warranty apply. Copyright LSTB and Mandrakesoft. |