Hi, As you may know, busybox has been the core of Alpine Linux for a decade. One of the things that has been necessary for its success has been that busybox has followed the standards, making the tools compatible with the corresponding bigger tools.
Even GNU extensions and long-opts have been implemented whenever that has made sense, and busybox has always been good at doing so in a portable way. One exception of this has been the adduser/addgroup tools, and it is starting to become a problem[1]. Scripts that work on many other systems needs to be handled special when busybox adduser/addgroup is needed. A co-worker did some investigation of the adduser/addgroup vs useradd/group add implementations on various systems to get an idea what is the most portable. I think that what would make most sense is to add useradd and groupadd to busybox. What do you think? useradd, groupadd Debian, Ubuntu "useradd is a low level utility for adding users. On Debian, administrators should usually use adduser(8) instead." http://manpages.ubuntu.com/manpages/trusty/man8/useradd.8.html http://manpages.ubuntu.com/manpages/trusty/man8/groupadd.8.html useradd is not interactive, and supports both long and short command options, eg -g and --gid. SUpports getting and setting defaults options with -D. The short options are very similar to many other systems, and the exit codes correspond to HPUX wg 4=uid alread in use and -o not specified. Redhat, Centos useradd and groupadd are symlinks to adduser, addgroup. These are basically the same as the Debian, Ubuntu useradd commands, with long and short form options and the multiple return values for scripting. Busybox no useradd or groupadd applets. HPUX useradd very like Linux one with only short options eg -g, and supports -D to set defaults. groupadd only supports -g and -o. Provides 10 exit codes for different types of failure. http://ods.com.ua/win/eng/unix/usail/man/hpux/useradd.1.html http://ods.com.ua/win/eng/unix/usail/man/hpux/groupadd.1.html claims: STANDARDS COMPLIANCE: useradd: SVID3 groupadd: SVID3 FreeBSD, NetBSD short form options only, supports -D to change defaults. Man page does not mention return values. SVID System V Interface Definition, Fourth Edition Volume 2 http://www.sco.com/developers/devspecs/vol2.pdf useradd is specified in here, with short form options, without -D to set defaults. useradd [-u uid [-o] [-i]] [-g group] [-G group[[,group] . . . ]] [-d dir] [-s shell] [-c comment] [-m [-k skel_dir] -f inactive] [-e expire] [-h level [-h level [ . . . ]]] [-v def_level] [-w hd_level] [-a event[, . . . ]] login adduser Debian, Ubuntu adduser, addgroup are the same perl script. Only accept long form options. Redhat, Centos Exactly same as Debian and Ubuntu version of useradd. Busybox Short form options only. Do not correspond to standard useradd options though - eg -D is used for different purpose. NetBSD, FreeBSD No adduser. -- [1]: https://github.com/docker/docker/blob/master/pkg/idtools/usergroupadd_linux.go#L11-L16 _______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
