5
1
Where are default permissions for files and directories set before a umask is applied to limit those?
Or are they 0777 by default?
5
1
Where are default permissions for files and directories set before a umask is applied to limit those?
Or are they 0777 by default?
2
AFAIK it's hard-coded (in some sense) into every program that can create files. I basically agree with @Thor: it's typically 777 for directories and executable files (i.e., compilers use 777), and 666 for all others (data files, named pipes, "special" (device) files, etc.) The default mode for file-system sockets would probably have to be hard-coded in the kernel, since AFAIK the bind
system call doesn't allow the program to specify that.
I said "in some sense" because many programs use library functions (e.g., fopen
in the stdio
package) to do file I/O, so in their case the default mode is hard-coded in the library function.
That said, it's possible that some versions of *nix have a configuration file somewhere, and some or all programs and library functions read this configuration file to get the default mode.
so no .h files that would define access rights? wouldn't the permission system have to have such? – Gung Foo – 2012-09-18T16:11:18.513
@Gung Foo: I'm not sure what you're asking. <sys/stat.h>
defines constants like S_IRUSR = 0400
and S_IWGRP = 0020
, but these are for the benefit of programs that want to use the stat
system function to get a file's mode and interpret it. Yes, the kernel code uses this .h
file (or an equivalent one) also, but that wouldn't have to be on an operational system unless it had the kernel source code and was being used as a kernel code development/build/test system. And, yes, it's possible that some programs get their default mode from a .h
file -- that's just a form of hard-coding. – Scott – 2012-09-18T16:34:20.620
1AFAIK they're set to 777 for directories and 666 for files, not sure where this default comes from though. – Thor – 2012-09-18T09:16:48.333