chown(1) on Solnix vs Linux and the BSDs

On Solnix, chown is the illumos chown at /usr/bin/chown. It has -s, which takes Windows SIDs, and no -v, -c, -x, -d or --reference. By default only the super-user can change a file's owner, because {_POSIX_CHOWN_RESTRICTED} is on, and the synopsis shows no bare :group form.

What Solnix runs

A default Solnix system runs the illumos /usr/bin/chown. /usr/xpg4/bin/chown and /usr/ucb/chown are also shipped. The page says /usr/xpg4/bin/chown and /usr/bin/chown now behave the same way. It does not describe /usr/ucb/chown.

Differences

Compared withTopicWhat differs
all four-s (SID strings)Solnix chown -s treats owner and group as Windows SID strings and needs a file system that stores SIDs, such as ZFS. None of the Linux, FreeBSD, OpenBSD or NetBSD pages document -s.
Source: Solnix chown(1) SYNOPSIS, -s; Linux chown(1) OPTIONS; FreeBSD/OpenBSD/NetBSD chown(8) SYNOPSIS
Linux, FreeBSD, NetBSD-v and verbose outputSolnix chown has no -v. Linux, FreeBSD and NetBSD accept -v to show files as they are processed. Linux also has -c, which reports only actual changes. OpenBSD has no -v either.
Source: Solnix chown(1) OPTIONS; Linux chown(1) -v, -c; FreeBSD chown(8) -v; NetBSD chown(8) -v
Linux, NetBSD--referenceSolnix chown cannot copy ownership from a reference file. Linux and NetBSD accept --reference=rfile in place of an owner operand.
Source: Linux chown(1) SYNOPSIS, --reference; NetBSD chown(8) SYNOPSIS, --reference; Solnix chown(1) SYNOPSIS
Linux, FreeBSD, NetBSDother extra optionsThese options do not exist on Solnix. Linux has --from, --preserve-root and --no-preserve-root. FreeBSD has -x, which does not cross mount points. NetBSD has -d, which skips files that already have the wanted values.
Source: Linux chown(1) --from, --preserve-root; FreeBSD chown(8) -x; NetBSD chown(8) -d; Solnix chown(1) OPTIONS
all fouroperand forms (:group, owner:)The Solnix synopsis shows only owner[:group]. FreeBSD, OpenBSD and NetBSD document a separate :group form with no owner. Linux also accepts owner: (login group) and :group. The Solnix page does not document either.
Source: Solnix chown(1) SYNOPSIS, OPERANDS; FreeBSD/OpenBSD/NetBSD chown(8) SYNOPSIS; Linux chown(1) DESCRIPTION
FreeBSD, OpenBSD, NetBSDwho may change the ownerSolnix lets the file's owner change the owner ID only if {_POSIX_CHOWN_RESTRICTED} is off. It is on by default, and set by 'set rstchown' in /etc/system. FreeBSD, OpenBSD and NetBSD say only the super-user can alter ownership.
Source: Solnix chown(1) DESCRIPTION (rstchown); FreeBSD chown(8) DESCRIPTION; OpenBSD chown(8) DESCRIPTION; NetBSD chown(8) DESCRIPTION
OpenBSD, NetBSDset-ID bit clearingThe Solnix page says the set-user-ID bit is cleared when a non-super-user runs chown. OpenBSD clears set-user-ID and set-group-ID by default. NetBSD clears both unless run by the super-user. The Solnix page does not mention set-group-ID.
Source: Solnix chown(1) DESCRIPTION; OpenBSD chown(8) DESCRIPTION; NetBSD chown(8) DESCRIPTION
FreeBSD, NetBSDsymlink arguments without -hThe FreeBSD and NetBSD pages say symbolic links named as arguments are silently left unchanged unless -h is used. The Solnix and Linux pages say that without -h the file the link refers to is changed.
Source: FreeBSD chown(8) DESCRIPTION; NetBSD chown(8) DESCRIPTION; Solnix chown(1) -h; Linux chown(1) --dereference
OpenBSD, NetBSD-h combined with -R or -LOpenBSD says -h and -R are mutually exclusive. NetBSD says -L cannot be used with -h. The Solnix page states no such restriction.
Source: OpenBSD chown(8) -h; NetBSD chown(8) DESCRIPTION; Solnix chown(1) -h, -R
FreeBSD, OpenBSD, NetBSD-f and exit statusOn FreeBSD and NetBSD, -f suppresses error reports and also stops failures from changing the exit status. Solnix says only that -f does not report errors, and says nothing about exit status. The OpenBSD page has no -f.
Source: Solnix chown(1) -f; FreeBSD chown(8) -f; NetBSD chown(8) -f; OpenBSD chown(8) SYNOPSIS
OpenBSD, NetBSDnumeric names and the dot separatorOn Solnix, a numeric owner that is also a user name resolves to that name's ID. NetBSD does the lookup by name first and accepts a leading # to force a number. OpenBSD says the old dot separator is still supported. Solnix documents only the colon.
Source: Solnix chown(1) OPERANDS; NetBSD chown(8) DESCRIPTION (#); OpenBSD chown(8) STANDARDS

Standards

  • POSIX: chown is a POSIX.1-2024 utility.
  • Solnix: Interface Stability: Committed. Standard: see standards(7). CSI-enabled except for the owner and group names.
  • FreeBSD: The chown utility is expected to be IEEE Std 1003.2 (“POSIX.2”) compliant. The -v and -x options are non-standard.
  • OpenBSD: The chown utility is compliant with the specification. Specifying a group without an owner is an extension to that specification.
  • NetBSD: The chown command is expected to be POSIX 1003.2 compliant. The -v and -d options and the use of “#” to force a numeric lookup are extensions to IEEE Std 1003.2 (“POSIX.2”).
  • Linux: The page documents the GNU version of chown and has no STANDARDS section.

Writing portable scripts

  • Stick to chown [-fhR] [-H|-L|-P] owner:group file. Avoid -v, -c, -x, -d, -s, --from and --reference, which exist on only some systems.
  • Always give both owner and group, or use chgrp for a group-only change, and do not combine -h with -R, which OpenBSD rejects.

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.