web-dev-qa-db-fra.com

Que signifie mode_t 0644?

#define COPYMODE 0644
creat(argV[2],COPYMODE);

J'ai ces deux lignes de code dans un fichier copy.c. Je ne sais pas ce que ça veut dire. Veuillez donner un exemple à ce sujet

9
Sycx

Il existe des drapeaux 3x3 bits pour un mode:

  • (propriétaire) Utilisateur
    • lis
    • écrire
    • execute
  • Groupe
    • lis
    • écrire
    • execute
  • Autre
    • lis
    • écrire
    • execute

Ainsi, chaque triple code bien comme un chiffre octal.

rwx oct    meaning
--- ---    -------
001 01   = execute
010 02   = write
011 03   = write & execute
100 04   = read
101 05   = read & execute
110 06   = read & write
111 07   = read & write & execute

Alors 0644 c'est:

* (owning) User: read & write
* Group: read
* Other: read

Notez qu'en C, une initiale 0 indique la notation octale, tout comme 0x indique la notation hexadécimale. Donc, chaque fois que vous écrivez zéro simple en C, c'est en fait un octal zéro (fait amusant).

Cela pourrait aussi s'écrire:

-rw-r--r--

Alors que les autorisations complètes, 0777 peuvent également s'écrire:

-rwxrwxrwx

Ainsi, le nombre octal passé à creat correspond directement (via l'encodage octal du motif binaire) aux autorisations de fichier affichées par ls -l.

41
luser droog

Cela signifie que:

  • Le propriétaire du fichier peut lire et écrire (6)
  • Les utilisateurs du même groupe que le propriétaire du fichier peuvent lire (4 premiers)
  • Tous les utilisateurs peuvent lire (deuxième 4)

Voir http://www.ss64.com/bash/chmod.html .

11
Rafe Kettler