GNU/Linux >> Tutoriels Linux >  >> Linux

Introduction à la commande Linux chmod

Chaque objet de votre système Linux a un mode d'autorisation qui décrit les actions qu'un utilisateur peut effectuer dessus. Il existe trois types d'autorisations :lecture (r ), écrivez (w ) et exécutez (x ).

A lire un fichier est de visualiser son contenu. Par exemple, un fichier texte doit avoir lu permission pour quelqu'un de lire le texte à l'intérieur. Si l'utilisateur veut ajouter une phrase à ce fichier, il doit écrire autorisation. L'élément exécuter L'autorisation permet à quelqu'un d'exécuter un fichier, tel qu'un script shell ou un fichier de programme binaire.

Autorisations de base

Le ls -l La commande affiche les autorisations attribuées à un fichier. Par exemple :

ls -l
-rw-rw-r-- 1 bruce bruce    0 Jul 30 16:25 schedule1.txt

Certaines autorisations (rw ) apparaissent plusieurs fois car ils font référence à des entités différentes :utilisateur , groupe , et autre . Utilisateur est synonyme de propriétaire et de groupe fait référence au groupe principal de l'utilisateur, tous deux étant bruce . Autre fait référence à tous les autres utilisateurs.

La première position indique le type de l'objet :- pour un fichier, d pour un répertoire, et l pour un lien symbolique. Les neuf positions suivantes sont regroupées par trois et décrivent le mode d'autorisation. Les positions sont ordonnées r ,w ,x , et les groupes sont classés utilisateur , groupe , autre .

--- --- --- rwx rwx rwx
uuu ggg ooo u=utilisateur, g=groupe, o=autre

Fichiers

Un fichier avec des bits de lecture, d'écriture et d'exécution définis pour toutes les entités apparaît :

rwxrwxrwx 

Bien sûr, nous ne configurons généralement pas les fichiers de manière aussi permissive dans le monde réel ; ceci est juste une illustration de la façon dont chaque position est utilisée.

Dans l'exemple suivant, un fichier est configuré pour son propriétaire (pablo ) pour avoir des autorisations de lecture et d'écriture, pour que les membres du groupe n'aient que l'autorisation de lecture et que tous les autres n'aient aucune autorisation.

-rw-r----- 1 pablo pablo    0 Jul 30 16:25 textfile

Le chmod La commande modifie le mode d'autorisation des objets dans le système. C'est l'une des commandes les plus utilisées et les plus importantes de l'ensemble des commandes de sécurité Linux.

Un plus (+ ) ajoute une autorisation et un signe moins (- ) le symbole supprime une autorisation. Vous pouvez lire chmod u+r comme "utilisateur plus lecture", car il donne à l'utilisateur lecture autorisation. La commande chmod u-r signifie "utilisateur moins lecture", car il prend la lecture autorisation loin de l'utilisateur.

Répertoires

Les trois mêmes autorisations s'appliquent également à un répertoire. Un répertoire doit avoir le lecture autorisation pour un utilisateur de voir son contenu. Il faudra écrire autorisation pour un utilisateur d'ajouter au répertoire (par exemple, pour créer un nouveau fichier). Pour qu'un utilisateur passe à un répertoire (cd ), il doit avoir exécuter autorisation.

drw-rw-r-- 2 pablo pablo 4096 Jul 30 15:56 JBOSS

Pablo est peut-être le propriétaire du répertoire JBOSS, mais comme il n'a pas l'autorisation d'exécution, il ne peut pas cd dans ça. Il peut utiliser la commande chmod u+x pour ajouter l'autorisation, puis il peut cd dedans.

$ cd JBOSS
bash: cd: JBOSS: Permission denied
$ chmod u+x JBOSS
$ ls -l
drwxrw-r-- 2 pablo pablo 4096 Jul 30 15:56 JBOSS
$ cd JBOSS
$ pwd
/opt/JBOSS

Arguments combinés

Vous pouvez combiner des arguments à l'aide d'une virgule. Dans cet exemple, vous n'avez besoin que d'une seule commande pour définir les autorisations afin que le groupe ne puisse pas écrire dans un fichier et que le reste du monde ne puisse pas le lire :

$ chmod o-r,g-w readme.txt
$ ls -l
-rw-r----- 1 pablo share 0 Jul 31 13:34 readme.txt

Vous pouvez lire cela comme "les autres moins la lecture et le groupe moins l'écriture".

Supposons que Denise ait écrit un script Bash appelé home_backup.sh et veut lui donner exécuter autorisation. Elle veut également empêcher quiconque de le lire, de l'écrire ou de l'exécuter. Une façon de le faire est d'utiliser les symboles plus et moins :

$ chmod go-rw,u+x home_backup.sh

Une autre méthode consiste à utiliser les égaux (= ) symbole. Cela définira les autorisations absolument sans tenir compte des paramètres précédents. Notez qu'il y a un espace après le second égal; cela indique une valeur de aucun :

$ chmod u=rwx,go= home_backup.sh

Vous pouvez lire cela comme "les autorisations pour l'utilisateur sont égales en lecture, en écriture et en exécution et les autorisations pour le groupe et les autres sont égales à aucune".

Mode numérique

Chmod prend également en charge un mode numérique, qui utilise des valeurs attribuées à chaque position :

propriétaire groupe autre
r w x r w x r w x
400 200 100 40 20 10 4 2 1

La valeur totale d'un ensemble d'autorisations peut être calculée et transmise à la commande chmod sous la forme d'un seul argument. Prenons l'exemple avec Denise et son script de sauvegarde. Si elle utilise le mode numérique pour définir les permissions sur son script, elle doit d'abord calculer la valeur totale :

-rwx------ 1 denise denise 0 Jul 31 13:53 home_backup.sh

Denise ajoute les chiffres correspondant à chaque autorisation qu'elle souhaite appliquer :

400 + 200 + 100 =700

Sa commande sera chmod 700 home_backup.sh . Supposons que Denise veuille réinitialiser les autorisations d'origine sur le fichier :

-rw-rw-r-- 1 denise denise 0 Jul 31 13:53 home_backup.sh

La valeur de ces autorisations est calculée à 664 :

400 + 200 + 40 + 20 + 4 =664

Denise peut utiliser la commande chmod 664 home_backup.sh pour restaurer les autorisations d'origine.

Modes spéciaux

Trois autres modes peuvent être définis sur un objet :

nom symbolique numérique
setuid s 4000
setgid s 2000
collant t 1000

Le SetUID bit applique la propriété de l'utilisateur sur un fichier exécutable. Lorsqu'il est défini, le fichier s'exécutera avec l'ID utilisateur du propriétaire du fichier, et non la personne qui l'exécute.

$ chmod u+s

Le SetGID bit applique la propriété de groupe sur les fichiers et les répertoires. Lorsqu'il est défini, tout fichier ou répertoire créé dans un répertoire obtiendra la propriété du groupe du répertoire, pas celle de l'utilisateur. Lorsqu'il est défini sur un fichier, le fichier sera toujours exécuté en tant que groupe propriétaire plutôt qu'en tant qu'utilisateur :

$ chmod g+s

Le collant bit, également appelé "indicateur de suppression restreinte", peut être défini sur un répertoire pour empêcher quiconque, sauf le propriétaire du répertoire, de supprimer un fichier dans ce répertoire :

$ chmod o+t

Le sticky bit peut être paramétré en mode numérique en ajoutant sa valeur à celles des autres permissions. Si vous avez un objet avec une valeur de 755 et que vous souhaitez définir le sticky bit, ajoutez 1000 :

1000 + 400 + 200 + 100 + 40 + 10 + 4 + 1 =1755

Cette commande serait chmod 1755 . Plusieurs méthodes symboliques sont équivalentes; un exemple est chmod u=rwx,go=rx,o+t .

Extras

La lettre a est un raccourci pour attribuer des autorisations à tous les utilisateurs. La commande chmod a+rwx est équivalent à chmod ugo+rwx .

Récursif

Comme beaucoup d'autres commandes Linux, chmod a un argument récursif, -R , qui vous permet d'opérer sur un répertoire et son contenu de manière récursive. Par récursif, cela signifie que la commande tentera d'opérer sur tous les objets situés sous le répertoire spécifié plutôt que sur le répertoire lui-même. Cet exemple commence dans un répertoire vide et ajoute le -v argument (verbeux), donc chmod signalera ce qu'il fait :

$ ls -l . conf
.:
drwxrwxr-x 2 alan alan 4096 Aug  5 15:33 conf

conf:
-rw-rw-r-- 1 alan alan 0 Aug  5 15:33 conf.xml
$ chmod -vR 700 conf
mode of 'conf' changed from 0775 (rwxrwxr-x) to 0700 (rwx------)
mode of 'conf/conf.xml' changed from 0664 (rw-rw-r--) to 0700 (rwx------)

Référence

Une commande de fichier de référence (--reference=RFILE ) peut être utilisé pour dupliquer le mode d'un autre fichier (RFILE ), appelé fichier de référence. C'est pratique lorsque vous changez de mode sur des fichiers pour correspondre à une certaine configuration ou lorsque vous ne connaissez pas le mode exact ou que vous ne voulez pas prendre le temps de le calculer :

$ ls -l
-rw-r--r-x 1 alan alan 0 Aug  5 17:10 notes.txt
-rw-rw-r-- 1 alan alan 0 Aug  5 17:10 readme.txt
$ chmod --reference=readme.txt notes.txt
$ ls -l
-rw-rw-r-- 1 alan alan 0 Aug  5 17:10 notes.txt
-rw-rw-r-- 1 alan alan 0 Aug  5 17:10 readme.txt

Signaler les modifications

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

La commande chmod a également un -c (--modifications ), qui indique à chmod de signaler uniquement lorsqu'une modification est apportée (par rapport à -v , ou -verbeux , qui indique à chmod de rapporter toute sa sortie). Chmod signalera toujours d'autres choses, comme si une opération n'est pas autorisée.

L'argument -f (--silencieux , --silencieux ) supprime la plupart des messages d'erreur. Utiliser cet argument avec -c n'affichera que les changements réels.

Conserver la racine

La racine (/ ) du système de fichiers Linux doit être traité avec beaucoup de respect. Si quelqu'un fait une erreur de commande à ce niveau, les conséquences peuvent être terribles et rendre un système complètement inutile, en particulier lorsque vous exécutez une commande récursive qui effectuera n'importe quel type de changement, ou pire :des suppressions. Heureusement, la commande chmod --preserve-root l'argument protégera et préservera la racine. Si l'argument est utilisé avec une commande chmod récursive à la racine, rien ne se passera et vous verrez ce message :

[alan@localhost ~]# chmod -cfR --preserve-root a+w /
chmod: it is dangerous to operate recursively on '/'
chmod: use --no-preserve-root to override this failsafe

L'option n'a aucun effet lorsqu'elle n'est pas utilisée avec récursif. Cependant, si l'utilisateur root exécute la commande, les autorisations de / changeront, mais pas celles des autres fichiers ou répertoires.

[alan@localhost ~]$ chmod -c --preserve-root a+w /
chmod: changing permissions of '/': Operation not permitted
[root@localhost /]# chmod -c --preserve-root a+w /
mode of '/' changed from 0555 (r-xr-xr-x) to 0777 (rwxrwxrwx)

Étonnamment, ce n'est pas l'argument par défaut; --no-preserve-root est. Si vous exécutez une commande sans l'option "preserve", elle passera par défaut en mode "no preserve" et modifiera éventuellement les autorisations sur les fichiers qui ne doivent pas être modifiés.

[alan@localhost ~]$ chmod -cfR a+x /
mode of '/proc/1525/task/1525/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1541/task/1541/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1541/task/1580/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1541/task/1592/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1557/task/1557/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1558/task/1558/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)
mode of '/proc/1561/task/1561/comm' changed from 0644 (rw-r--r--) to 0755 (rwxr-xr-x)

Conclusion

Tous les objets d'un système Linux disposent d'un ensemble d'autorisations. Il est important de les vérifier et de les maintenir de temps en temps pour empêcher tout accès indésirable.


Linux
  1. Une introduction à l'utilisation de tcpdump sur la ligne de commande Linux

  2. Maîtrisez la commande Linux ls

  3. Commande Linux chmod

  4. La commande locate sous Linux

  5. Comment lire la colonne IDLE dans la sortie de la commande Linux 'w' ?

Maîtrisez la ligne de commande Linux

Restaurer l'autorisation exécutable pour la commande Chmod sous Linux

La commande choose sous Linux

La commande timer sous Linux

5 exemples pratiques de la commande Read sous Linux

Exemples essentiels de la commande ps sous Linux