60 votes

Quelle est la principale différence entre chmod et chown?

Dans certains exemples, j'ai vu que certains utilisaient chown à la place de chmod. Je ne sais pas où utiliser chmod et chown. Veuillez m'expliquer la différence entre les deux, quand et pourquoi je devrais utiliser l'un ou l'autre.

109voto

Ravexina Points 50599

En termes simples, chown est utilisé pour changer la propriété d'un fichier tandis que chmod est utilisé pour changer les bits de mode du fichier.

  • chown définit qui possède le fichier.
  • chmod définit qui peut faire quoi.

Lorsque vous attribuez à quelqu'un la propriété d'un fichier, il peut faire presque tout ce qu'il veut avec ce fichier, par exemple il peut utiliser chmod pour changer ses modèles (c'est-à-dire les autorisations) afin de définir qui peut faire quoi.

$ ls -l fichier
-rwxrwxr-x  2  ravexina admins   26 Mai  9 12:49 fichier

Dans la ligne ci-dessus, nous pouvons voir que ravexina est le propriétaire du fichier et admins est le groupe. Je peux utiliser : sudo chown dave:sudo fichier pour changer le propriétaire du fichier en dave et le groupe en sudo; Maintenant le fichier appartient à "dave" et à tout le monde dans le groupe "sudo".

Cependant, avec chmod, nous définissons qui peut faire quoi ? qui a le droit de lire un fichier, d'écrire dans un fichier ou de l'exécuter. Par exemple :

chmod 777 fichier

accorde les droits de lecture, écriture et exécution à tout le monde, y compris le propriétaire, le groupe et tout le monde d'autre.

De turnoff.us : entrez la description de l'image ici

73voto

Zanna Points 65764

Créons un fichier

touch rainbow

Jetons un coup d'œil aux métadonnées du fichier

$ ls -l rainbow
-rw-rw-r-- 1 zanna zanna 0 mai 24 10:09 rainbow

La première partie des informations est le type de fichier (- au début signifie qu'il s'agit d'un fichier régulier) et les bits de permission

Ensuite, nous voyons le propriétaire (zanna) et le groupe (zanna). Nous pouvons utiliser la commande chown pour les changer:

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 mai 24 10:09 rainbow

Et nous utilisons chmod pour changer les bits de permission

$ sudo chmod 333 rainbow
$ ls -l rainbow
--wx-wx-wx 1 pixie zanna 0 mai 24 10:09 rainbow

Étant donné que les bits de permission sont définis séparément pour le propriétaire, le groupe et les autres, vous pouvez contrôler les permissions de fichiers pour différents utilisateurs en combinant chown et chmod. Consultez ce guide rapide pour un cours intensif sur les permissions dans Linux.

22voto

muru Points 180007

Lors de la considération des permissions d'un fichier (ou d'un répertoire, ou autre), il y a deux facteurs:

  • qui possède le fichier - l'utilisateur et le groupe, et
  • ce qu'ils peuvent en faire - lire, écrire, exécuter ou une combinaison de ceux-ci.

chown traite du qui. chmod traite du ce. Vous ne pouvez pas utiliser l'un à la place de l'autre.

Les permissions simples d'Unix classent les utilisateurs tentant d'accéder à un fichier en trois types:

  1. le propriétaire du fichier
  2. les utilisateurs membres du groupe propriétaire du fichier
  3. tout le monde d'autre

chown est utilisé pour changer les deux premiers. chmod est utilisé pour changer les droits accordés à ces types.

10voto

Ascarius Points 893

Quelques points / astuces à ajouter aux précédentes réponses excellentes :

  • Vous devez avoir l'autorisation d'exécution sur un répertoire (et sur tous ceux au-dessus) pour y accéder
  • Utilisez l'option -R pour appliquer les changements de manière récursive à tout ce qui se trouve en dessous de la cible, par exemple chown -R www-data files/
  • Vous pouvez changer à la fois l'utilisateur et le groupe en utilisant la syntaxe chown user:group myfile
  • Il est souvent plus facile / mieux d'utiliser les options '+' et '-' plutôt que de définir des autorisations absolues, surtout lorsqu'il s'agit d'une combinaison de fichiers et de répertoires. Par exemple, si vous voulez donner des autorisations d'écriture au groupe dans un répertoire et à tout ce qui se trouve en dessous, chmod -R 775 files/ rendrait 'files/' et tout ce qui est en dessous exécutable et lisible par tous, ce qui pourrait ne pas être le résultat souhaité pour chaque fichier. En utilisant chmod -R g+w files/, vous ajouterez simplement l'autorisation d'écriture du groupe sans toucher à quoi que ce soit d'autre.

8voto

user562529 Points 901

Des réponses très bonnes déjà, mais je voudrais apporter une contribution où les autorisations sont très faciles à comprendre

chmod u=r+w,o=r-w,g=-r-w test.php

u = utilisateur
o = autre
g = groupe

De cette façon, vous pouvez facilement ajouter des autorisations à un fichier. Dans l'exemple ci-dessus

utilisateur = lecture + écriture
autre = lecture mais pas écriture
groupe = ni lecture ni écriture

Et n'oubliez pas le -R si vous voulez modifier les autorisations récursivement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X