projadd(8) on Solnix vs Linux and the BSDs
projadd is the illumos command at /usr/sbin/projadd that adds a project entry to /etc/project. The counterpart useradd(8) creates user accounts, not projects. The same letters (-G, -K, -U, -f, -c, -o, -p) mean different things in the two commands.
The manual pages
- Solnix: projadd(8) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: useradd(8) shadow-4.19.4 (different command, similar job)
What Solnix runs
A default Solnix system runs the illumos projadd at /usr/sbin/projadd. No other variants are shipped. The page is published in pkgs.solnix.illumos-world-man. Related commands named on the page: projmod(8), projdel(8) and projects(1). The bundle has no BSD counterpart pages, so only Linux useradd(8) is compared.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| Linux | what is created | projadd adds a project entry to /etc/project, and the entry is usable immediately when the files backend is in use. Linux useradd creates a user account and may create a home directory. The Linux bundle shows no project concept.Source: Solnix projadd(8) DESCRIPTION; Linux useradd(8) DESCRIPTION |
| Linux | -K meaning | Solnix -K name[=value,...] sets a project attribute, such as a resource control, and can be repeated. Linux -K KEY=VALUE overrides /etc/login.defs defaults such as UID_MIN or PASS_MAX_DAYS for that one account.Source: Solnix projadd(8) -K; Linux useradd(8) -K, --key |
| Linux | -U meaning | Solnix -U takes a comma-separated list of users for the project. On Linux, -U (--user-group) is a switch, and the useradd(8) text shown says it creates a group with the same name as the login. A Linux script using -U breaks on Solnix.Source: Solnix projadd(8) -U; Linux useradd(8) -g, --gid (mentions -U/--user-group) |
| Linux | -G meaning | Solnix -G sets the group list for the project. Linux -G lists supplementary groups the user is a member of. The syntax is similar, but the groups attach to different objects.Source: Solnix projadd(8) -G; Linux useradd(8) -G, --groups |
| Linux | -f meaning | Solnix -f filename selects which project file to modify; the default is /etc/project. Linux -f (--inactive) sets the number of days after password expiry before the account is locked.Source: Solnix projadd(8) -f; Linux useradd(8) -f, --inactive |
| Linux | -n and syntax check | Solnix -n only checks the format of the existing project file and the modifications. It does not check user names, group names or resources. The Linux useradd(8) text has no -n, and its -N option is --no-user-group.Source: Solnix projadd(8) -n; Linux useradd(8) OPTIONS flag list (-N) |
| Linux | project ID allocation | Without -p, projadd uses the next number above the highest assigned projid. With IDs 100, 105 and 200 in use, the next is 201. IDs 0-99 are reserved. -o allows a non-unique ID. Linux useradd(8) as shown describes no project IDs.Source: Solnix projadd(8) -p, -o; Linux useradd(8) OPTIONS |
| Linux | name rules and local-only scope | Project names use letters, digits, _ and -. The first character must be a letter, and a period is reserved. projadd changes only the local /etc/project, not entries from a network name service. The Linux page shown has --badname to allow non-conforming names.Source: Solnix projadd(8) OPERANDS, NOTES; Linux useradd(8) --badname |
| Linux | defaults and home directory | The Solnix projadd page describes no -D defaults mode, no defaults file and no home directory handling. Linux useradd -D shows or changes defaults, and -m creates a home directory with files copied from the skeleton directory.Source: Solnix projadd(8) SYNOPSIS, OPTIONS; Linux useradd(8) SYNOPSIS, -D, -m, -k |
| Linux | exit status | projadd returns specific codes: 2 syntax, 3 bad option argument, 4 projid in use, 5 error in project files, 6 project/group/user/resource does not exist, 9 project already in use, 10 cannot update /etc/project. The Linux exit codes are not in the trimmed text.Source: Solnix projadd(8) EXIT STATUS; Linux useradd(8) (trimmed, no EXIT STATUS shown) |
Everyday tasks
| Task | Solnix | Linux |
|---|---|---|
| add a project | projadd project | — |
| add a user account | useradd (see useradd(8)) | useradd LOGIN |
| check project file syntax only | projadd -n | — |
| add a user to a project | projadd -U user[,user]... project | — |
Standards
- POSIX: projadd is not a POSIX.1-2024 utility.
- Solnix: Interface Stability: invocation is evolving; human readable output is unstable.
Writing portable scripts
- Do not port projadd calls to other systems: the bundle shows no equivalent on Linux, and the shared flag letters
-G,-K,-Uand-fmean different things in useradd. - On Solnix, check the exit status (4 for projid in use, 9 for project already in use) rather than parsing output, which the page calls unstable.
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.