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

43

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

saravana kumar kandasami
la source
18
Personne a fait encore explicite: un ch anges du mod e et l'autre ch anges le propre er. De plus, lisez l' homme uel.
Cessez de nuire à Monica
1
Et tout chownpeut aussi ch ange du gr ous p , il est chgrpspécifiquement dédié à cette tâche.
Cessez de nuire à Monica
6
Quelle est la principale différence entre une banane et une chaise? Ne pas s'asseoir sur la banane.
Shadur

Réponses:

48

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 chowncommande 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 chmodpour changer les bits de permission

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

Étant donné que 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 chownet chmod. Consultez ce petit guide pour un cours intensif sur les autorisations sous Linux.

Zanna
la source
1
+1 pour l'image .. Pas de définition octale si? Ou chmod a+wexemple? Ce qui prend du temps à faire, mais obtient plus de votes, je pense: D
WinEunuuchs2Unix
2
@ WinEunuuchs2Unix haha ​​merci ... j'ai délibérément choisi un paramètre d'autorisations particulièrement inutile. Si je commence vraiment à expliquer quand et pourquoi utiliser toutes les permutations possibles de chmodet chown(ce qui est une question trop large de loin), ma réponse sera éternelle. Essayer de rester simple
Zanna
96

En simple terme chownest utilisé pour changer la propriété d'un fichier alors que chmodpour changer les bits de mode de 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 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 ravexinac'est le propriétaire du fichier et adminsle groupe. Je peux utiliser: sudo chown dave:sudo filepour changer le propriétaire du fichier daveet le groupe sudo; Maintenant, le fichier appartient à "dave" et à tous les membres du groupe "sudo".

Cependant, avec chmodnous 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 tous les autres.

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

Ravexina
la source
1
Le propriétaire ne peut pas faire ce qu'il veut dans le fichier - la suppression ou le déplacement nécessite des autorisations d'écriture sur le répertoire contenant.
muru
2
@muru c'est vrai;) je voulais dire lire / écrire / exec, il y a aussi chattrce qui peut affecter le fichier je suppose.
Ravexina
1
@ KamilMaciorowski Vous le savez, je le sais, Ravexina le sait, mais la plupart des gens ne le savent pas.
Muru
2
@ KamilMaciorowski Je ne vous ai pas demandé de prétendre quoi que ce soit. Ce qui vous manque, c'est que la plupart des gens ne pensent pas à supprimer ou à renommer un fichier en tant qu'opérations sur le répertoire, mais en tant qu'opérations sur le fichier. C'est pourquoi nous avons des questions comme celles-ci: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442 Évidemment, vous savez que ces opérations figurent dans l'annuaire (félicitations !), mais il y a une idée fausse commune à ce sujet, alors j'ai noté que renommer ou supprimer impliquait des permissions sur le répertoire, pas sur le fichier. ...
Muru
1
@KamilMaciorowski ... Cette question est posée par un utilisateur qui ne connaît pas la différence entre chmod et chown, il me semble donc raisonnable de ne pas savoir que renommer un fichier nécessiterait des autorisations sur le répertoire.
Muru
19

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

  • à qui appartient le fichier - l'utilisateur et le groupe, et
  • ce qu’ils peuvent en faire - lire, écrire, exécuter ou une combinaison des deux.

chowntraite avec le qui . chmodtraite 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

chownest utilisé pour changer les deux premiers. chmodest utilisé pour changer les droits accordés à ces types.

muru
la source
7

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/cela rendrait "fichiers /" et tout ce qui se trouve dans et sous ce fichier exécutable et lisible par tous, ce qui pourrait ne pas être le résultat souhaité pour chaque fichier. L'utilisation chmod -R g+w files/ajoutera simplement l'autorisation d'écriture du groupe sans rien toucher d'autre.
James-Geldart
la source
6

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 -Rsi vous souhaitez modifier les autorisations de manière récursive.

Adam
la source
1

chownChangera qui est propriétaire du fichier et quel groupe il appartient, alors que les chmodchangements comment peuvent accéder au fichier (ou si elles peuvent y accéder à tous) les propriétaires et les groupes.

Bruno Finger
la source