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.
The manual pages
- Solnix: chown(1) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: chown(1) coreutils-full-9.11
- FreeBSD: chown(8) 15.1-RELEASE
- OpenBSD: chown(8) 8.0
- NetBSD: chown(8) 11.0
- Standard: POSIX.1-2024 (IEEE Std 1003.1-2024),
chown
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 with | Topic | What 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 output | Solnix 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 | --reference | Solnix 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, NetBSD | other extra options | These 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 four | operand 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, NetBSD | who may change the owner | Solnix 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, NetBSD | set-ID bit clearing | The 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, NetBSD | symlink arguments without -h | The 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 -L | OpenBSD 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 status | On 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, NetBSD | numeric names and the dot separator | On 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
-vand-xoptions 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
-vand-doptions 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,--fromand--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
-hwith-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.