STANNIX Community


Manual: addgroup

ADDUSER(8)					   System Manager's Manual					  ADDUSER(8)

NAME
       adduser, addgroup - add or manipulate users or groups

SYNOPSIS
       adduser [--add-extra-groups] [--allow-all-names] [--allow-bad-names] [--comment comment] [--conf file] [--debug]
	       [--disabled-login] [--disabled-password] [--encrypt-home] [--firstgid id] [--firstuid id] [--gid id]
	       [--home dir] [--ingroup group] [--lastgid id] [--lastuid id] [--no-create-home] [--shell shell] [--quiet]
	       [--uid id] [--verbose] [--stdoutmsglevel prio] [--stderrmsglevel prio] [--logmsglevel prio] user

       adduser --system [--comment comment] [--conf file] [--debug] [--gid id] [--group] [--home dir] [--ingroup group]
	       [--no-create-home] [--shell shell] [--uid id] [--quiet] [--verbose] [--stdoutmsglevel prio]
	       [--stderrmsglevel prio] [--logmsglevel prio] user

       adduser --group [--conf file] [--debug] [--firstgid id] [--gid ID] [--lastgid id] [--quiet] [--verbose]
	       [--stdoutmsglevel prio] [--stderrmsglevel prio] [--logmsglevel prio] group

       addgroup [--conf file] [--debug] [--firstgid id] [--gid ID] [--lastgid id] [--quiet] [--verbose]
		[--stdoutmsglevel prio] [--stderrmsglevel prio] [--logmsglevel prio] group

       addgroup --system [--gid id] [--conf file] [--quiet] [--verbose] [--stdoutmsglevel prio] [--stderrmsglevel prio]
		[--logmsglevel prio] group

       adduser [--conf file] [--debug] [--quiet] [--verbose] [--stdoutmsglevel prio] [--stderrmsglevel prio]
	       [--logmsglevel prio] user group

       adduser --help

       adduser --version

DESCRIPTION
       adduser	and addgroup add users and groups to the system according to command line options and configuration informa‐
       tion in /etc/adduser.conf.  They are more Debian specific front ends to the useradd, groupadd and  usermod  programs,
       which  are  more	 distribution agnostic.	 adduser and addgroup by default choose Debian policy conformant UID and GID
       values, create a home directory with skeletal configuration, run a custom script, and have other features.

       adduser and addgroup are intended as a policy layer, making it easier for package maintainers and  local	 administra‐
       tors  to create local system accounts in the way Debian expects them to be created, taking the burden to adapt to the
       probably changing specifications of Debian policy.  adduser --system takes special attention on just needing a single
       call in the package maintainer scripts without any conditional wrappers, error suppression or other scaffolding.

       adduser honors the distinction between dynamically allocated system users and groups and dynamically  allocated	user
       accounts that is documented in Debian Policy, Chapter 9.2.2.

       For a full list and explanations of all options, see the OPTIONS section.

       adduser and addgroup can be run in one of five modes:

   Add a regular (non-system) user
       If  called with one non-option argument and without the --system or --group options, adduser will add a regular user,
       that means a dynamically allocated user account in the sense of Debian Policy.  This is commonly referred to  in	 ad‐
       duser as a non-system user.

       adduser	will  choose the first available UID from the range specified by FIRST_UID and LAST_UID in the configuration
       file.  The range may be overridden with the --firstuid and --lastuid options.  Finally, the UID can be set fully man‐
       ually with the --uid option.

       By default, each user is given a corresponding group with the same name.	 This is commonly called Usergroups and	 al‐
       lows  group  writable  directories to be easily maintained by placing the appropriate users in the new group, setting
       the set-group-ID bit in the directory, and ensuring that all users use a umask of 002.

       For a usergroup, adduser will choose the first available GID from the range specified by FIRST_GID  and	LAST_GID  in
       the configuration file.	The range may be overridden with the --firstgid and --lastgid options.	Finally, the GID can
       be set fully manually with the --gid option.

       The interaction between USERS_GID, USERS_GROUP, and USERGROUPS is explained in detail in adduser.conf(5).

       The  new user's primary group can also be overridden from the command line with the --gid or --ingroup options to set
       the group by id or name, respectively.  Also, users can be added to one or more supplemental groups  defined  as	 EX‐
       TRA_GROUPS either by setting ADD_EXTRA_GROUPS to 1 in the configuration file, or by passing --add-extra-groups on the
       command line.

       adduser	will  copy  files  from /etc/skel into the home directory and prompt for the comment field and a password if
       those functions have not been turned off / overridden from the command line.

       UID, comment, home directory and shell might be pre-determined with the UID_POOL and GID_POOL option,  documented  in
       adduser.conf(5).

       To  set	up an encrypted home directory for the new user, add the --encrypt-home option.	 For more information, refer
       to the -b option of ecryptfs-setup-private(1).

   Add a system user
       If called with one non-option argument and the --system option, adduser will add a dynamically allocated system user,
       often abbreviated as system user in the context of the adduser package.

       adduser will choose the first available UID from the range specified by FIRST_SYSTEM_UID and LAST_SYSTEM_UID  in	 the
       configuration file.  This can be overridden with the --uid option.

       By  default,  system  users  are	 assigned  nogroup as primary group.  To assign an already existing group as primary
       group, use the --gid or --ingroup options.  If the --group option is given and the identically named group  does	 not
       already exist, it is created with the same ID.

       If  no home directory is specified, the default home directory for a new system user is /nonexistent.  This directory
       should never exist on any Debian system, and adduser will never create it automatically.

       If a home directory is specified with the --home option, and the directory does already exist (for  example,  if	 the
       package	ships  with  files in that directory), adduser silently does not set the owner of the directory to the newly
       created user.  Setting the owner might override a decision of the local admin, and reporting the fact would break ad‐
       duser's silence during package installation.  If you use adduser --home in your	package's  maintainer  scripts,	 you
       might want to issue an explicit recursive chown for the home directory after the call to adduser.

       Unless  a  shell	 is  explicitly	 set  with  the	 --shell  option,  the	new  system  user will have the shell set to
       /usr/sbin/nologin.  adduser --system does not set a password for the new account.  Skeletal configuration  files	 are
       not copied.

       Other  options  will behave as for the creation of a regular user.  The files referenced by UID_POOL and GID_POOL are
       also honored.

   Add a group
       If adduser is called with the --group option and without the --system option, or addgroup is called  respectively,  a
       user group will be added.

       A  dynamically  allocated system group, often abbreviated as system group in the context of the adduser package, will
       be created if adduser --group or addgroup are called with the --system option.

       A GID will be chosen from the respective range specified for GIDs in the	 configuration	file  (FIRST_GID,  LAST_GID,
       FIRST_SYSTEM_GID, LAST_SYSTEM_GID).  To override that mechanism, you can give the GID using the --gid option.

       For  non-system	groups,	 the  range  specified	in  the configuration file may be overridden with the --firstgid and
       --lastgid options.

       The group is created with no members.

   Add an existing user to an existing group
       If called with two non-option arguments, adduser will add an existing user to an existing group.

OPTIONS
       Different modes of adduser allow different options.  If no valid modes are listed for a option, it is accepted in all
       modes.

       Short versions for certain options may exist for historical reasons.  They are going to stay supported, but  are	 re‐
       moved from the documentation.  Users are advised to migrate to the long version of options.

       --add-extra-groups
	      Add  new	user  to  extra	 groups	 defined in the configuration files' EXTRA_GROUPS setting.  The old spelling
	      --add_extra_groups is deprecated and will be supported in Debian bookworm only.  Valid modes: adduser, adduser
	      --system.

       --allow-all-names
	      Allow any user- and groupname which is supported by the underlying useradd(8).  See VALID NAMES below.   Valid
	      modes: adduser, adduser --system, addgroup, addgroup --system.

       --allow-bad-names
	      Disable  NAME_REGEX  and	SYS_NAME_REGEX	check of names.	 Only a weaker check for validity of the name is ap‐
	      plied.  See VALID NAMES below.  Valid modes: adduser, adduser --system, addgroup, addgroup --system.

       --comment comment
	      Set the comment field for the new entry generated.  adduser will not ask for the information if this option is
	      given.  This field is also known under the name GECOS field and contains information that is used by the	fin‐
	      ger(1)  command.	 This  used  to	 be the --gecos option, which is deprecated and will be removed after Debian
	      bookworm.	 Valid modes: adduser, adduser --system.

       --conf file
	      Use file instead of /etc/adduser.conf.  Multiple --conf options can be given.

       --debug
	      Synonymous to --stdoutmsglevel=debug.  Deprecated.

       --disabled-login
       --disabled-password
	      Do not run passwd(1) to set a password.  In most situations, logins are still possible though (for example us‐
	      ing SSH keys or through PAM) for reasons that are beyond adduser's scope.	 --disabled-login will	additionally
	      set the shell to /usr/sbin/nologin.  Valid mode: adduser.

       --firstuid ID
       --lastuid ID
       --firstgid ID
       --lastgid ID
	      Override	the first UID / last UID / first GID / last GID in the range that the uid is chosen from (FIRST_UID,
	      LAST_UID, FIRST_GID and LAST_GID, FIRST_SYSTEM_UID, LAST_SYSTEM_UID, FIRST_SYSTEM_GID and	 LAST_SYSTEM_GID  in
	      the  configuration  file).   If  a group is created as a usergroup, --firstgid and --lastgid are ignored.	 The
	      group gets the same ID as the user.  Valid modes: adduser, adduser --system, for --firstgid and --lastgid also
	      addgroup.

       --force-badname
       --allow-badname
	      These are the deprecated forms of --allow-bad-names.  They will be removed during the release cycle of  Debian
	      13.

       --extrausers
	      Uses extra users as the database.

       --gid GID
	      When  creating  a	 group, this option sets the group ID number of the new group to GID.  When creating a user,
	      this option sets the primary group ID number of the new user to GID.  Valid modes: adduser, adduser  --system,
	      addgroup, addgroup --system.

       --group
	      Using this option in adduser --system indicates that the new user should get an identically named group as its
	      primary  group.	If that identically named group is not already present, it is created.	If not combined with
	      --system, a group with the given name is created.	 The latter is the default action if the program is  invoked
	      as addgroup.  Valid modes: adduser --system, addgroup, addgroup --system.

       --help Display brief instructions.

       --home dir
	      Use  dir as the user's home directory, rather than the default specified by the configuration file (or /nonex‐
	      istent if adduser --system is used).  If the directory does not exist, it is created.  Valid  modes:  adduser,
	      adduser --system.

       --ingroup GROUP
	      When  creating  a	 user,	this option sets the primary group ID number of the new user to the GID of the named
	      group.  Unlike with the --gid option, the group is specified here by name rather than by	numeric	 ID  number.
	      The group must already exist.  Valid modes: adduser, adduser --system.

       --lastuid ID
       --lastgid ID
	      Override the last UID / last GID.	 See --firstuid.

       --no-create-home
	      Do  not  create  a  home directory for the new user.  Note that the pathname for the new user's home directory
	      will still be entered in the appropriate field in the /etc/passwd file.  The use of this option does not imply
	      that this field should be empty.	Rather, it indicates to adduser that some other mechanism will be  responsi‐
	      ble for initializing the new user's home directory.  Valid modes: adduser, adduser --system.

       --quiet
	      Synonymous to --stdoutmsglevel=warn.  Deprecated.

       --shell shell
	      Use  shell  as  the  user's  login  shell,  rather  than	the  default specified by the configuration file (or
	      /usr/sbin/nologin if adduser --system is used).  Valid modes: adduser, adduser --system.

       --system
	      Normally, adduser creates dynamically allocated user accounts and groups as defined in Debian Policy,  Chapter
	      9.2.2.   With  this option, adduser creates a dynamically allocated system user and group and changes its mode
	      respectively.  Valid modes: adduser, addgroup.

       --uid ID
	      Force the new userid to be the given number.  adduser will fail if the userid is already taken.  Valid  modes:
	      adduser, adduser --system.

       --verbose
	      Synonymous to --stdoutmsglevel=info.  Deprecated.

       --stdoutmsglevel prio
       --stderrmsglevel prio
       --logmsglevel prio
	      Minimum  priority	 for messages logged to syslog/journal and the console, respectively.  Values are trace, de‐
	      bug, info, warn, err, and fatal.	Messages with the priority set here or higher get printed to the  respective
	      medium.	Messages  printed  to stderr are not repeated on stdout.  That allows the local admin to control ad‐
	      duser's chattiness on the console and in the log independently, keeping probably confusing information to	 it‐
	      self  while still leaving helpful information in the log.	 stdoutmsglevel, stderrmsglevel, and logmsglevel de‐
	      fault to warn, warn, info, respectively.

       -v , --version
	      Display version and copyright information.

VALID NAMES
       Historically, adduser(8) and addgroup(8) enforced conformity to IEEE Std 1003.1-2001, which allows only the following
       characters to appear in group- and usernames: letters, digits, underscores, periods, at signs (@)  and  dashes.	 The
       name  may not start with a dash or @.  The "$" sign is allowed at the end of usernames to allow typical Samba machine
       accounts.

       The default settings for NAME_REGEX and SYS_NAME_REGEX allow usernames to contain letters and digits, plus  dash	 (-)
       and underscore (_); the name must begin with a letter (or an underscore for system users).

       The  least restrictive policy, available by using the --allow-all-names option, simply makes the same checks as user‐
       add(8).	Please note that useradd's checks have become quite a bit more restrictive in Debian 13.

       Changing the default behavior can be used to create confusing or misleading names; use with caution.

LOGGING
       Adduser uses extensive and configurable logging to tailor its verbosity to the needs of the system administrator.

       Every message that adduser prints has a priority value assigned by the authors.	This priority can not be changed  at
       run time.  Available priority values are crit, error, warning, info, debug, and trace.

       If you find that a message has the wrong priority, please file a bug.

       Every  time a message is generated, the code decides whether to print the message to standard output, standard error,
       or syslog.  This is mainly and independently controlled by the configuration settings STDOUTMSGLEVEL, STDERRMSGLEVEL,
       and LOGMSGLEVEL.	 For testing purposes, these settings can be overridden on the command line.

       Only messages with a priority higher or equal to the respective message level are logged	 to  the  respective  output
       medium.	A message that was written to standard error is not written a second time to standard output.

EXIT VALUES
       0      Success: The user or group exists as specified.  This can have 2 causes: The user or group was created by this
	      call  to	adduser	 or  the user or group was already present on the system as specified before adduser was in‐
	      voked.  If adduser --system is invoked for a user already existing with the requested  or	 compatible  attrib‐
	      utes, it will also return 0.

       11     The object that adduser was asked to create does already exist.

       12     The object that adduser or deluser was asked to operate on does not exist.

       13     The  object  that adduser or deluser was asked to operate on does not have the properties that are required to
	      complete the operation: A user (a group) that was requested to be created as a system user  (group)  does	 al‐
	      ready  exist  and is not a system user (group), or a user (group) that was requested to be created with a cer‐
	      tain UID (GID) does already exist and has a different UID (GID), or a system user (group) that  was  requested
	      to be deleted does exist, but is not a system user (group).

       21     The UID (GID) that was explicitly requested for a new user (group) is already in use.

       22     There is no available UID (GID) in the requested range.

       23     There is no group with the requested GID for the primary group for a new user.

       31     The chosen name for a new user or a new group does not conform to the selected naming rules.

       32     The home directory of a new user must be an absolute path.

       33     useradd returned exit code 19 "invalid user or group name".  That means the user or group name chosen does not
	      fit useradd's restrictions and adduser cannot create the user.

       41     The group that was requested to be deleted is not empty.

       42     The user that was requested to be removed from a group is not a member in the first place.

       43     It is not possible to remove a user from its primary group, or no primary group selected for a new user by any
	      method.

       51     Incorrect number or order of command line parameters detected.

       52     Incompatible options set in configuration file.

       53     Mutually incompatible command line options detected.

       54     adduser and deluser invoked as non-root and thus cannot work.

       55     deluser will refuse to delete the root account.

       56     A	 function  was requested that needs more packages to be installed.  See Recommends: and Suggests: of the ad‐
	      duser package.

       61     Adduser was aborted for some reason and tried to roll back the changes that were done during execution.

       62     Internal adduser error.  This should not happen.	Please try to reproduce the issue and file a bug report.

       71     Error creating and handling the lock.

       72     Error accessing the configuration file(s).

       73     Error accessing a pool file.

       74     Error reading a pool file, syntax error in file.

       75     Error accessing auxiliary files.

       81     An executable that is needed by adduser or deluser cannot be found. Check your installation and dependencies.

       82     Executing an external command returned some unexpected error.

       83     An external command was terminated with a signal.

       84     A syscall terminated with unexpected error.

       Or for many other yet undocumented reasons which are printed to console then.  You may then consider  to	 increase  a
       log level to make adduser more verbose.

SECURITY
       adduser	needs  root  privileges and offers, via the --conf command line option to use different configuration files.
       Do not use sudo(8) or similar tools to give partial privileges to adduser with restricted  command  line	 parameters.
       This  is	 easy  to circumvent and might allow users to create arbitrary accounts.  If you want this, consider writing
       your own wrapper script and giving privileges to execute that script.

FILES
       /etc/adduser.conf
	      Default configuration file for adduser(8) and addgroup(8)

       /usr/local/sbin/adduser.local
	      Optional custom add-ons, see adduser.local(8)

NOTES
       Unfortunately, the term system account suffers from double use in Debian.  It both means an account  for	 the  actual
       Debian  system,	distinguishing itself from an application account which might exist in the user database of some ap‐
       plication running on Debian.  A system account in this definition has the potential to log in to the  actual  system,
       has  a UID, can be member in system groups, can own files and processes.	 Debian Policy, au contraire, in its Chapter
       9.2.2, makes a distinguishment of dynamically allocated system users and groups and dynamically	allocated  user	 ac‐
       counts, meaning in both cases special instances of system accounts.  Care must be taken to not confuse this terminol‐
       ogy.   Since adduser and deluser(8) never address application accounts and everything in this package concerns system
       accounts here, the usage of the terms user account and system account is actually not ambiguous	in  the	 context  of
       this package.  For clarity, this document uses the definition local system account or group if the distinction to ap‐
       plication accounts or accounts managed in a directory service is needed.

       adduser	used  to  have	the  vision to be the universal front end to the various directory services for creation and
       deletion of regular and system accounts in Debian since the 1990ies.  This vision has been abandoned as of 2022.	 The
       rationale behind this includes: that in practice, a small server system is not going to have write access to  an	 en‐
       terprise-wide  directory service anyway, that locally installed packages are hard to manage with centrally controlled
       system accounts, that enterprise directory services have their own management processes anyway and that	the  person‐
       power  of the adduser team is unlikely to be ever strong enough to write and maintain support for the plethora of di‐
       rectory services that need support.

       adduser will constrict itself to being a policy layer for the management of local system accounts,  using  the  tools
       from the passwd package for the actual work.

BUGS
       Inconsistent use of terminology around the term system account in docs and code is a bug.  Please report this and al‐
       low us to improve our docs.

       adduser	takes special attention to be directly usable in Debian maintainer scripts without conditional wrappers, er‐
       ror suppression and other scaffolding.  The only thing that the package maintainer should need to code is a check for
       the presence of the executable in the postrm script.  The adduser maintainers consider the need for additional  scaf‐
       folding	a bug and encourage their fellow Debian package maintainers to file bugs against the adduser package in this
       case.

SEE ALSO
       adduser.conf(5), deluser(8), groupadd(8), useradd(8), usermod(8), /usr/share/doc/base-passwd/users-and-groups.html on
       any Debian system, Debian Policy 9.2.2, RFC8264 "PRECIS Framework: Preparation, Enforcement, and Comparison of Inter‐
       nationalized  Strings  in  Application  Protocols",  RFC8265   "PRECIS	Representing   Usernames   and	 Passwords",
       https://wiki.debian.org/UserAccounts.

Debian GNU/Linux												  ADDUSER(8)