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.