I am creating a file using the following code:
#include <stdio.h> #include <stdlib.h> #include <sys/stat.h> #include <sys/types.h> #include <errno.h> #include <fcntl.h> #include <unistd.h> int main() { const char* filename = "./test.out"; int fd; if(-1 == (fd = open(filename, O_CREAT|O_RDWR, 0666))) { perror("Error"); errno = 0; } else puts("File opened"); if(-1 == (close(fd))) { perror("Error"); errno = 0; } else puts("File closed"); return 0; }
I specify the mode
argument as 0666
, which should provide read, write access to everyone. However ls -l
shows
-rw-r--r-- 1 kmehta users 0 2012-01-29 16:29 test.out
As you can see, write permissions are granted only to the owner of the file. I do not know why everyone else did not get permission correctly. chmod a+w test.out
sets permissions correctly.
Code compiled as gcc -Wall test.c
Features: gcc v 4.5.0 on Opensuse 11.3 64 bit
jitihsk
source share