Guido Socher A propos de l'auteur : Il adore Linux car c'est un syst�me libre et c'est aussi un plaisir de travailler avec des personnes de la communaut� linux partout dans le monde. Il passe son temps libre avec sa petite amie, �coute la BBC World Service radio, pratique le cyclisme, et utilise avec plaisir Linux.
Contents: |
Les droits d'acc�s des fichiers
R�sum�:
Cet article est divise en deux partie:
Les permissions de base des acc�s fichiersLinux est un syst�me mutli utilisateur qui permet de g�rer diff�rentes permissions d'acc�s aux fichiers. Chaque utilisateur a un identifiant, un nombre unique qui l'identifie. Les utilisateurs appartiennent �galement � un ou plusieurs groupes. Les groupes peuvent �tre employ�s pour limiter l'acc�s � un certain nombre de personnes. C'est un bon moyen pour rendre plus facile le travail avec un certain nombre de personnes en �quipe. Pour v�rifier votre identification de l'utilisateur et voir le groupe(s) auquel vous appartenez, tapez la commande ID:
Les permissions d'acc�s pour un fichier peuvent �tre positionn�s par propri�taire, groupe, et pour les autres sur la base de permissions en lecture (r), �criture (w) et �xecution (x). Vous pouvez utiliser la commande ls -l pour voir ces permissions.
Le fichier /usr/bin/id appartient � l'utilisateur root et fait parti du groupe appel� root. Le -rwxr-xr-x montre les permissions d'acc�s au fichier . Ce fichier a les droits en lecture , �criture ,et en ex�cution pour le propri�taire. Pour le groupe et les autres , ce fichier est lisible et ex�cutable. Vous pouvez imaginer que les permissions sont un champ de bit avec 3 bits pour le propri�taire, le groupe, et les autres. Ce r-x correspond � 101 en binaire ou 4+1=5 en d�cimal. Le r-bits corresponds � la d�cimale 4 , le w_bit correspond � la d�cimale 2 et le x-bit correspond � la d�cimale 1.
La commande chmod peut �tre utilis�e pour changer les permissions. Pour des raisons de securit� seulement le superutilisateur root ou le propri�taire du fichier peut changer les permissions. la commande chmod prend aussi bien en argument une repr�sentation d�cimal qu'une repr�sentation symbolique pour d�crire les droit d'acc�s. La repr�sentation symbolique est [ugoa][+-][rwx]. C'est l'une de ces lettres u (propri�taire du fichier ), g ( groupe ) , o ( les autres ), a ( tout le monde =u+g+o) suivi de + ou - permet d'ajouter ou de supprimer les permissions et la forme symbolique des permissions est de la forme r ( read = lecture ) w ( write l'�criture ) x ( ex�cution ). Pour donner au fichier "file.txt" les droits d'�criture pour tout le monde , tapez:
chmod 644 file.txt positionnera les permissions "normal" avec pour le propri�taire lecture+�criture et seulement lecture pour tout le monde. Changer de r�pertoire ( avec la commande cd ) est �quivalent � ex�cuter le r�pertoire. Les permissions "Normal" pour le r�pertoire sont 755 et non 644:
Le umask d�fini les permissions par d�faut . Les permissions par d�faut sont mises lorsqu'un nouveau fichier ( ou r�pertoire ) est cr�e. Comme argument, cette commande prend une repr�sentation d�cimale que vous n'êtes pas oblig� de taper . Il peut prendre comme argument ces bits dans une repr�sentation d�cimale que vous ne voulez pas avoir � mettre. umask 022 est un bon choix. Avec les permissions 022 tout le monde peut lire, vos fichiers et "cd" dans vos r�pertoires mais c'est vous qui pouvez uniquement modifier les fichiers. Pour afficher la valeur du umask courant, tapez uniquement umask sans arguments. Voici un exemple de l'utilisation de umask et chmod:
Remarquez que le fichier script doit �tre lisible et ex�cutable alors que les binaires classiques ont seulement besoin d'�tre ex�cutables. Ceci est du au fait que le script doit �tre lu par un interpr�teur ( l'interpr�teur de commandes ). L'ex�cution du script devrait afficher: hello alice Ce fichier ( ./myscript ) avais les permissions suivantes: -rwxr-xr-x T-bit, SUID and SGIDApres avoir travaill� sous Linux depuis un certain moment , vous avez d�couvert probablement qu'il y a plus dans les droits d'acc�s aux fichiers que "rwx". Explorez un peu votre systeme de fichiers et vous allez voir des "s" et "t":
Que veulent dire les bits "s" et "t"? Le champ de bit d�finissant les permissions d'acc�s a en r�alit� une longueur de 4 * 3 bits . Le chmod 755 est en fait un raccourci pour chmod 0755. Le t-bitLe t-bit (parfois appell� "sticky bit") est seulement utilis� avec les r�pertoires.Il est utilis� avec le r�pertoire /tmp comme vous pouvez le voir en haut. Normalement ( sans le t-bit de positionn� sur le r�pertoire ) les fichiers peuvent être effac�s si le repertoire dans lequel ce trouve les fichiers poss�de les droits d'�criture pour la personne voulant effacer les fichiers. Ainsi si vous avez un r�pertoire ou n'importe qui peut venir mettre des fichier alors n'importe qui peut venir les effacer aussi. Le t-bit change cette r�gle. Avec le t-bit positionn� seul le propri�taire du fichier ou le propri�taire du r�pertoire a le droit d'effacer les fichiers. Le t-bit peut �tre positionn� par la commande chmod a+tw ou 1777. Voici un exemple :
S-bit positionn� pour l'utilisateurLes processus sous Linux s'�xecute avec l'identifiant de l'utilisateur (user-ID). Ceci leur donne acc�s aux ressources ( fichier etc ...) auquelles l'utilisateur a acc�s. L'identifiant effectif est celui qui d�termine les acc�s aux fichiers. Sauvegardez le script suivant dans un fichier ayant pour nom idinfo et rendez le ex�cutable (chmod 755 idinfo).
Lorsque vous ex�cutez le script vous verrez que le processus qui tourne prend votre identifiant et l'identifiant de votre groupe: effective user-ID: alice real user-ID: alice group ID: users Quand Tux �xecute votre programme idinfo alors il a une sortie �quivalente affichant que le processus tourne maintenant avec l'identifiant de Tux. La sortie du programme d�pend uniquement de la personne qui ex�cute le programme et non pas du propri�taire de ce dernier. Pour des raisons de s�curite le s-bit fonctionne uniquement pour des fichiers binaires ( code compile ) et non pas pour les scripts ( l'exception est les scripts perl ). Essayons de cr�er un programme C qui va apeller votre programme idinfo:
Compilez le programme avec "gcc -o suidtest -Wall suidtest.c" et et positionner le bit-s (SUID) de l'utilisateur:
Executez le! Que se passe t-il? Executez le � partir d'un compte d'un autre utilisateur! Le fichier suidtest appartient � alice et � le s-bit de positionn� ou normalement il y a un x pour le propri�taire du fichier. Ceci fait que le fichier est �xecut� avec l'UID effectif de l'utilisateur qui poss�de le fichier au lieu de celui qui l'�x�cute. Si Tux lance le programme alors cela devrait se passer comme ci-dessous:
Comme vous pouvez le voir c'est une fonctionnalit� tr�s puissante dans le cas ou root poss�de un fichier avec le s-bit positionn�. N'importe quel utilisateur peut faire grace � ce fichier ce que normalement root est le seul � pouvoir r�aliser. Quelques mots sur la s�curite. Quand vous �crivez un programme avec le s-bit, faites attention � ce que ce programme fasse uniquement ce que vous voulez. Impl�mentez toujours les chemins en dur dans le programme. Ne prennez pas en compte les variables ou fonctions se r�f�ren�ant aux variables d'environnements. Ne croyez jamais les donn�e de l'utilisateur ( fichier de configuration , arguments de la ligne de commande....). V�rifiez les donn�es des utilisateurs octet par octet pour savoir si elles sont valides. Losque un programme SUID appartient a root alors l'utilisateur effectif et l'utilisateur reel peuvent être positionn�s ( avec la fonctions setreuid() ). Les programmes ayant le Set-UID sont souvent utilis�s par "root"pour donner un acc�s aux utilisateurs classiques chose que seul "root" peut faire. Comme root vous pouvez modifier le suidtest.c pour permettre � n'importe quel utilisateur de lancer le script ppp-on/ppp-off sur votre machine. S-bit positionn� pour le groupLes fichiers �xecutables qui ont le s-bit de positionn� sur le groupe, s'ex�cutent sous l'identifiant du groupe du propri�taire. C'est tr�s proche de l'utilisation du s-bit pour l'utilisateur que nous avons vu dans le chapitre pr�c�dent. Quand le bit-s est positionn� pour le groupe d'un r�pertoire, alors le groupe est d�termin� pour chaque fichier qui est cr�� dans ce r�pertoire. Alice appartient � 2 groupes:
Normalement les fichiers sont cr��s pour elle avec le group "users". Mais si un r�pertoire est cr�� avec le group "disk" et que le bit-s du groupe est positionn�, alors tous les fichiers qu'Alice cr�e on aussi l'identificateur de groupe (GID) "disk".
|