A problem with noacl+umask+chmod result
Orgad Shaneh
orgads@gmail.com
Wed Apr 7 20:47:48 GMT 2021
Hi,
If a filesystem is mounted with noacl, calling chmod to add write
permissions after umasking this permission doesn't work. Demonstrated
with command-line and C++.
Did I miss something or is this a real bug? According to umask man, it
should only affect newly created files and directories, but I didn't
find anything that relates to chmod.
Command-line:
touch foo
ls -l foo
# -rw-r--r-- ... foo
umask 200
chmod 0 foo
ls -l foo
# -r--r--r-- ... foo
chmod 200 foo
ls -l foo
# -r--r--r-- ... foo
# Expected to have rw
C++:
#include <unistd.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <fcntl.h>
#include <iostream>
const char fileName[] = "foo";
const int mask = S_IWRITE;
void get()
{
struct stat st;
stat(fileName, &st);
std::cout << (st.st_mode) << std::endl;
}
void set(int mode) {
chmod(fileName, mode);
}
int main() {
std::cout << std::oct;
std::cout << "mask: " << mask << std::endl;
close(open(fileName, O_WRONLY | O_CREAT));
get();
umask(mask);
set(0);
get();
set(mask);
get();
}
Output without noacl:
mask: 200
100644
100444
100644
Output with noacl:
mask: 200
100644
100444
100444
Thanks,
- Orgad
More information about the Cygwin
mailing list