What Does Mode_T 0644 Mean?

What Does Mode_T 0644 Mean?
#define COPYMODE 0644
creat(argV[2],COPYMODE);

I have these two lines of code in a copy.c file. I don't know what it means. Please give some example about it

2

2 Answers

There are 3x3 bit flags for a mode:

  • (owning) User
    • read
    • write
    • execute
  • Group
    • read
    • write
    • execute
  • Other
    • read
    • write
    • execute

So each triple encodes nicely as an octal digit.

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

So 0644 is:

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

Note that in C, an initial 0 indicates octal notation, just like 0x indicates hexadecimal notation. So every time you write plain zero in C, it's actually an octal zero (fun fact).

This might also be written:

-rw-r--r--

Whereas full permissions, 0777 can also be written:

-rwxrwxrwx

So the octal number passed to creat corresponds directly (via octal encoding of the bit-pattern) to the file permissions as displayed by ls -l.

5

It means that:

  • The file's owner can read and write (6)
  • Users in the same group as the file's owner can read (first 4)
  • All users can read (second 4)

See .

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

James H. Sterling
Author

James H. Sterling

James Sterling reports on renewable energy developments, climate policy, ecological conservation, and green tech innovations around the globe.