Cet article décrit comment modifier les autorisations sur un serveur cloud Linux® en utilisant le chmod
commande.
Qu'est-ce que la commande chmod ?
En termes simples, chmod
signifie changer de mode et est utilisé pour définir les autorisations de fichiers ou de répertoires sous Linux. Les utilisateurs root utilisent chmod
pour déterminer quels utilisateurs, groupes et autres peuvent accéder aux fichiers ou aux répertoires.
Typiquement, vous utilisez le chmod
commande dans les formats suivants :
$ chmod (options) (permissions) (file name)
$ chmod (permissions) (file name)
L'utilisation des options avec le chmod
la commande est facultative. Le deuxième exemple reçoit l'utilisation la plus fréquente. Sans option présente, chmod
modifie les permissions du fichier ou du répertoire désigné dans la commande.
Autorisations
Dans un système Linux, vous pouvez utiliser des autorisations pour faire référence au propriétaire du fichier ou du répertoire (utilisateur), au groupe qui possède le fichier ou le répertoire (groupe) ou à toute autre personne qui accède au fichier ou au répertoire (autres).
Indiquez ces autorisations en utilisant la notation suivante :
- caractères alphanumériques (r, w, x)
- nombres octaux (0-7)
Par exemple, vous avez un fichier appelé example.txt , et vous souhaitez définir les autorisations suivantes :
- L'utilisateur peut lire, écrire et exécuter le fichier.
- Les membres du groupe peuvent lire et exécuter, mais pas écrire le fichier.
- Toute autre personne ne peut que lire le fichier.
L'option de commande suivante définit les autorisations souhaitées pour example.txt :
$ chmod u=rwx,g=rx,o=r example.txt
Cette option utilise des caractères alphanumériques pour désigner les utilisateurs qui peuvent accéder au fichier ainsi que les autorisations que vous souhaitez définir pour ces utilisateurs désignés.
- La lettre 'u' =utilisateur
- La lettre 'g' =groupe
- La lettre 'o' =autre
- La lettre 'r' =lire
- La lettre 'w' =écrire
- La lettre 'x' =exécuter
L'exemple suivant montre comment Linux décrit les autorisations accordées dans l'exemple précédent :
-rwxr-xr--
Les trois premières lettres (rwx) sont les autorisations de l'utilisateur. Les trois secondes (r-x) représentent les autorisations du groupe et les trois dernières (r–) représentent les autorisations des autres.
Ensuite, nous avons l'option octal pour notre example.txt exercice :
$ chmod 754 example.txt
Dans cet exemple, les nombres 7, 5 et 4 représentent chacun l'utilisateur, le groupe et les autres autorisations. La première position numérique détermine l'autorisation de l'utilisateur, le deuxième numéro détermine les autorisations du groupe et le troisième numéro attribue les autorisations aux autres.
Ces numéros ne sont pas choisis au hasard. L'addition des nombres 4, 2, 1 et 0 détermine les autorisations. Les numéros ont les affectations suivantes :
- 4 signifie "lire"
- 2 signifie "écrire"
- 1 signifie "exécuter"
- 0 signifie "aucun"
Par conséquent, dans notre exemple précédent, le 7 est déterminé à partir de la combinaison de lecture (4), écriture (2) et exécution (1) :4 + 2 + 1 =7. Le 5 est obtenu en ajoutant lecture (4), aucun (0) et exécuter (1) :4 + 0 + 1 =5. Enfin, le 4 est une combinaison de lire (4), aucun (0) et aucun (0) :4 + 0 + 0 =4 .
Options
Vous n'avez généralement pas besoin d'utiliser les options dans le chmod
commande, mais si vous le faites, vous pouvez utiliser les options suivantes avec chmod
:
-c
,--changes
:Donne une sortie détaillée pour les modifications apportées-f
,--silent
,--silent
:désactive la plupart des messages d'erreur-v
,--verbose
:Affiche un message détaillé pour chaque action traitée--no-preserve-root
:Ignore la déférence normalement accordée par défaut au répertoire / (racine)--preserve-root
:N'opère pas de manière récursive sur le répertoire / (racine)--reference=RFILE
:définit les autorisations pour qu'elles correspondent à celles de RFILE, en ignorant tout MODE spécifique-R
,--recursive
:Les modifications apportées aux fichiers ou aux répertoires sont appliquées de manière récursive--help
:Affiche le message d'aide, puis quitte--version
:affiche les informations de version, puis quitte
Extras
En plus des permissions déjà discutées, le chmod
La commande peut définir trois autres autorisations spéciales sous Linux.
- SUID (Définir l'ID utilisateur)
- SGID (Définir l'ID de groupe)
- Bout collant
SUID
Un s
dans le rwx
de l'utilisateur ensemble d'autorisations, remplaçant le x
, représente cette autorisation, comme illustré dans l'exemple suivant :
$ chmod 4755 /usr/bin/passwd
$ ls -lh /usr/bin/passwd
-rwsr-xr-x. 1 root root 28K Mar 10 2020 /usr/bin/passwd
Les trois premières lettres de rwsr-xr-x
représentent les autorisations de l'utilisateur. Notez qu'au lieu d'un x
il y a un s
dans les trois emplacements d'autorisation de l'utilisateur. Au lieu d'afficher x
pour execute, il y a un s
dans le lieu d'exécution. Pourquoi est-ce ?
Remarque : Le 4 devant le jeu d'autorisations octal habituel représente cette autorisation. Donc au lieu de 755
, l'autorisation est écrite sous la forme 4755
.
Vous devez utiliser cette option avec prudence car cette autorisation particulière permet à un utilisateur d'exécuter un programme binaire comme s'il en était le propriétaire même s'il ne l'est pas. L'exemple le plus connu est le passwd
commande.
Dans le cas de passwd
, l'utilisateur peut exécuter le programme même si le programme binaire appartient à root. Cependant, parce que passwd
est défini comme SUID par défaut, il s'exécute toujours en tant qu'utilisateur root.
Si un utilisateur régulier a des permissions SUID sur d'autres programmes binaires, il peut exécuter des commandes en tant que root sans avoir root
autorisations. Il permet une élévation anormale des privilèges qui nécessitent généralement sudo
privilèges d'accès.
Les autorisations SUID peuvent affecter une précaution intégrée au système d'exploitation Linux sous la forme de binaires uniquement. Cela n'affecte pas les scripts.
SGID
Un s
dans le rwx
du groupe ensemble d'autorisations, remplaçant le x
dans t r-x
segment, représente l'autorisation SGID, comme illustré dans l'exemple suivant :
$ chmod 2755 /usr/bin/screen
$ ls -lh /usr/bin/screen
-rwxr-sr-x. 1 root screen 465K Feb 10 2020 /usr/bin/screen
Ce s
se trouve dans le deuxième groupe de trois autorisations, que nous avons découvert plus tôt dans les autorisations du groupe lorsqu'elles sont écrites en style alphanumérique. Dans le rendu octal, un 2
devant les trois autres numéros d'autorisation octaux indique cette autorisation. Au lieu de 755
, écrivez ceci sous la forme 2755
.
Comme SUID, les autorisations SGID ne fonctionnent que sur les binaires. Ils ne fonctionnent pas sur les scripts. Quant à ce que fait SGID, il permet aux membres du groupe non privilégiés d'exécuter un binaire comme s'ils étaient l'utilisateur root.
En règle générale, vous pouvez utiliser cette autorisation sur les répertoires auxquels les membres du groupe doivent avoir accès dans le répertoire partagé par le groupe. Tous les fichiers créés dans ce répertoire ont le même propriétaire de groupe, quel que soit le membre du groupe qui a créé le fichier.
Point collant
Un t
dans le rwx
des autres ensemble d'autorisations, remplaçant le x
, représente cette autorisation, comme illustré dans l'exemple suivant :
$ chmod 1777 /tmp
$ ls -lhd /tmp
drwxrwxrwt. 8 root root 4.0K Nov 6 14:42 /tmp
Remarquez le t
dans la dernière série de trois lettres. L'équivalent octal du t
est un 1
devant les trois octaux de permission. Au lieu de 777
, écrivez ceci sous la forme 1777
.
Que fait ce morceau collant? En règle générale, vous utilisez cette autorisation sur un tmp répertoire, et sa fonction est d'empêcher les utilisateurs de supprimer des fichiers appartenant à d'autres utilisateurs. Habituellement, si un groupe a un accès en écriture à un répertoire, tout utilisateur de ce groupe peut supprimer n'importe quel fichier de ce répertoire. La permission sticky bit arrête cela. Seul le créateur du fichier peut le supprimer.
En tant que meilleure pratique, vous devez définir l'autorisation sticky bit sur tout répertoire dont les autres autorisations sont octal 7 (lecture, écriture, exécution). Dans notre 754
exemple, vous voulez utiliser la permission sticky bit si les octals sont 757
où 7 est le troisième octal (représentant la permission des autres).
Aide-mémoire sur les autorisations pour les fichiers et les répertoires
Voici un aide-mémoire rapide expliquant chaque partie de l'exemple de sortie :
-rwxrw-r-- rack space 123G Feb 03 15:36 example.txt
-
:Le-
au début vous indique qu'il s'agit d'un fichier. Und
au début indique un répertoire.rwx
:les trois premières lettres représentent les autorisations du propriétaire du fichier et signifient que le propriétaire peut lire, écrire et exécuter le fichier example.txt.rw-
:les trois deuxièmes lettres représentent les autorisations du groupe et signifient que les membres du groupe peuvent lire et écrire dans le fichier, mais qu'ils ne peuvent pas l'exécuter.r--
:Les trois troisièmes lettres représentent les autorisations des autres et signifient que toute personne qui n'est pas le propriétaire ou dans le groupe propriétaire du fichier ne peut que lire le fichier. Ils ne peuvent pas écrire dans le fichier ni exécuter le fichier.rack
:Le propriétaire du fichier.space
:Le propriétaire du groupe.123G
:La taille du fichier en gigaoctets. UnM
dénoterait des mégaoctets, et unK
dénoterait des kilo-octets.Feb 03 15:36
:Indique la date et l'heure auxquelles le fichier a été modifié pour la dernière fois.example.txt
:Le nom du fichier. Si vous l'indiquez comme "/exemple", il s'agit du nom du répertoire.