web-dev-qa-db-fra.com

Comment fonctionnent les autorisations de fichiers?

Pouvez-vous expliquer brièvement les principaux concepts et outils de ligne de commande utilisés pour gérer les autorisations de fichiers?

37
guillermooo

Chaque fichier a des droits pour trois catégories différentes:

  • le propriétaire du fichier,
  • le groupe associé au fichier, et
  • tout le monde.

Les droits signifient le droit de lire le fichier, le droit d'écrire dans le fichier ou le droit d'exécuter le fichier dans le cas d'un script ou d'un programme.

Sur la CLI, vous pouvez

  • changez le propriétaire avec chown, par exemple. chown guillermooo
  • changez le groupe avec chgrp, par exemple. chgrp root
  • modifier les droits avec chmod, par exemple chmod u+w filename.ext (Ajoute l'autorisation d'écriture pour le propriétaire du fichier filename.ext)

Si vous souhaitez en savoir plus sur chacun de ces outils, ouvrez un terminal et saisissez man [tool], par exemple. man chmod.

23
ParanoiaPuppy

Avertissement: La modification des autorisations des fichiers et des répertoires est potentiellement dangereuse et peut rendre votre système inutilisable. Lorsqu'il est exécuté de manière récursive en tant que root sur le mauvais chemin, nous pouvons arriver à un point où nous devrons réinstaller Ubuntu. Par conséquent, il est recommandé de ne pas modifier les autorisations en dehors des répertoires HOME et d'exécuter les commandes de manière récursive en tant que root doit être évité autant que possible.

Autorisations de fichier

Ubuntu a hérité du concept d'autorisations d'Unix lorsque, pour les fichiers ou les répertoires, trois tâches peuvent être autorisées ou refusées:

  • r (fichier/répertoire) peut être ouvert pour un accès en lecture.
  • w (écrire) un fichier/répertoire peut être ouvert pour un accès en écriture/édition.
  • x (exécuter) le fichier peut être exécuté comme un programme/répertoire peut être parcouru.

( Traverser un répertoire signifie essentiellement l’utiliser comme partie d’un nom de chemin. Voir https://unix.stackexchange.com/a/13891 ou - https://unix.stackexchange.com/questions/21251 pour plus d'explications.)

De plus, nous avons trois cas pour lesquels nous accordons une permission:

  • u (utilisateur) le propriétaire d'un fichier reçoit l'une des autorisations.
  • g (groupe) le groupe auquel le fichier appartient reçoit une autorisation.
  • o (autre) tous les autres disposent d'une autorisation.

Maintenant, pour obtenir la combinaison de ceux-ci triés, nous utilisons un système binaire où chaque bit définit une permission. Ceci peut être mieux montré dans le tableau suivant

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

Maintenant si on veut par exemple

a) le propriétaire d'un fichier (= utilisateur) a ravant, write et exautorisation d'exécution,
b) le groupe du fichier accepté read et exexécuter les autorisations, et
c) tous les autres ne devraient avoir read accès.

Ensuite, l'autorisation de fichier résultante sera:

 u   g   o
rwx r-x r--

Pour obtenir cela dans les nombres octaux, par exemple. pour la commande chmod ou lorsque nous devons comprendre un message d'erreur, nous devons remplir le tableau ci-dessus comme suit:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

Chaque numéro d'autorisation doit être ajouté pour résumer pour un utilisateur (4 + 2 + 1 = 7), un groupe (4 + 0 + 1 = 5) et un autre (4 + 0 + 0 = 4). Le nombre résultant est alors:

 u   g   o
 7   5   4

Nous avons maintenant deux options pour changer les bits de permission avec chmod:

chmod u+rwx g+rx o+r filename

ou beaucoup plus simple avec

chmod 751 filename

Les deux commandes feront la même chose.

La permission par défaut d'un fichier nouvellement créé à la maison sera 664 (-rw-rw-r--).

Si nous voulons que les fichiers soient exécutables en tant que programmes, nous devrons changer cette permission.

  • Notez que nous devrons également modifier l’autorisation du répertoire dans lequel cet exécutable peut être placé. Seulement si les deux fichiers et du fichier exécutable du répertoire sont définis. nous serons autorisés à exécuter ce fichier en tant que programme.

  • Lors de la copie d'un fichier chez nous, il perdra ses autorisations qui seront remplacées par nos propres autorisations par défaut (sauf si nous copions à l'aide d'options avancées, par exemple une option d'archivage).

  • Notez également que les fichiers peuvent hériter de leur autorisation de leur point de montage, resp. options de montage. Ceci est important lorsque vous montez des lecteurs formatés Windows qui ne prennent pas en charge les autorisations Unix.

Utilisateurs et groupes

Nous nous rendons vite compte que ce n’était que la moitié de l’histoire. Nous devons également trier les biens. Pour ce faire, chaque fichier ou dossier a un propriétaire défini et une appartenance à un groupe défini.

Chaque fois que nous créons un fichier, nous en sommes le propriétaire et le groupe du fichier sera également le nôtre. Avec ls -l, nous pouvons voir les autorisations, la propriété et le groupe tels qu'ils apparaissent dans l'exemple de sortie suivant:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • Nous sommes uniquement autorisés à modifier les autorisations, les groupes ou la propriété d'un fichier qui est le nôtre.

Si nous ne sommes pas le propriétaire du fichier, nous obtiendrons une erreur Permission denied. Seul root peut changer cela pour tous les fichiers. C’est pourquoi nous devons utiliser Sudo lors de la modification de l’autorisation de fichiers qui ne nous appartiennent pas. Il existe deux commandes intégrées pour le faire chown pour les utilisateurs et chgrp pour les groupes.

Pour changer la propriété d'un fichier de personne en takkat, nous pouvons émettre cette commande:

Sudo chown takkat testfile

Pour modifier le groupe d'un fichier en takkat, nous émettons

Sudo chgrp takkat testfile

Lisez les pages de manuel des commandes pour plus de détails et d’options. Il existe également ce guide Nice plus élaboré recommandé pour la lecture ultérieure:

Trouvez également quelques questions connexes ici:

31
Takkat