Comment fonctionnent les autorisations de fichiers?

34

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

    
posée guillermooo 28.07.2010 - 22:05
la source

2 réponses

19

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 l'interface de ligne de commande, vous pouvez

  • changez le propriétaire avec chown , par ex. chown guillermooo
  • changez le groupe avec chgrp , par ex. chgrp root
  • changez les droits avec chmod , par ex. 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 ex. man chmod .

    
réponse donnée ParanoiaPuppy 28.07.2010 - 22:17
la source
26
  

Avertissement: La modification des autorisations des fichiers et des répertoires est potentiellement dangereuse et peut rendre votre système inutilisable. Lorsqu'on l'exécute récursivement en tant que root sur le mauvais chemin, il se peut que nous devions réinstaller Ubuntu. Il est donc 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 pour les fichiers ou les répertoires. Il existe trois tâches que nous pouvons autoriser ou refuser:

  • Le fichier / répertoire r (lecture) peut être ouvert pour un accès en lecture.
  • Le fichier / répertoire w (écriture) peut être ouvert pour un accès en écriture / modification.
  • Le fichier x (exécuter) peut être exécuté en tant que programme / répertoire peut être traversé.

( Traversée , un répertoire signifie essentiellement l’utiliser comme partie d’un nom de chemin. Voir lien ou lien pour plus d’explications.

En outre, nous avons trois cas pour lesquels nous accordons une autorisation:

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

Maintenant, pour obtenir la combinaison de ces éléments triés, nous utilisons un système binaire où chaque bit définit une autorisation. Cela 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 nous voulons par exemple

a) le propriétaire d’un fichier (= user) a r ead, w rite et e x ecute,
b) le groupe de fichiers dispose des autorisations r ead et e x ecute, et
c) tous les autres utilisateurs ne devraient avoir accès à r qu'au

L'autorisation de fichier qui en résulte sera alors:

 u   g   o
rwx r-x r--

Pour obtenir ceci 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 l’utilisateur (4 + 2 + 1 = 7), le groupe (4 + 0 + 1 = 5) et les autres (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 de même.

  

L'autorisation par défaut d'un fichier nouvellement créé dans notre maison sera 664 (-rw-rw-r -).

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

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

  • Lors de la copie d’un fichier chez nous, il perdra les permissions qui seront remplacées par nos propres permissions par défaut (sauf si nous copions à l’aide d’options d’archivage).

  • Notez également que ce fichier peut hériter de son autorisation de son point de montage, resp. options de montage. Ceci est important lorsque vous montez des lecteurs au format Windows qui ne prennent pas en charge les autorisations Unix.

Utilisateurs et groupes

On se rend vite compte que ce n'était que la moitié de l'histoire. Nous devons également trier les effets personnels. Pour ce faire, chaque fichier ou dossier possède un propriétaire défini et une appartenance à un groupe défini.

Chaque fois que nous créons un fichier, nous serons le propriétaire d'un fichier et le groupe de fichiers sera également nous. Avec ls -l , nous 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 seulement autorisés à modifier les autorisations, les groupes ou la propriété d'un fichier qui est notre.
  •   

Si nous ne sommes pas le propriétaire du fichier, nous aurons 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 la permission de fichiers qui ne nous appartiennent pas. Il existe deux commandes intégrées à faire: chown pour les utilisateurs et chgrp pour les groupes.

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

sudo chown takkat testfile

Pour changer le groupe de fichiers en takkat , nous é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 beau guide plus élaboré recommandé pour une lecture ultérieure:

Trouvez également quelques questions connexes ici:

réponse donnée Takkat 19.09.2013 - 22:53
la source

Lire d'autres questions sur les étiquettes