The File Mode Creation Mask

There are many commands that can be used to change the properties of files. Before describing each of these commands it is necessary to point out the file mode creation mask. Consider the file created using the touch command as follows:

$ touch myfile
$ ls -l myfile
-rw-r--r-    1  spate     fcf                  0 Feb 16 11:14 myfile

The first command instructs the shell to create a file if it doesn't already exist. The shell in turn invokes the open() or creat() system call to instruct the operating system to create the file, passing a number of properties along with the creation request. The net effect is that a file of zero length is created.

The file is created with the owner and group IDs set to those of the caller (as specified in /etc/passwd). The permissions of the file indicate that it is readable and writable by the owner (rw-) and readable both by other members of the group fcf and by everyone else.

What happens if you don't want these permissions when the file is created? Each shell supports the umask command that allows the user to change the default mask, often referred to as the file mode creation mask. There are actually two umask calls that take the same arguments. The first is a shell built-in variable that keeps the specified mask for the lifetime of the shell, and the second is a system binary, which is only really useful for checking the existing mask.

The current mask can be displayed in numeric or symbolic form as the two following examples show:

Get UNIX Filesystems: Evolution, Design, and Implementation now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.