Setting group/other write flags not honoured in open
Nicky Chorley
ndchorley at gmail.com
Fri Jan 8 10:09:28 EST 2021
I realised I never got back to this. Thanks Marcelo for that - I'll look
into it.
Best,
Nicky
On Sat, 31 Oct 2020 at 16:36, Marcelo Diop-Gonzalez <marcelo827 at gmail.com>
wrote:
> Hey, I think this is because the process's umask is changing the mode. In
> fs/namei.c in the function lookup_open() there's this bit:
>
> ....
> if (!IS_POSIXACL(dir->d_inode))
> mode &= ~current_umask();
> ....
>
> the open(2) and umask(2) manpages will explain how to deal with it
>
> -Marcelo
>
>
>
> On Sat, Oct 31, 2020 at 11:06 AM Nicky Chorley <ndchorley at gmail.com>
> wrote:
>
>> Hi folks,
>>
>> I hope it's OK to ask this question here. I'm reading The Linux
>> Programming Interface and am beginning to get to grips with the file
>> oriented system calls.
>>
>> I have a program that calls open to create a file, specifying the mode
>> flags for owner, group, other read and write. The file is created
>> sucessfully, but when I look at its permissions, I only see the read
>> perms set for group and others:
>>
>> > ./create_file foo
>> > ls -l foo
>> -rw-r--r-- 1 nick users 0 Oct 31 14:52 foo
>>
>> Why would that be? The entirety of my program is
>>
>> #include <fcntl.h>
>> #include <unistd.h>
>>
>> int main(int argc, char *argv[]) {
>> int open_flags = O_CREAT | O_WRONLY | O_TRUNC;
>> mode_t file_perms =
>> S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
>>
>> int output_fd = open(argv[1], open_flags, file_perms);
>>
>> close(output_fd);
>> }
>>
>> I also ran the program with strace and the perms in the openat call are
>> as I would expect:
>>
>> openat(AT_FDCWD, "foo", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
>>
>> I don't understand why the group and other write flags aren't being
>> set. Could someone help shed some light on this please?
>>
>> I'm not sure what factors influence this, but I'm running openSUSE Leap
>> 15.2, with kernel 5.3.18-lp152.47-default, gcc 7.5.0 and glibc 2.26.
>>
>> Thanks,
>>
>> Nicky
>>
>> _______________________________________________
>> Kernelnewbies mailing list
>> Kernelnewbies at kernelnewbies.org
>> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20210108/e0ed886f/attachment.html>
More information about the Kernelnewbies
mailing list