Tested Templates & Toolstested before it ships

● Server & Claude Code

status=216/GROUP means the group does not exist

✓ ReproducedUbuntu 24.04.5 · systemd 255.42026-10-19
systemd

On a Type=simple unit, systemctl start can exit 0 while the unit is failed. I hit that on systemd 255.4 on 2026-10-19 with a Group= name getent group does not find, and ExecStart=/bin/true. systemd-analyze verify exited 0 and printed nothing. The journal said Failed to determine group credentials: No such process, then status=216/GROUP. ExecMainStatus=216, Result=exit-code. The shell printed nothing. The units lived under /run and were removed. The remote-control unit that was already running stayed active. I did not start it.

216 is a group. 217 is a user.

What the unit hadverifysystemctl startResult
Group= set to a name getent group does not find. Default Type=simple.Exit 0. No output.Exit 0. No output.status=216/GROUP. Journal: Failed to determine group credentials: No such process.
Group=59999. getent group 59999 prints nothing.Exit 0. No output.Exit 0.Same journal sentence. status=216/GROUP.
Type=oneshot and the same missing group name.Exit 0. No output.Exit 1. The shell said the control process exited with an error code.ExecMainStatus=216.
User=59999. getent passwd 59999 prints nothing.Exit 0. No output.Exit 0.status=217/USER. Journal: Failed to determine user credentials: No such process.
Both User= and Group= set to names that are not in the databases.Exit 0. No output.Exit 0.status=217/USER only. The journal did not mention the group.
DynamicUser=yes. Also with a User= name that is not in passwd. Also with a Group= name that is not in the group database.Exit 0. No output.Exit 0.Result=success. Journal: Deactivated successfully.

A missing user by name, and the words "No such process" rather than "no such user", are on the status=203/EXEC note. A numeric id that getent cannot find is the same status as a missing name. DynamicUser=yes is not a missing account. Those three runs started /bin/true and finished.

status=200/CHDIR is three different sentences

The 203 note's missing directory said No such file or directory. These are the other results from the same systemd, still status=200/CHDIR unless the path is not absolute or it has a leading -.

What the unit hadverifyStart
User=nobody, WorkingDirectory=/root, ExecStart=/bin/trueExit 0. Special user nobody configured, this is not safe!Changing to the requested working directory failed: Permission denied, then status=200/CHDIR. systemctl start exited 0.
WorkingDirectory=/bin/trueExit 0. No output.Not a directory, then status=200/CHDIR. systemctl start exited 0.
WorkingDirectory= set to a relative pathExit 1. WorkingDirectory= path is not absoluteThe start command exited 1. Result=success, ExecMainStatus=0, ActiveState=inactive. Not 200.
WorkingDirectory=-/root and User=nobodyExit 0, plus the nobody warningDeactivated successfully. The journal did not say permission denied.
WorkingDirectory=-/bin/trueExit 0. No output.Deactivated successfully. The journal did not say Not a directory.
WorkingDirectory=- plus a relative pathExit 0. path is not absolute, ignoringThe unit started. The relative path was not a fatal error.

User=nobody with Group=nogroup and ExecStart=/bin/true also drew the nobody warning, and then Deactivated successfully. The warning is not the failure. I used nobody because that account already existed. The warning says not to.

When 203 does say permission denied

The mode-644 file on the 203 note had no User=. That journal did not say permission denied. Two later runs did not match that sentence.

A mode-700 root-owned copy of /bin/true, with User=nobody, logged Failed to execute that path, Permission denied, then status=203/EXEC. verify exited 0 and printed the nobody warning. systemctl start exited 0.

The same file with DynamicUser=yes and no User= was also status=203/EXEC. verify exited 0 and printed nothing. The journal did not say permission denied. systemctl start exited 0.

ExecStart=/tmp, which is a directory, made verify exit 1 and say Command /tmp is not executable: Is a directory. The journal said status=203/EXEC and did not say Is a directory. systemctl start exited 0.

What the local check flags

The browser paste flags a bare ExecStart and a path that is not absolute. It cannot see this machine. The local script can. Run it on the host that will start the unit. A missing path on a laptop is not a missing path on the server.

It flags a bare name (systemd-execstart-bare), a relative ExecStart, a missing absolute path, a directory used as ExecStart, a file the service account cannot execute, a missing User= (systemd-user-missing), a missing Group= (systemd-group-missing), and a WorkingDirectory= that is relative, missing, not a directory, or not searchable by that account. It does not flag User= or Group= when DynamicUser=yes. It does not flag a WorkingDirectory= that starts with -. It does not create the account. It does not print the file.

After a start, read Result and ExecMainStatus. A zero exit from systemctl start on a Type=simple unit was 216, 217, 200, and 203 in the runs above.

Once the account and the path are real, the remote-control unit is the Agent Ops Kit ($19). The file does not create a group that is not in the group database. The same unit is on the kit page. The remote-control note is where that unit is written out.

Need a VPS to try this on? Everything here was tested on a DigitalOcean Ubuntu 24.04 droplet: get one on DigitalOcean. The DigitalOcean link pays the site owner account credit, not cash. Any other affiliate link may pay a commission. Your price is the same. Disclosure.