The syntax to create users is inspired by the makedev syntax, above, but is specific to Buildroot.
The syntax for adding a user is a space-separated list of fields, one user per line; the fields are:
username | uid | group | gid | password | home | shell | groups | comment |
Where:
username is the desired user name (aka login name) for the user.
It can not be root, and must be unique. If set to -, then just a
group will be created.
uid is the desired UID for the user. It must be unique, and not
0. If set to -1 or -2, then a unique UID will be computed by
Buildroot, with -1 denoting a system UID from [100…999] and -2
denoting a user UID from [1000…1999].
group is the desired name for the user’s main group. It can not
be root. If the group does not exist, it will be created.
gid is the desired GID for the user’s main group. It must be unique,
and not 0. If set to -1 or -2, and the group does not already
exist, then a unique GID will be computed by Buildroot, with -1
denoting a system GID from [100…999] and -2 denoting a user GID
from [1000…1999].
password is the crypt(3)-encoded password. If prefixed with !,
then login is disabled. If prefixed with =, then it is interpreted
as clear-text, and will be crypt-encoded (using MD5). If prefixed with
!=, then the password will be crypt-encoded (using MD5) and login
will be disabled. If set to *, then login is not allowed. If set to
-, then no password value will be set.
home is the desired home directory for the user. If set to -, no
home directory will be created, and the user’s home will be /.
Explicitly setting home to / is not allowed.
shell is the desired shell for the user. If set to -, then
/bin/false is set as the user’s shell.
groups is the comma-separated list of additional groups the user
should be part of. If set to -, then the user will be a member of
no additional group. Missing groups will be created with an arbitrary
gid.
comment (aka GECOS
field) is an almost-free-form text.
There are a few restrictions on the content of each field:
comment, all fields are mandatory.
comment, fields may not contain spaces.
:).
If home is not -, then the home directory, and all files below,
will belong to the user and its main group.
Examples:
foo -1 bar -1 !=blabla /home/foo /bin/sh alpha,bravo Foo user
This will create this user:
username (aka login name) is: foo
uid is computed by Buildroot
group is: bar
gid is computed by Buildroot
password is: blabla, will be crypt(3)-encoded, and login is disabled.
home is: /home/foo
shell is: /bin/sh
foo is also a member of groups: alpha and bravo
comment is: Foo user
test 8000 wheel -1 = - /bin/sh - Test user
This will create this user:
username (aka login name) is: test
uid is : 8000
group is: wheel
gid is computed by Buildroot, and will use the value defined in the rootfs skeleton
password is empty (aka no password).
home is / but will not belong to test
shell is: /bin/sh
test is not a member of any additional groups
comment is: Test user
When updating buildroot or when packages are added or removed to/from the configuration, it is possible that the automatic UIDs and GIDs are changed. This can be a problem if persistent files were created with that user or group: after upgrade, they will suddenly have a different owner.
Therefore, it is advisable to perpetuate the automatic IDs. This can be done by adding a users table with the generated IDs. It is only needed to do this for UIDs that actually create persistent files, e.g. database.