Pouvez-vous expliquer brièvement les principaux concepts et outils de ligne de commande utilisés pour gérer les autorisations de fichiers ?
Réponses
Trop de publicités?Avertissement : La modification des permissions des fichiers et des répertoires est potentiellement dangereuse et peut rendre votre système inutilisable. Lorsqu'il est exécuté récursivement en tant que root sur un mauvais chemin, nous pouvons arriver à un point où nous devrons réinstaller Ubuntu. C'est donc une bonne idée de ne pas modifier les permissions en dehors des répertoires HOME, et l'exécution récursive des commandes en tant que root devrait être évitée dans la mesure du possible.
Autorisations de fichiers
Ubuntu a hérité du concept de permissions d'Unix. Pour les fichiers ou les répertoires, il y a trois tâches que l'on peut autoriser ou refuser :
- r (lecture) le fichier/répertoire peut être ouvert en lecture.
- w (écriture) le 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.
( Traversée 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).
En outre, nous avons trois cas dans lesquels nous accordons une autorisation :
- u (utilisateur) le propriétaire d'un fichier se voit accorder l'une ou l'autre des autorisations.
- g (groupe) le groupe auquel appartient le fichier se voit accorder une autorisation.
- o (autre) tous les autres bénéficient d'une autorisation.
Pour obtenir la combinaison de ces triages, nous utilisons un système binaire dans lequel chaque bit définit une autorisation. Le tableau suivant en est la meilleure illustration
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 (= l'utilisateur) a r ead, w rite, et e x ecute l'autorisation,
b) le groupe du dossier accordé r ead et e x les autorisations d'écrêtage, et
c) tous les autres ne devraient avoir que r ead access.
L'autorisation de fichier résultante sera alors :
u g o
rwx r-x r--
Pour l'obtenir dans les nombres octaux, par exemple pour le 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 additionné pour obtenir le total pour un utilisateur (4+2+1=7), un groupe (4+0+1=5) et un autre (4+0+0=4). Le nombre obtenu est donc le suivant :
u g o
7 5 4
Nous avons maintenant deux options pour modifier les bits de permission avec chmod
:
chmod u+rwx g+rx o+r filename
ou beaucoup plus simplement avec
chmod 751 filename
Les deux commandes auront le même effet.
L'autorisation par défaut d'un fichier nouvellement créé dans notre foyer sera de 664 (-rw-rw-r--).
Si nous voulons que les fichiers soient exécutables en tant que programmes, nous devons modifier cette autorisation.
-
Notez que nous devrons également modifier les permissions du répertoire dans lequel se trouve cet exécutable. Ce n'est que si les deux autorisations du fichier y le bit exécutable du répertoire est activé, nous serons autorisés à exécuter ce fichier en tant que programme.
-
Lorsqu'un fichier est copié chez nous, il perd ses autorisations, qui sont remplacées par nos propres autorisations par défaut (sauf si nous effectuons la copie à l'aide d'options avancées, par exemple une option d'archivage).
-
Notez également que les fichiers peuvent hériter de la permission de leur point de montage, ou de leurs options de montage. Ceci est important lors du montage de lecteurs formatés Windows qui ne supportent pas les permissions Unix.
Utilisateurs et groupes
Nous nous rendons vite compte que ce n'était que la moitié de l'histoire. Il faut aussi trier les affaires. 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 est également le nôtre. Avec ls -l
nous pouvons voir les permissions, la propriété et le groupe comme le montre l'exemple suivant :
-rw-rw-r-- 1 takkat takkat 4096 Sep 12 20:25 test
- Nous ne pouvons modifier les autorisations, les groupes ou la propriété d'un fichier que s'il nous appartient.
Si nous ne sommes pas le propriétaire du fichier, nous recevrons un Permission denied
erreur. Seul l'administrateur peut modifier ce paramètre pour tous les fichiers. C'est pourquoi nous devons utiliser sudo
lors de l'édition des permissions de fichiers qui ne sont pas les nôtres. Il existe deux commandes pour ce faire chown
pour les utilisateurs et les groupes et chgrp
pour les groupes uniquement.
Pour changer la propriété d'un fichier de quelqu'un à un utilisateur takkat
et, éventuellement, le groupe takkat
nous pouvons émettre cette commande :
sudo chown takkat[:takkat] testfile
Pour modifier uniquement 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 un guide plus élaboré recommandé pour une lecture plus approfondie :
- Aide de la communauté Ubuntu : Permissions de fichiers
Vous trouverez également des questions connexes ici :
- Modifier les autorisations et la propriété des dossiers
- Qu'est-ce que "umask" et comment fonctionne-t-il ?
- Comment obtenir les permissions de fichiers en octal à partir de la ligne de commande ?
- Comment utiliser 'chmod' sur une partition NTFS (ou FAT32) ?
- 'chmod u+x' versus 'chmod +x'
- Comment puis-je devenir le propriétaire d'un fichier provenant d'un autre ordinateur / utilisateur ?
Chaque dossier comporte des droits pour trois catégories différentes :
- le propriétaire du fichier,
- le groupe associé au fichier, et
- tous les autres.
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 le CLI, vous pouvez
- changer le propriétaire avec
chown
, par exemplechown guillermooo
- changer le groupe avec
chgrp
, par exemplechgrp root
- modifier les droits avec
chmod
, par exemplechmod u+w filename.ext
(Ajout d'une 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 tapez man [tool]
, par exemple man chmod
.