Comment fonctionnent les autorisations de fichiers?

37

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

guillermooo
la source

Réponses:

23

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

  • changer le propriétaire avec chown, par exemplechown guillermooo
  • changer le groupe avec chgrp, par exemplechgrp root
  • changer les droits avec chmod, par exemple chmod u+w filename.ext(Ajoute une permission 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 tapez man [tool], par exemple man chmod.

ParanoiaPuppy
la source
8
C'est un peu plus compliqué avec les répertoires - une autorisation d'exécution est requise pour accéder au contenu du répertoire. Cela signifie (par exemple) que pour lire ou écrire un fichier, vous devez avoir un accès direct au répertoire le contenant ainsi que les autorisations appropriées sur le fichier lui-même. Cela ne vient presque jamais, mais c'est pourquoi il est mal documenté / compris!
Adamnfish
Huh. Tu as raison. Je le modifierai demain, quand je serai moins fatigué.
ParanoiaPuppy
1
chown guillermooocela ne devrait pas être chown guillermooo filename?
Zeynel
32

Avertissement: la modification des autorisations des fichiers et des répertoires est potentiellement dangereuse et pourrait 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:

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

( Parcourir un répertoire signifie essentiellement l’utiliser dans le cadre d’un nom de chemin. Voir https://unix.stackexchange.com/a/13891 ou https://unix.stackexchange.com/questions/21251 pour plus d’informations.)

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

  • u (utilisateur) le propriétaire d’un fichier se voit accorder l’une quelconque des autorisations.
  • g (groupe) le groupe auquel le fichier appartient reçoit une permission.
  • o (autre) tous les autres ont une permission.

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 r ead, w rite, et e x ecute permission,
b) le groupe de fichier accordé r ead et e x autorisations ecute, et
c) tous les autres ne devraient avoir r accès ead.

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 chmodcommande 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 d'autorisation 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 se trouver. Seulement si le bit exécutable du fichier et celui 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 -lnous pouvons voir les autorisations, la propriété et le groupe, comme le montre 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 aurons une Permission deniederreur. Seul root peut changer cela pour tous les fichiers. C'est pourquoi nous devons utiliser sudolors de l'édition de l'autorisation de fichiers qui ne sont pas les nôtres. Il existe deux commandes intégrées pour le faire chownpour les utilisateurs et chgrppour les groupes.

Pour changer la propriété d'un fichier de n'importe qui, takkatnous pouvons émettre cette commande:

sudo chown takkat testfile

Pour changer le groupe d'un fichier en takkatnous émettons

sudo chgrp takkat testfile

Lisez les pages de manuel des commandes pour plus de détails et d’options. Il y a aussi ce joli guide plus élaboré recommandé pour la lecture ultérieure:

Trouvez également quelques questions connexes ici:

Takkat
la source