Unix / Linux - Permission de fichier / modes d'accès

Dans ce chapitre, nous discuterons en détail de l'autorisation de fichier et des modes d'accès sous Unix. La propriété des fichiers est un composant important d'Unix qui fournit une méthode sécurisée de stockage des fichiers. Chaque fichier sous Unix a les attributs suivants -

  • Owner permissions - Les autorisations du propriétaire déterminent les actions que le propriétaire du fichier peut effectuer sur le fichier.

  • Group permissions - Les autorisations du groupe déterminent les actions qu'un utilisateur, qui est membre du groupe auquel appartient un fichier, peut effectuer sur le fichier.

  • Other (world) permissions - Les autorisations pour les autres indiquent quelle action tous les autres utilisateurs peuvent effectuer sur le fichier.

Les indicateurs d'autorisation

Tout en utilisant ls -l commande, il affiche diverses informations relatives à l'autorisation de fichier comme suit -

$ls -l /home/amrood
-rwxr-xr--  1 amrood   users 1024  Nov 2 00:10  myfile
drwxr-xr--- 1 amrood   users 1024  Nov 2 00:10  mydir

Ici, la première colonne représente différents modes d'accès, c'est-à-dire la permission associée à un fichier ou un répertoire.

Les autorisations sont divisées en groupes de trois, et chaque position dans le groupe indique une autorisation spécifique, dans cet ordre: lecture (r), écriture (w), exécution (x) -

  • Les trois premiers caractères (2-4) représentent les autorisations du propriétaire du fichier. Par exemple,-rwxr-xr-- indique que le propriétaire a l'autorisation de lecture (r), d'écriture (w) et d'exécution (x).

  • Le deuxième groupe de trois caractères (5 à 7) comprend les autorisations du groupe auquel appartient le fichier. Par exemple,-rwxr-xr-- indique que le groupe a l'autorisation de lecture (r) et d'exécution (x), mais aucune autorisation d'écriture.

  • Le dernier groupe de trois caractères (8-10) représente les autorisations pour tout le monde. Par exemple,-rwxr-xr-- représente qu'il y a read (r) seule permission.

Modes d'accès aux fichiers

Les permissions d'un fichier sont la première ligne de défense dans la sécurité d'un système Unix. Les éléments de base des autorisations Unix sont lesread, write, et execute autorisations, qui ont été décrites ci-dessous -

Lis

Accorde la capacité de lire, c'est-à-dire d'afficher le contenu du fichier.

Écrire

Accorde la possibilité de modifier ou de supprimer le contenu du fichier.

Exécuter

L'utilisateur avec des autorisations d'exécution peut exécuter un fichier en tant que programme.

Modes d'accès à l'annuaire

Les modes d'accès aux répertoires sont répertoriés et organisés de la même manière que tout autre fichier. Il y a quelques différences qui doivent être mentionnées -

Lis

L'accès à un répertoire signifie que l'utilisateur peut lire le contenu. L'utilisateur peut consulter lefilenames à l'intérieur du répertoire.

Écrire

L'accès signifie que l'utilisateur peut ajouter ou supprimer des fichiers du répertoire.

Exécuter

L'exécution d'un répertoire n'a pas vraiment de sens, alors considérez cela comme une autorisation de passage.

Un utilisateur doit avoir execute accès au bin répertoire afin d'exécuter le ls ou la cd commander.

Modification des autorisations

Pour modifier le fichier ou les autorisations de répertoire, vous utilisez le chmod(changer de mode) commande. Il existe deux façons d'utiliser chmod - le mode symbolique et le mode absolu.

Utilisation de chmod en mode symbolique

Le moyen le plus simple pour un débutant de modifier les autorisations de fichier ou de répertoire est d'utiliser le mode symbolique. Avec les autorisations symboliques, vous pouvez ajouter, supprimer ou spécifier le jeu d'autorisations souhaité à l'aide des opérateurs du tableau suivant.

N ° Sr. Opérateur Chmod et description
1

+

Ajoute les autorisations désignées à un fichier ou un répertoire.

2

-

Supprime la ou les autorisations désignées d'un fichier ou d'un répertoire.

3

=

Définit la ou les autorisations désignées.

Voici un exemple utilisant testfile. Fonctionnementls -1 sur le fichier de test montre que les autorisations du fichier sont les suivantes -

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Puis chaque exemple chmod La commande du tableau précédent est exécutée sur le fichier de test, suivie de ls –l, afin que vous puissiez voir les changements d'autorisation -

$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

Voici comment vous pouvez combiner ces commandes sur une seule ligne -

$chmod o+wx,u-x,g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

Utilisation de chmod avec des autorisations absolues

La deuxième façon de modifier les autorisations avec la commande chmod consiste à utiliser un nombre pour spécifier chaque ensemble d'autorisations pour le fichier.

Chaque autorisation se voit attribuer une valeur, comme le montre le tableau suivant, et le total de chaque ensemble d'autorisations fournit un numéro pour cet ensemble.

Nombre Représentation de la permission octale Réf
0 Aucune autorisation ---
1 Exécuter l'autorisation --X
2 Autorisation d'écriture -w-
3 Autorisation d'exécution et d'écriture: 1 (exécution) + 2 (écriture) = 3 -wx
4 Lire l'autorisation r--
5 Autorisation de lecture et d'exécution: 4 (lecture) + 1 (exécution) = 5 rx
6 Autorisation de lecture et d'écriture: 4 (lecture) + 2 (écriture) = 6 rw-
7 Toutes les autorisations: 4 (lecture) + 2 (écriture) + 1 (exécution) = 7 rwx

Voici un exemple utilisant le fichier test. Fonctionnementls -1 sur le fichier de test montre que les autorisations du fichier sont les suivantes -

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Puis chaque exemple chmod La commande du tableau précédent est exécutée sur le fichier de test, suivie de ls –l, afin que vous puissiez voir les changements d'autorisation -

$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 amrood   users 1024  Nov 2 00:10  testfile

Changer de propriétaire et de groupe

Lors de la création d'un compte sous Unix, il attribue un owner ID et un group IDà chaque utilisateur. Toutes les autorisations mentionnées ci-dessus sont également attribuées en fonction du propriétaire et des groupes.

Deux commandes sont disponibles pour changer le propriétaire et le groupe de fichiers -

  • chown - Le chown commande signifie "change owner" et est utilisé pour changer le propriétaire d'un fichier.

  • chgrp - Le chgrp commande signifie "change group" et est utilisé pour changer le groupe d'un fichier.

Changement de propriétaire

le chownLa commande change la propriété d'un fichier. La syntaxe de base est la suivante -

$ chown user filelist

La valeur de l'utilisateur peut être soit le name of a user sur le système ou le user id (uid) d'un utilisateur sur le système.

L'exemple suivant vous aidera à comprendre le concept -

$ chown amrood testfile
$

Change le propriétaire du fichier donné en utilisateur amrood.

NOTE - Le super utilisateur, root, a la capacité illimitée de changer la propriété de n'importe quel fichier, mais les utilisateurs normaux peuvent changer la propriété des seuls fichiers qu'ils possèdent.

Changer la propriété du groupe

le chgrpLa commande modifie la propriété de groupe d'un fichier. La syntaxe de base est la suivante -

$ chgrp group filelist

La valeur du groupe peut être la name of a group sur le système ou the group ID (GID) d'un groupe sur le système.

L'exemple suivant vous aide à comprendre le concept -

$ chgrp special testfile
$

Change le groupe du fichier donné en special groupe.

Autorisation de fichiers SUID et SGID

Souvent, lorsqu'une commande est exécutée, elle devra être exécutée avec des privilèges spéciaux afin d'accomplir sa tâche.

Par exemple, lorsque vous modifiez votre mot de passe avec le passwd commande, votre nouveau mot de passe est stocké dans le fichier /etc/shadow.

En tant qu'utilisateur régulier, vous n'avez pas read ou writeaccéder à ce fichier pour des raisons de sécurité, mais lorsque vous modifiez votre mot de passe, vous devez avoir l'autorisation d'écriture sur ce fichier. Cela signifie que lepasswd le programme doit vous donner des autorisations supplémentaires pour que vous puissiez écrire dans le fichier /etc/shadow.

Des autorisations supplémentaires sont accordées aux programmes via un mécanisme connu sous le nom de Set User ID (SUID) et Set Group ID (SGID) morceaux.

Lorsque vous exécutez un programme dont le bit SUID est activé, vous héritez des autorisations du propriétaire de ce programme. Les programmes qui n'ont pas le bit SUID défini sont exécutés avec les autorisations de l'utilisateur qui a démarré le programme.

C'est également le cas avec SGID. Normalement, les programmes s'exécutent avec les autorisations de votre groupe, mais à la place, votre groupe sera modifié uniquement pour ce programme par le propriétaire du groupe du programme.

Les bits SUID et SGID apparaîtront sous forme de lettre "s"si l'autorisation est disponible. Le SUID"s" bit sera situé dans les bits d'autorisation où les propriétaires execute la permission réside normalement.

Par exemple, la commande -

$ ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

Montre que le bit SUID est défini et que la commande appartient à la racine. Une lettre majusculeS en position d'exécution au lieu d'une minuscule s indique que le bit d'exécution n'est pas défini.

Si le sticky bit est activé sur le répertoire, les fichiers ne peuvent être supprimés que si vous êtes l'un des utilisateurs suivants -

  • Le propriétaire du répertoire collant
  • Le propriétaire du fichier en cours de suppression
  • Le super utilisateur, root

Pour définir les bits SUID et SGID pour n'importe quel répertoire, essayez la commande suivante -

$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$