chown(1b) on Solnix vs Linux and the BSDs
This page documents /usr/ucb/chown, the BSD-compatibility chown on Solnix. It takes owner[.group] and has only -f and -R. A default Solnix system runs /usr/bin/chown, whose page is not in the bundle. Linux and the BSDs have more options and use owner:group.
The manual pages
- Solnix: chown(1b) 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
The command on PATH is the illumos /usr/bin/chown. This page (chown(1b)) documents /usr/ucb/chown. /usr/xpg4/bin/chown is also shipped. The bundle contains the text only for the ucb variant, so the options of /usr/bin/chown and /usr/xpg4/bin/chown are not covered here. Run /usr/ucb/chown explicitly to get the behaviour described below.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| all four | owner and group separator | Solnix /usr/ucb/chown documents owner[.group], with a dot. Linux, FreeBSD, OpenBSD and NetBSD document owner[:group], with a colon. OpenBSD says the dot still works for compatibility. FreeBSD and NetBSD say the colon replaced the dot so names can contain a dot.Source: Solnix chown(1b) SYNOPSIS; Linux chown(1) SYNOPSIS; FreeBSD chown(8) COMPATIBILITY; OpenBSD chown(8) STANDARDS; NetBSD chown(8) COMPATIBILITY |
| all four | group-only form | The Linux, FreeBSD, OpenBSD and NetBSD synopses accept a bare :group operand to change only the group. The Solnix synopsis requires owner and does not document a group-only form. Source: Solnix chown(1b) SYNOPSIS; Linux chown(1) DESCRIPTION; FreeBSD chown(8) SYNOPSIS; OpenBSD chown(8) SYNOPSIS; NetBSD chown(8) SYNOPSIS |
| all four | symlinks with -R | Solnix -R changes the ownership of symbolic links it meets and does not traverse them. There is no -H, -L or -P. The other four systems offer -H, -L and -P and default to -P (no symlinks followed during traversal).Source: Solnix chown(1b) -R; Linux chown(1) -H, -L, -P; FreeBSD chown(8) -P; OpenBSD chown(8) -R; NetBSD chown(8) -P |
| all four | -h missing | Solnix /usr/ucb/chown has no -h. Linux (--dereference is the default), FreeBSD, OpenBSD and NetBSD use -h to change a symlink itself. On OpenBSD, -h and -R are mutually exclusive. On NetBSD, -L and -h cannot be combined.Source: Solnix chown(1b) SYNOPSIS; Linux chown(1) -h, --dereference; FreeBSD chown(8) -h; OpenBSD chown(8) -h; NetBSD chown(8) -h |
| FreeBSD, NetBSD | -f and exit status | On Solnix, -f means do not report errors. FreeBSD and NetBSD -f also stops failures from changing the exit status. The Solnix page has no EXIT STATUS section. Linux -f suppresses most error messages.Source: Solnix chown(1b) -f; FreeBSD chown(8) -f; NetBSD chown(8) -f; Linux chown(1) -f |
| Linux, FreeBSD, NetBSD | verbose and extra options | Solnix has only -f and -R. Linux has -c, -v, --from, --reference and --preserve-root. FreeBSD has -v and -x. NetBSD has -d, -v and --reference. OpenBSD has -h plus the traversal flags only.Source: Solnix chown(1b) SYNOPSIS; Linux chown(1) OPTIONS; FreeBSD chown(8) SYNOPSIS; NetBSD chown(8) SYNOPSIS; OpenBSD chown(8) SYNOPSIS |
| FreeBSD, OpenBSD, NetBSD | who may change ownership | Solnix says the default is super-user only, but {_POSIX_CHOWN_RESTRICTED} and the privileges PRIV_FILE_CHOWN and PRIV_FILE_CHOWN_SELF also affect it. FreeBSD, OpenBSD and NetBSD say only the super-user may change the owner. OpenBSD notes that some non-BSD systems let the file owner do it. Source: Solnix chown(1b) DESCRIPTION; FreeBSD chown(8) DESCRIPTION; OpenBSD chown(8) DESCRIPTION, STANDARDS; NetBSD chown(8) DESCRIPTION |
| OpenBSD, NetBSD | set-user-ID bits | OpenBSD chown clears the set-user-ID and set-group-ID bits by default. NetBSD does so unless run by the super-user. The Solnix page does not say whether these bits are cleared. Source: OpenBSD chown(8) DESCRIPTION; NetBSD chown(8) DESCRIPTION; Solnix chown(1b) DESCRIPTION |
| FreeBSD, OpenBSD, NetBSD | numeric names | Solnix accepts a decimal UID or a login name, and a decimal GID or a group name. FreeBSD and OpenBSD use the operand as a name if it is also a number. NetBSD looks up names first and lets a leading # force a number. Source: Solnix chown(1b) DESCRIPTION; FreeBSD chown(8) DESCRIPTION; OpenBSD chown(8) DESCRIPTION; NetBSD chown(8) DESCRIPTION |
| FreeBSD | SIGINFO | FreeBSD chown prints the current file and its old and new owner and group on SIGINFO. The Solnix page does not document this. Source: FreeBSD chown(8) DESCRIPTION; Solnix chown(1b) |
Standards
- POSIX: chown is a POSIX.1-2024 utility.
- Solnix: The chown(1b) page has no STANDARDS section. It refers to largefile(7) for files of 2 Gbyte or more and to privileges(7).
- FreeBSD: The chown utility is expected to be IEEE Std 1003.2 (“POSIX.2”) compliant.
-vand-xare non-standard. - OpenBSD: The chown utility is compliant with the specification. Specifying group without owner is an extension.
- NetBSD: The chown command is expected to be POSIX 1003.2 compliant.
-v,-dand the use of “#” to force a numeric lookup are extensions to IEEE Std 1003.2 (“POSIX.2”).
Writing portable scripts
- Use only
-Rand-f, and write the operand as owner:group, when you need the same script on Linux, the BSDs and Solnix. Do not rely on the dot separator,-h,-vor-H/-L/-P. - On Solnix, remember that bare chown runs
/usr/bin/chown, not the/usr/ucbvariant this page documents. Call the full path if you depend on the dot syntax.
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.