| 
				 | 
			||
|---|---|---|
| .. | ||
| bin | ||
| docs | ||
| etc | ||
| lib | ||
| scripts | ||
| package.json | ||
| README.md | ||
umask
Get/set the process mask.
A mask is a set of bits, each of which restricts how its corresponding permission is set for newly created files. On POSIX platforms, each file has a set of attributes that control who can read, write, or execute that file. Upon creating a file, file permissions must be set to an initial setting. The process mask restricts those permission settings.
If the mask contains a bit set to 1, the corresponding initial file permission is disabled. If the mask contains a bit set to 0, the corresponding permission is left to be determined by the requesting process and the system. The process mask is thus a filter that removes permissions as a file is created; i.e., each bit set to a 1 removes its corresponding permission.
In octal representation, a mask is a four digit number comprised as follows (using 0077 as an example):
0: special permissions (setuid, setgid, sticky bit)0: (u)ser/owner permissions7: (g)roup permissions7: (o)thers/non-group permissions
Octal codes correspond to the following permissions:
0: read, write, execute1: read, write2: read, execute3: read4: write, execute5: write6: execute7: no permissions
If provided fewer than four digits, the mask is left-padded with zeros. Note, however, that only the last three digits (i.e., the file permissions digits) of the mask are actually used when the mask is applied (i.e., mask & 0777).
Permissions can be represented using the following symbolic form:
u=rwx,g=rwx,o=rwx
where
- u: user permissions
 - g: group permissions
 - o: other/non-group permissions
 - r: read
 - w: write
 - x: execute
 
When setting permissions using symbolic notation, one may use a mask expression of the form:
[<classes>]<operator><symbols>
where <classes> may be a combination of
- u: user
 - g: group
 - o: other/non-group
 - a: all
 
<symbols> may be a combination of
- r: read
 - w: write
 - x: execute
 - X: special execute
 - s: setuid/gid on execution
 - t: sticky
 
and <operator> may be one of
- +: enable
 - -: disable
 - =: enable specified and disable unspecified permissions
 
For example,
u-w: disable user write permissionsu+w: enable user write permissionsu=w: enable user write permissions and disable user read and execute
To specify multiple changes, one can specify a comma-separated list of mask expressions. For example,
u+rwx,g-x,o=r
would enable user read, write, and execute permissions, disable group execute permissions, enable other read permissions, and disable other write and execute permissions.
The a class indicates "all", which is the same as specifying ugo. This is the default class if a class is omitted when specifying permissions. For example, +x is equivalent to a+x which is equivalent to ugo+x which is equivalent to u+x,g+x,o+x and enables execution for all classes.
Usage
var umask = require( '@stdlib/process/umask' );
umask( [mask,] [options] )
Returns the process mask.
var mask = umask();
// returns <number>
To set the process mask, provide a mask argument. When provided a mask, the function returns the previous mask value.
var mask = umask();
// returns <number>
var prev = umask( 0 );
// returns <number>
var bool = ( prev === mask );
// returns true
The mask argument may be either an integer value or a string representing the mask using symbolic notation.
var mask = umask( 'u=rwx,g=rw,o=rw' );
The function accepts the following options:
- symbolic: 
booleanindicating whether to return the mask in symbolic notation. Default:false. 
To return the process mask in symbolic notation, set the symbolic option to true.
var opts = {
    'symbolic': true
};
// Get the mask:
var mask = umask( opts );
// e.g., returns 'u=rwx,g=rw,o=rw'
// Set the mask:
mask = umask( 0, opts );
// e.g., returns 'u=rwx,g=rw,o=rw'
Notes
- 
To set the process mask using an octal
string(e.g.,0777), useparseIntto convert thestringto an integer value.umask( parseInt( '0777', 8 ) ); - 
See umask(2).
 
Examples
var lpad = require( '@stdlib/string/left-pad' );
var umask = require( '@stdlib/process/umask' );
var mask;
var opts;
// Print the process mask as an integer:
mask = umask();
console.log( mask.toString() );
// Print the process mask as an octal string:
console.log( lpad( mask.toString(), 4, '0' ) );
// Print the process mask using symbolic notation:
opts = {
    'symbolic': true
};
console.log( umask( opts ) );
CLI
Usage
Usage: umask [options]
Options:
  -h,    --help                Print this message.
  -V,    --version             Print the package version.
  -p,    --print               Print the mask command.
  -S,    --symbolic            Print the mask using symbolic notation.
Examples
$ umask
To print the mask in command format, set the -p flag.
$ umask -p