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

33

Dans certains exemples, j'ai vu que certains utilisaient chown au lieu de chmod . Je ne sais pas où utiliser chmod et chown . S'il vous plaît expliquez-moi la différence entre eux, quand et pourquoi je devrais utiliser l'un ou l'autre.

    
posée saravana kumar kandasami 24.05.2017 - 11:02
la source

6 réponses

34

Créons un fichier

touch rainbow

Examinons les métadonnées du fichier

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

La première partie de l'information est le type de fichier ( - au début signifie qu'il s'agit d'un fichier normal) et les bits d'autorisation

Après cela, nous voyons le propriétaire (zanna) et le groupe (zanna). Nous pouvons utiliser la commande chown pour changer ceux-ci:

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 May 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 May 24 10:09 rainbow

Comme les bits d’autorisation sont définis séparément pour le propriétaire, le groupe et les autres, vous pouvez contrôler les autorisations de fichiers pour différents utilisateurs en combinant chown et chmod . Consultez ce petit guide pour un cours intensif sur les autorisations sous Linux.

    
réponse donnée Zanna 24.05.2017 - 11:19
la source
86

En terme simple chown est utilisé pour changer la propriété d'un fichier alors que chmod sert à changer les bits du mode fichier.

  • chown définit à qui appartient le fichier.
  • chmod définit qui peut faire quoi.

Lorsque vous faites de quelqu'un le propriétaire d'un fichier, il peut le faire presque partout où il le souhaite, par exemple, il peut utiliser chmod pour modifier ses mods définir qui peut faire quoi.

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

À la ligne ci-dessus, nous pouvons voir que ravexina est le propriétaire du fichier et que admins est le groupe. Je peux utiliser: sudo chown dave:sudo file 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 file

donne les droits de lecture, d’écriture et d’exécution à tous, y compris au propriétaire, au groupe et à tout le monde.

De turnoff.us :

    
réponse donnée Ravexina 24.05.2017 - 11:07
la source
17

Lorsque vous considérez les autorisations d’un fichier (ou d’un répertoire, ou autre), il existe deux facteurs:

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

chown traite avec qui . chmod traite avec quoi . Vous ne pouvez pas utiliser l'un au lieu de l'autre.

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

  1. le propriétaire du fichier
  2. utilisateurs membres du groupe possédant le fichier
  3. tout le monde

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

    
réponse donnée muru 24.05.2017 - 11:10
la source
7

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

  • Vous devez avoir l’autorisation d’exécuter un répertoire (et tous ceux situés au-dessus) pour y accéder
  • Utilisez l'option -R pour appliquer les modifications de manière récursive à tout, y compris et sous la cible, par exemple chown -R www-data files/
  • Vous pouvez changer d’utilisateur et de groupe en même temps en utilisant la syntaxe chown user:group myfile
  • Souvent, il est plus facile / meilleur d'utiliser les options «+» et «-» plutôt que de définir des autorisations absolues, en particulier lorsqu'il s'agit d'une combinaison de fichiers et de répertoires. Par exemple, si vous voulez accorder des droits d'écriture de groupe à un répertoire et tout ce qui se trouve en dessous, chmod -R 775 files/ rendrait les fichiers / et tout ce qui est en-dessous et exécutable et lisible par tous. Utiliser chmod -R g+w files/ ajoutera simplement l'autorisation d'écriture de groupe sans toucher à rien d'autre.
réponse donnée james-geldart 24.05.2017 - 13:05
la source
6

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

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

u = user
o = other
g = group

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

user = read + write
other = read but not write
group = not read not write

N'oubliez pas le -R si vous souhaitez modifier les autorisations de manière récursive.

    
réponse donnée Adam 24.05.2017 - 22:13
la source
1

chown Changera qui possède le fichier et le groupe auquel il appartient, tandis que chmod change comment les propriétaires et les groupes peuvent accéder au fichier (ou s'ils peut y accéder du tout).

    
réponse donnée Bruno Finger 26.05.2017 - 20:51
la source

Lire d'autres questions sur les étiquettes