les systèmes de fichiers utilisent des autorisations et des attributs pour réguler le niveau d’interaction que les processus système peuvent avoir avec les fichiers et les répertoires.
les autorisations d’Affichage
Utilisez la commande ls du -l
option pour afficher les autorisations (ou en mode fichier) pour le contenu d’un répertoire, par exemple:
$ ls -l /chemin/vers/répertoire
La première colonne est ce à quoi nous devons nous concentrer sur., Taking an example value of drwxrwxrwx+
, the meaning of each character is explained in the following tables:
d |
rwx |
rwx |
rwx |
+ |
The file type, technically not part of its permissions. See info ls -n "What information is listed" for an explanation of the possible values., |
les autorisations dont dispose le propriétaire Sur le fichier, expliquées ci-dessous. | les autorisations dont dispose le groupe sur le fichier, expliquées ci-dessous. | Les autorisations que tous les autres utilisateurs sur le fichier, expliqué ci-dessous. | un caractère unique qui spécifie si une autre méthode d’accès s’applique au fichier. Lorsque ce caractère est un espace, il n’y a pas de méthode d’accès alternative. . caractère indique un fichier avec un contexte de sécurité, mais aucune autre méthode d’accès., Un fichier avec toute autre combinaison de méthodes d’accès alternatives est marqué d’un caractère + , par exemple dans le cas de listes de contrôle d’accès., |
Chacun des trois autorisation triades (rwx
dans l’exemple ci-dessus) peut être composé de caractères suivants:
Caractère | Effet sur les fichiers | Effet sur les répertoires | |
---|---|---|---|
autorisation de Lecture (premier caractère) | - |
Le fichier ne peut pas être lu., | le contenu du répertoire ne peut pas être affiché. |
r |
Le fichier peut être lu. | Le contenu du répertoire peut être montré. | |
autorisation d’Écriture (deuxième personnage) | - |
Le fichier ne peut pas être modifié. | Le contenu du répertoire ne peut pas être modifié. |
w |
Le fichier peut être modifié., | le contenu du répertoire peut être modifié (créer de nouveaux fichiers ou dossiers; renommer ou supprimer des fichiers ou dossiers existants); nécessite que l’autorisation execute soit également définie, sinon cette autorisation n’a aucun effet. | |
autorisation d’Exécution (troisième personnage) | - |
Le fichier ne peut pas être exécutée. | le répertoire n’est pas accessible avec cd. |
x |
Le fichier peut être exécuté., | le répertoire est accessible avec cd; c’est le seul bit d’autorisation qui en pratique peut être considéré comme « hérité » des répertoires ancêtres, en fait si un dossier dans le chemin n’a pas lex bit set, le fichier ou le dossier final ne peut pas être consulté non plus, quelles que soient ses autorisations; voir path_resolution(7) pour plus d’informations., |
|
s |
Le bit setuid, une fois trouvé, l’utilisateur triade; le bit setgid lorsqu’elle se trouve dans le groupe de la triade; il n’est pas trouvé dans les autres triade; il implique également que x est réglé. |
||
S |
Même s , mais x n’est pas définie; rare sur des fichiers normaux, et inutile sur les dossiers., |
||
t |
The sticky bit; it can only be found in the others triad; it also implies that x is set. |
||
T |
Same as t , but x is not set; rare on regular files, and useless on folders. |
See info Coreutils -n "Mode Structure"
and chmod(1) for more details.,
namei -l path
.Exemples
voyons quelques exemples pour clarifier les choses:
drwx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie a un accès complet au répertoire Documents. Il peut lister, créer des fichiers et renommer, supprimer n’importe quel fichier dans les Documents, quelles que soient les autorisations de fichier. Sa capacité à accéder à un fichier dépend de l’autorisation de fichier.
dr-x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie a un accès complet, sauf qu’il ne peut pas créer, renommer, supprimer un fichier., Il peut lister les fichiers et (si l’Autorisation du fichier le permet) peut accéder à un fichier existant dans Documents.
d-wx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie ne peut pas faire » ls » dans les Documents, mais s’il connaît le nom d’un fichier existant, il peut lister, renommer, supprimer ou (si l’Autorisation du fichier lui permet) y accéder. Aussi, il est capable de créer de nouveaux fichiers.
d--x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie n’est capable d’accéder (si l’autorisation de file lui permet) à ces fichiers dans les Documents qu’il connaît. Il ne peut pas lister les fichiers déjà existants ou créer, renommer, supprimer l’un d’eux.,
Vous devez garder à l’esprit que nous élaborons sur les autorisations de répertoire et cela n’a rien à voir avec les autorisations de fichier individuelles. Lorsque vous créez un nouveau fichier, c’est le répertoire qui change. C’est pourquoi vous avez besoin d’une autorisation d’écriture dans le répertoire.
regardons un autre exemple, cette fois d’un fichier, pas un répertoire:
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Ici, nous pouvons voir la première lettre n’est pas d
mais -
. Nous savons donc que c’est un fichier, pas un répertoire., Ensuite, les autorisations du propriétaire sont rw-
donc le propriétaire a la capacité de lire et d’écrire mais pas d’exécuter. Cela peut sembler étrange que le propriétaire n’ait pas les trois autorisations, mais l’autorisation x
n’est pas nécessaire car il s’agit d’un fichier texte/données, à lire par un éditeur de texte tel que Gedit, EMACS ou un logiciel comme R, et non un exécutable à part entière (s’il contenait quelque chose comme du code, Les autorisations du groupe sont définies sur r--
, de sorte que le groupe a la possibilité de lire le fichier mais pas de l’écrire/le modifier de quelque manière que ce soit — c’est essentiellement comme définir quelque chose en lecture seule. Nous pouvons voir que les mêmes autorisations s’appliquent également à tout le monde.
la Modification des autorisations
chmod est une commande Linux et d’autres systèmes de type Unix qui permet de modifier les autorisations (ou mode d’accès) d’un fichier ou d’un répertoire.
méthode de Texte
Pour modifier les autorisations ou le mode d’accès d’un fichier, utilisez la commande chmod dans un terminal., Voici la structure générale de la commande:
chmod who=permissions filename
oùwho
est une plage de lettres, chacune indiquant qui reçoit l’autorisation. Ils sont comme suit:
-
u
: l’utilisateur propriétaire du fichier. -
g
: le groupe d’utilisateurs que le fichier appartient. -
o
: les autres utilisateurs, c’est à dire tout le monde. -
a
: tous les ci-dessus; l’utiliser au lieu de taperugo
.,
Les permissions d’accès sont les mêmes que ceux évoqués dans #l’Affichage des autorisations (r
, w
et x
).
regardez maintenant quelques exemples utilisant cette commande., Supposons que vous soyez devenu très protecteur du répertoire Documents et que vous vouliez refuser à tout le monde sauf à vous-même, les autorisations de lecture, d’écriture et d’exécution (ou dans ce cas rechercher/regarder):
avant: drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents
$ chmod g= Documents$ chmod o= Documents
Après: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
ici, parce que vous voulez refuser les autorisations, vous ne mettez aucune lettre après le =
où les autorisations seraient entrées. Maintenant, vous pouvez voir que les autorisations du propriétaire sont rwx
et tous les autres autorisations sont -
.,
Cela peut être restauré avec:
Avant: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
$ chmod g=rx Documents$ chmod o=rx Documents
Après: drwxr-xr-x 6 archie users 4096 Jul 6 17:32 Documents
Dans l’exemple suivant, vous souhaitez accorder des autorisations de lecture et exécution pour le groupe et les autres utilisateurs, si vous mettez les lettres pour les autorisations (r
et x
) après la balise =
, sans espaces.
Vous pouvez simplifier cela pour mettre plus d’une lettrewho
dans la même commande, E.,g:
$ chmod go=rx Documents
who
lettres ou les lettres de demande d’autorisation dans un chmod
commande: vous pourriez avoir chmod go=rx file
ou chmod og=xr file
. Il est tout de même.,ider un deuxième exemple, supposons que vous souhaitez modifier un foobar
le fichier en lecture et en écriture, et d’autres utilisateurs dans le groupe users
qui peuvent être des collègues de travail sur le foobar
, peuvent également lire et écrire, mais que d’autres utilisateurs ne peut lire:
Avant: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=rw foobar
Après: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
C’est exactement comme le premier exemple, mais avec un fichier, pas un répertoire, et de vous accorder la permission d’écriture (juste pour donner un exemple de l’octroi de toute autorisation).,
méthode de Texte raccourcis
La commande chmod permet d’ajouter et de soustraire des autorisations à partir d’un ensemble existant à l’aide de +
ou -
au lieu de =
. Ceci est différent des commandes ci-dessus, qui, essentiellement ré-écrire les autorisations (par exemple pour changer une autorisation d’ r--
de rw-
, vous devez toujours inclure r
ainsi que w
après le =
dans la commande chmod invocation., Si vous avez manqué r
, cela supprimerait l’autorisation r
car ils sont réécrits avec le =
. À l’aide de +
et -
évite cela en ajoutant ou en enlevant de l’ensemble des autorisations).,>Avant: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod a-w foobar
Après: -r--r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Un raccourci différent est le mode spécial X
: ce n’est pas un mode de fichier réel, mais il est souvent utilisé conjointement avec l’option -R
pour définir le bit exécutable uniquement pour les répertoires, et le laisser inchangé pour les fichiers réguliers, par exemple:
$ chmod -R a+rX ./data/
autorisations de copie
Il est possible de dire à chmod de copier les autorisations d’une classe, par exemple le propriétaire, et de donner ces mêmes autorisations au groupe ou même à tous., Pour ce faire, au lieu de mettre r
, w
ou x
après le =
, mettez-en un autre qui lettre. e.g:
Avant: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=u foobar
Après: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Cette commande essentiellement se traduit par « modifier les autorisations de groupe (g=
), à être le même que le propriétaire de l’utilisateur (=u
). Notez que vous ne pouvez pas copier un ensemble d’autorisations ni en accorder de nouvelles, par exemple,:
$ chmod g=wu foobar
Dans ce cas chmod jeter une erreur.
méthode Numérique
chmod pouvez également définir des autorisations à l’aide de numéros.
L’utilisation de nombres est une autre méthode qui vous permet de modifier les autorisations pour les trois propriétaires, groupes et autres en même temps, ainsi que les bits setuid, setgid et sticky. Cette structure de base du code est:
$ chmod xxx filename
Où xxx
est un nombre à 3 chiffres où chaque chiffre peut être n’importe quoi allant de 0 à 7., Le premier chiffre s’applique aux autorisations de propriétaire, le deuxième chiffre s’applique aux autorisations pour le groupe, et le troisième chiffre s’applique aux autorisations pour tous les autres.
dans cette notation numérique, les valeurs r
, w
Et x
ont leur propre valeur numérique:
r=4w=2x=1
pour obtenir un nombre à 3 chiffres vous devez considérer les autorisations que vous souhaitez que le propriétaire, le groupe et tous les autres aient, puis totaliser leurs valeurs., vous voulez du groupe et tout le monde viens de le lire et exécuter les autorisations, vous avez avec les valeurs numériques de la sorte:
- Propriétaire:
rwx
=4+2+1=7 - Groupe:
r-x
=4+0+1=5 - Autres:
r-x
=4+0+1=5
$ chmod 755 filename
C’est l’équivalent de l’aide de la commande suivante:
$ chmod u=rwx filename$ chmod go=rx filename
Pour afficher les autorisations existantes d’un fichier ou d’un répertoire sous forme numérique, l’utilisation de la stat(1) commande:
$ stat -c %a filename
Où l’ %une option spécifie la sortie sous forme numérique.,
la plupart des dossiers et répertoires sont définis sur 755
pour permettre la lecture, l’écriture et l’exécution au propriétaire, mais refuser l’écriture à tout le monde, et les fichiers sont normalement 644
pour permettre la lecture et l’écriture pour le propriétaire mais juste la lecture fichiers non exécutables: c’est la même chose ici.,
pour voir cela en action avec des exemples considérons l’exemple précédent qui a été utilisé mais avec cette méthode numérique appliquée à la place:
avant: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod 664 foobar
Après: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
xécutable le numéro serait 774
si vous vouliez accorder l’autorisation exécutable au propriétaire et au groupe. Sinon, si vous vouliez que tout le monde n’ait qu’une autorisation de lecture, le numéro serait 444
., Traiter r
comme 4, w
comme 2 et x
comme 1 est probablement le moyen le plus simple de calculer les valeurs numériques pour utiliser chmod xxx filename
, mais il existe également une méthode binaire, où chaque autorisation a nombre, puis qui est à son tour converti en un nombre. Il est un peu plus alambiqué, mais ici inclus pour l’exhaustivité.,
de Considérer cet ensemble d’autorisations:
-rwxr-xr--
Si vous mettez un 1 sous chaque autorisation accordée, et un 0 pour chaque pas accordée, le résultat serait quelque chose comme ceci:
-rwxrwxr-x 111111101
Vous pouvez ensuite convertir ces nombres binaires:
000=0 100=4001=1 101=5010=2 110=6011=3 111=7
La valeur de la ci-dessus serait donc 775.
Considérons que nous voulions supprimer le droit d’écriture pour le groupe:
-rwxr-xr-x 111101101
La valeur serait donc 755 et vous utiliseriez chmod 755 filename
supprimer le droit d’écriture., Vous remarquerez que vous obtenez le même numéro à trois chiffres peu importe la méthode que vous utilisez. Que vous utilisiez du texte ou des chiffres dépendra de vos préférences personnelles et de votre vitesse de frappe. Lorsque vous souhaitez restaurer un répertoire ou un fichier avec les autorisations par défaut, par exemple l’autorisation de lecture et d’écriture (et d’exécution) du propriétaire mais refuser l’autorisation d’écriture à tout le monde, il peut être plus rapide d’utiliser chmod 755/644 filename
. Cependant, si vous modifiez les autorisations pour quelque chose hors de la norme, il peut être plus simple et plus rapide d’utiliser la méthode text plutôt que d’essayer de la convertir en nombres, ce qui peut entraîner une erreur., Il pourrait être soutenu qu’il n’y ait de réelle différence significative de la vitesse de la méthode pour un utilisateur qui ne doit utiliser chmod sur l’occasion.
Vous pouvez également utiliser la méthode numérique pour définir la balise setuid
, setgid
et sticky
bits à l’aide de quatre chiffres.
setuid=4setgid=2sticky=1
Par exemple, chmod 2777 filename
va mettre en lecture/écriture/exécutable bits pour tout le monde et aussi d’activer la balise setgid
bit.
en Vrac chmod
Généralement, les répertoires et les fichiers ne doivent pas avoir les mêmes autorisations., S’il est nécessaire de modifier en bloc une arborescence de répertoire, utiliser find pour modifier sélectivement l’un ou l’autre.
chmod seulement les répertoires à 755:
$ find directory -type d -exec chmod 755 {} +
chmod uniquement les fichiers à 644:
$ find directory -type f -exec chmod 644 {} +
Modification de la propriété
chown change le propriétaire d’un fichier ou d’un répertoire, qui est plus rapide et plus facile que de modifier les autorisations dans certains cas.
prenons l’exemple suivant, créer une nouvelle partition avec GParted pour les données de sauvegarde. Gparted fait tout cela en tant que root, donc tout appartient à root par défaut., Tout cela est bien, mais quand il s’agit d’écrire des données sur la partition montée, l’autorisation est refusée pour les utilisateurs réguliers.
brw-rw---- 1 root disk 8, 9 Jul 6 16:02 sda9drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
Comme vous pouvez le voir l’appareil dans un /dev
est la propriété de root, qui est l’emplacement de montage (/media/Backup
)., Pour changer le propriétaire de l’emplacement de montage, on peut faire ce qui suit:
Avant: drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
# chown archie /media/Backup
Après: drwxr-xr-x 5 archie root 4096 Jul 6 16:01 Backup
Maintenant, la partition peut avoir les données écrites par le nouveau propriétaire, archie, sans modifier les autorisations (en tant que propriétaire triade déjà eu rwx
autorisations).
-
chown
efface toujours les bits setuid et setgid. - Les utilisateurs non root ne peuvent pas utiliser
chown
pour « donner » les fichiers qu’ils possèdent à un autre utilisateur.,
listes de contrôle d’accès
Les listes de contrôle d’accès fournissent un mécanisme d’autorisation supplémentaire et plus flexible pour les systèmes de fichiers en permettant de définir des autorisations pour n’importe quel utilisateur ou groupe sur n’importe quel fichier.
Umask
l’utilitaire umask est utilisé pour contrôler le masque de mode de création de fichier, qui détermine la valeur initiale des bits d’autorisation de fichier pour les fichiers nouvellement créés.,
attributs de fichier
outre les bits de mode fichier qui contrôlent les autorisations de lecture, d’écriture et d’exécution de l’utilisateur et du groupe, plusieurs systèmes de fichiers prennent en charge les attributs de fichier qui permettent une personnalisation supplémentaire des opérations de fichier autorisées. Cette section décrit certains de ces attributs et comment travailler avec eux.
chattr et lsattr
pour les systèmes de fichiers ext2 et ext3, le paquet e2fsprogs contient les programmes lsattr et chattr qui listent et modifient les attributs d’un fichier, respectivement.,/li>
u
: non effaçable situéeA
: pas de temps jourC
: pas de copie sur écritureD
: synchrone répertoire des mises à jourS
: synchrone à jourT
: haut de la hiérarchie du répertoirePar exemple, si vous souhaitez définir l’immuable peu sur certains fichiers, utilisez la commande suivante:
# chattr +i /path/to/file
Pour supprimer un attribut sur un fichier il suffit de changer +
de -
.,
attributs étendus
de xattr(7): « les attributs étendus sont des paires nom:valeur associées en permanence aux fichiers et répertoires ». Il existe quatre classes d’attributs étendus: sécurité, système, confiance et utilisateur.
les attributs Étendus sont également utilisés pour définir les Capacités.
l’Utilisateur attributs étendus
l’Utilisateur attributs étendus peuvent être utilisés pour stocker arbitraire des informations sur un fichier., To create one:
$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" foo.txt
Use getfattr to display extended attributes:
$ getfattr -d foo.txt
# file: foo.txtuser.,3de557528">
--preserve=mode,ownership,timestamps,xattr
mv
tar
--xattrs
for creation and extractionbsdtar
-p
for extraction--xattrs
- mv silently discards extended attributes when the target file system does not support them.,
pour conserver les attributs étendus avec les éditeurs de texte, vous devez les configurer pour tronquer les fichiers lors de l’enregistrement au lieu d’utiliser rename(2).
trucs et astuces
Préserver la racine
Utilisation de la balise --preserve-root
drapeau à éviter chmod
d’agir de manière récursive sur /
. Cela peut, par exemple, empêcher de supprimer le bit exécutable à l’échelle du système et ainsi casser le système. Pour utiliser cet indicateur à chaque fois, définissez-le dans un alias. Voir aussi .,
Voir aussi
- wikipédia:Chattr
- Linux Autorisation de Fichier Confusion
- Linux le Fichier d’Autorisation de la Confusion de la partie 2
- wikipedia:les attributs de fichier Étendu#Linux
- les attributs Étendus: la bonne, pas aussi bon, le mauvais.
- sauvegarde et restauration des permissions de fichiers sous Linux
- pourquoi « chmod-R 777 / » est-il destructeur?