umask(1) on Solnix vs Linux and the BSDs

On Solnix, /usr/bin/umask is a standalone illumos utility that can only report the mask, because a child process cannot change its caller's mask. To change the mask you must use a shell builtin. The FreeBSD umask(1) page is the shell builtin index and does not document umask's syntax, so it gives no flag-level comparison.

What Solnix runs

A default Solnix system runs the illumos /usr/bin/umask. /usr/xpg4/bin/umask is also shipped, but the bundle does not say how it differs. The page documents umask in four shells: sh and csh (octal only), ksh and ksh93 (octal or symbolic, with -S). Use the shell builtin to change the mask in a session.

Differences

Compared withTopicWhat differs
FreeBSDwhat the FreeBSD page coversThe FreeBSD page named umask(1) is the builtin(1) index of shell builtins and keywords. It lists umask but gives no synopsis, options, operands, output format or exit status for it. Flag-by-flag comparison is not possible from the manual.
Source: FreeBSD umask(1) NAME, SYNOPSIS, DESCRIPTION; Solnix umask(1) SYNOPSIS, OPTIONS
FreeBSDstandalone utilityOn Solnix, /usr/bin/umask is a real binary, but it can only check the caller's mask. FreeBSD lists a standalone umask as 'No*': it exists externally as a script using the builtin. The FreeBSD page does not say what that script does.
Source: Solnix umask(1) DESCRIPTION; FreeBSD umask(1) Commands table (umask row, 'No*' note)
FreeBSDbuiltin in sh and cshFreeBSD lists umask as a builtin in both csh(1) and sh(1). Solnix documents umask in sh, csh, ksh and ksh93. The sh and csh forms take only an octal mask, ooo.
Source: FreeBSD umask(1) Commands table (umask row); Solnix umask(1) SYNOPSIS (sh, csh, ksh, ksh93)
FreeBSD-S symbolic outputSolnix /usr/bin/umask, ksh and ksh93 accept -S for symbolic output. The sh and csh synopses show no options. The FreeBSD page documents no -S for any shell, so do not assume it works in FreeBSD sh or csh.
Source: Solnix umask(1) SYNOPSIS, OPTIONS (-S); FreeBSD umask(1) (no option text)
FreeBSDsymbolic masksOn Solnix, /usr/bin/umask, ksh and ksh93 accept a chmod(1)-style symbolic mask. The new mask is the complement of the result of applying it to the complement of the old mask. The FreeBSD page does not say whether its shells accept symbolic masks.
Source: Solnix umask(1) OPERANDS, DESCRIPTION (ksh, ksh93); FreeBSD umask(1)
FreeBSD+ and - in symbolic masksIn a Solnix symbolic mask, + clears the indicated bits in the mask and - sets them, relative to the current mask. This is the reverse of how the same operators act on a file's mode. The FreeBSD page does not document this.
Source: Solnix umask(1) OPERANDS (op characters + and -)
FreeBSDdefault output formatSolnix says the default output style is unspecified, but a later umask on the same system accepts it as a mask operand. Do not parse the output as a fixed octal format. The FreeBSD page does not describe its output.
Source: Solnix umask(1) OPTIONS (ksh), OPERANDS; FreeBSD umask(1)
FreeBSDexit statusSolnix umask exits 0 when the mask was changed or no operand was given, and above 0 on error. The FreeBSD page documents no exit status for umask.
Source: Solnix umask(1) EXIT STATUS; FreeBSD umask(1)
Linux, OpenBSD, NetBSDno counterpart pagesThe bundle includes no Linux, OpenBSD or NetBSD umask page. The manual text provided makes no claims about those systems.
Source: Bundle header (only a freebsd COUNTERPART listed)

Standards

  • POSIX: umask is a POSIX.1-2024 utility.
  • Solnix: Interface Stability is Standard for /usr/bin/umask, csh, ksh and sh, and External for ksh93.
  • FreeBSD: The FreeBSD page, an index of shell builtins, states no standards conformance for umask.

Writing portable scripts

  • To change the mask for a session or script, call the shell builtin directly. Running it as a subshell, nohup umask or find -exec umask does not affect the caller.
  • Set the mask as an octal value such as umask 022. It works in the Solnix sh and csh forms, and symbolic masks and -S are documented only for ksh, ksh93 and /usr/bin/umask.

Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.