# umask - perldoc - phpman

> **TLDR:** Manage the read/write/execute permissions that are masked out (i.e. restricted) for newly created files by the user.
>
- Display the current mask in octal notation:
  `umask`
- Display the current mask in symbolic (human-readable) mode:
  `umask -S`
- Change the mask symbolically to allow read permission for all users (the rest of the mask bits are unchanged):
  `umask {{a+r}}`
- Set the mask (using octal) to restrict no permissions for the file's owner, and restrict all permissions for everyone else:
  `umask {{077}}`

*Source: tldr-pages*

---

    umask EXPR
    umask   Sets the umask for the process to EXPR and returns the previous
            value. If EXPR is omitted, merely returns the current umask.

            The Unix permission "rwxr-x---" is represented as three sets of
            three bits, or three octal digits: 0750 (the leading 0 indicates
            octal and isn't one of the digits). The "umask" value is such a
            number representing disabled permissions bits. The permission
            (or "mode") values you pass "mkdir" or "sysopen" are modified by
            your umask, so even if you tell "sysopen" to create a file with
            permissions 0777, if your umask is 0022, then the file will
            actually be created with permissions 0755. If your "umask" were
            0027 (group can't write; others can't read, write, or execute),
            then passing "sysopen" 0666 would create a file with mode 0640
            (because "0666 &~ 027" is 0640).

            Here's some advice: supply a creation mode of 0666 for regular
            files (in "sysopen") and one of 0777 for directories (in
            "mkdir") and executable files. This gives users the freedom of
            choice: if they want protected files, they might choose process
            umasks of 022, 027, or even the particularly antisocial mask of
            077. Programs should rarely if ever make policy decisions better
            left to the user. The exception to this is when writing files
            that should be kept private: mail files, web browser cookies,
            .rhosts files, and so on.

            If [umask(2)](https://www.chedong.com/phpMan.php/man/umask/2/markdown) is not implemented on your system and you are trying
            to restrict access for *yourself* (i.e., "(EXPR & 0700) > 0"),
            raises an exception. If [umask(2)](https://www.chedong.com/phpMan.php/man/umask/2/markdown) is not implemented and you are
            not trying to restrict access for yourself, returns "undef".

            Remember that a umask is a number, usually given in octal; it is
            *not* a string of octal digits. See also "oct", if all you have
            is a string.

            Portability issues: "umask" in perlport.

