web-dev-qa-db-fra.com

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

Dans certains exemples, j'ai constaté 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.

Créons un fichier

touch Rainbow

Regardons 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 d'autorisation

$ Sudo chmod 333 Rainbow
$ ls -l Rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 Rainbow

Les bits d'autorisation étant 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. Voir ce petit guide pour un cours intensif sur les autorisations sous Linux.

47
Zanna

En termes simples, chownest utilisé pour changer la propriété d'un fichier alors que chmodest utilisé pour changer les bits de mode de fichier.

  • chowndéfinit le propriétaire du fichier.
  • chmoddéfinit qui peut faire quoi.

Lorsque vous faites de quelqu'un le propriétaire d'un fichier, il peut faire presque n'importe où il veut ce fichier, par exemple, il peut utiliser chmodpour modifier ses mods (par exemple, les permissions) pour définir qui peut faire quoi. .

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

Sur la ligne ci-dessus, nous pouvons voir que ravexinaest le propriétaire du fichier et adminsest le groupe. Je peux utiliser: Sudo chown dave:Sudo file pour changer le propriétaire du fichier en daveet le groupe en Sudoname__; Maintenant, le fichier appartient à "dave" et à tous les membres du groupe "Sudo".

Cependant, avec chmodname__, 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 à tout le monde, y compris le propriétaire, le groupe et tout le monde.

De turnoff.us : enter image description here

95
Ravexina

Lors de l'examen des autorisations d'un fichier (ou d'un répertoire, ou autre), il existe deux facteurs:

  • who est propriétaire du fichier - l'utilisateur et le groupe, et
  • quoi ils peuvent en faire - lire, écrire, exécuter ou une combinaison de ceux-ci.

chown traite du who. chmod traite du 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. les utilisateurs membres du groupe propriétaire du fichier
  3. tout le monde

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

19
muru

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

  • Vous devez avoir la permission d’exécuter sur un répertoire (et tous ceux qui se trouvent au-dessus) pour y accéder.
  • Utilisez l'option -R pour appliquer les modifications de manière récursive à tout ce qui comprend 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
  • Il est souvent plus facile/préférable 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 souhaitez donner à un groupe des autorisations d'écriture sur un répertoire et tout ce qui se trouve en dessous, chmod -R 775 files/ rendrait 'fichiers /' et tout ce qui se trouve dans et en dessous de celui-ci et lisible par tous, ce qui pourrait ne pas être le résultat souhaité pour chaque fichier. Utiliser chmod -R g+w files/ ajoutera simplement la permission d'écriture du groupe sans toucher à autre chose.
7
james-geldart

Très bonnes réponses déjà, mais je voudrais faire une contribution 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

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

6
Adam

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

1
Bruno Finger