loginutils/*: convert to new-style "one file" applets
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 18 Oct 2015 23:20:36 +0000 (01:20 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 18 Oct 2015 23:20:36 +0000 (01:20 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
15 files changed:
include/applets.src.h
loginutils/Config.src
loginutils/Kbuild.src
loginutils/add-remove-shell.c
loginutils/addgroup.c
loginutils/adduser.c
loginutils/chpasswd.c
loginutils/cryptpw.c
loginutils/deluser.c
loginutils/getty.c
loginutils/login.c
loginutils/passwd.c
loginutils/su.c
loginutils/sulogin.c
loginutils/vlock.c

index f491799965449a910e7633bf3e214c67674b68c8..5b597202e6a5e28dc333075b030ff13329b5e914 100644 (file)
@@ -76,8 +76,6 @@ INSERT
 IF_TEST(APPLET_NOFORK([,  test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
 IF_TEST(APPLET_NOFORK([[, test, BB_DIR_USR_BIN, BB_SUID_DROP, test))
 IF_ACPID(APPLET(acpid, BB_DIR_SBIN, BB_SUID_DROP))
-IF_ADDGROUP(APPLET(addgroup, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_ADDUSER(APPLET(adduser, BB_DIR_USR_SBIN, BB_SUID_DROP))
 IF_ADJTIMEX(APPLET(adjtimex, BB_DIR_SBIN, BB_SUID_DROP))
 IF_ARP(APPLET(arp, BB_DIR_SBIN, BB_SUID_DROP))
 IF_ARPING(APPLET(arping, BB_DIR_USR_SBIN, BB_SUID_DROP))
@@ -94,7 +92,6 @@ IF_CHCON(APPLET(chcon, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_CHGRP(APPLET_NOEXEC(chgrp, chgrp, BB_DIR_BIN, BB_SUID_DROP, chgrp))
 IF_CHMOD(APPLET_NOEXEC(chmod, chmod, BB_DIR_BIN, BB_SUID_DROP, chmod))
 IF_CHOWN(APPLET_NOEXEC(chown, chown, BB_DIR_BIN, BB_SUID_DROP, chown))
-IF_CHPASSWD(APPLET(chpasswd, BB_DIR_USR_SBIN, BB_SUID_DROP))
 IF_CHROOT(APPLET(chroot, BB_DIR_USR_SBIN, BB_SUID_DROP))
 IF_CHRT(APPLET(chrt, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_CHVT(APPLET(chvt, BB_DIR_USR_BIN, BB_SUID_DROP))
@@ -104,13 +101,10 @@ IF_COMM(APPLET(comm, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_CP(APPLET_NOEXEC(cp, cp, BB_DIR_BIN, BB_SUID_DROP, cp))
 /* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */
 IF_CRONTAB(APPLET(crontab, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
-IF_CRYPTPW(APPLET(cryptpw, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_CUT(APPLET_NOEXEC(cut, cut, BB_DIR_USR_BIN, BB_SUID_DROP, cut))
 IF_DC(APPLET(dc, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_DD(APPLET_NOEXEC(dd, dd, BB_DIR_BIN, BB_SUID_DROP, dd))
 IF_DEALLOCVT(APPLET(deallocvt, BB_DIR_USR_BIN, BB_SUID_DROP))
-IF_DELGROUP(APPLET_ODDNAME(delgroup, deluser, BB_DIR_USR_SBIN, BB_SUID_DROP, delgroup))
-IF_DELUSER(APPLET(deluser, BB_DIR_USR_SBIN, BB_SUID_DROP))
 IF_DEVFSD(APPLET(devfsd, BB_DIR_SBIN, BB_SUID_DROP))
 IF_DEVMEM(APPLET(devmem, BB_DIR_SBIN, BB_SUID_DROP))
 IF_DF(APPLET(df, BB_DIR_BIN, BB_SUID_DROP))
@@ -160,7 +154,6 @@ IF_FUSER(APPLET(fuser, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_GETENFORCE(APPLET(getenforce, BB_DIR_USR_SBIN, BB_SUID_DROP))
 IF_GETOPT(APPLET(getopt, BB_DIR_BIN, BB_SUID_DROP))
 IF_GETSEBOOL(APPLET(getsebool, BB_DIR_USR_SBIN, BB_SUID_DROP))
-IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP))
 IF_HD(APPLET_NOEXEC(hd, hexdump, BB_DIR_USR_BIN, BB_SUID_DROP, hd))
 IF_HDPARM(APPLET(hdparm, BB_DIR_SBIN, BB_SUID_DROP))
 IF_HEAD(APPLET_NOEXEC(head, head, BB_DIR_USR_BIN, BB_SUID_DROP, head))
@@ -205,8 +198,6 @@ IF_LN(APPLET_NOEXEC(ln, ln, BB_DIR_BIN, BB_SUID_DROP, ln))
 IF_LOAD_POLICY(APPLET(load_policy, BB_DIR_USR_SBIN, BB_SUID_DROP))
 IF_LOADFONT(APPLET(loadfont, BB_DIR_USR_SBIN, BB_SUID_DROP))
 IF_LOADKMAP(APPLET(loadkmap, BB_DIR_SBIN, BB_SUID_DROP))
-/* Needs to be run by root or be suid root - needs to change uid and gid: */
-IF_LOGIN(APPLET(login, BB_DIR_BIN, BB_SUID_REQUIRE))
 IF_LOGNAME(APPLET_NOFORK(logname, logname, BB_DIR_USR_BIN, BB_SUID_DROP, logname))
 IF_LOSETUP(APPLET(losetup, BB_DIR_SBIN, BB_SUID_DROP))
 IF_LS(APPLET_NOEXEC(ls, ls, BB_DIR_BIN, BB_SUID_DROP, ls))
@@ -228,7 +219,6 @@ IF_MKFS_MINIX(APPLET_ODDNAME(mkfs.minix, mkfs_minix, BB_DIR_SBIN, BB_SUID_DROP,
 IF_MKFS_REISER(APPLET_ODDNAME(mkfs.reiser, mkfs_reiser, BB_DIR_SBIN, BB_SUID_DROP, mkfs_reiser))
 IF_MKFS_VFAT(APPLET_ODDNAME(mkfs.vfat, mkfs_vfat, BB_DIR_SBIN, BB_SUID_DROP, mkfs_vfat))
 IF_MKNOD(APPLET_NOEXEC(mknod, mknod, BB_DIR_BIN, BB_SUID_DROP, mknod))
-IF_CRYPTPW(APPLET_ODDNAME(mkpasswd, cryptpw, BB_DIR_USR_BIN, BB_SUID_DROP, mkpasswd))
 IF_MKSWAP(APPLET(mkswap, BB_DIR_SBIN, BB_SUID_DROP))
 IF_MORE(APPLET(more, BB_DIR_BIN, BB_SUID_DROP))
 /* On full-blown systems, requires suid for user mounts.
@@ -249,8 +239,6 @@ IF_NTPD(APPLET(ntpd, BB_DIR_USR_SBIN, BB_SUID_DROP))
 IF_OD(APPLET(od, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_OPENVT(APPLET(openvt, BB_DIR_USR_BIN, BB_SUID_DROP))
 //IF_PARSE(APPLET(parse, BB_DIR_USR_BIN, BB_SUID_DROP))
-/* Needs to be run by root or be suid root - needs to change /etc/{passwd,shadow}: */
-IF_PASSWD(APPLET(passwd, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
 IF_PGREP(APPLET(pgrep, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_PIDOF(APPLET(pidof, BB_DIR_BIN, BB_SUID_DROP))
 IF_PIVOT_ROOT(APPLET(pivot_root, BB_DIR_SBIN, BB_SUID_DROP))
@@ -308,9 +296,6 @@ IF_SPLIT(APPLET(split, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_STAT(APPLET(stat, BB_DIR_BIN, BB_SUID_DROP))
 IF_STRINGS(APPLET(strings, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_STTY(APPLET(stty, BB_DIR_BIN, BB_SUID_DROP))
-/* Needs to be run by root or be suid root - needs to change uid and gid: */
-IF_SU(APPLET(su, BB_DIR_BIN, BB_SUID_REQUIRE))
-IF_SULOGIN(APPLET(sulogin, BB_DIR_SBIN, BB_SUID_DROP))
 IF_SUM(APPLET(sum, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_SWAPONOFF(APPLET_ODDNAME(swapoff, swap_on_off, BB_DIR_SBIN, BB_SUID_DROP, swapoff))
 IF_SWAPONOFF(APPLET_ODDNAME(swapon, swap_on_off, BB_DIR_SBIN, BB_SUID_DROP, swapon))
@@ -352,8 +337,6 @@ IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep))
 IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_UUENCODE(APPLET(uuencode, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP))
-/* Needs to be run by root or be suid root - needs to change uid and gid: */
-IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
 IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP))
 IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP))
 IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP))
index fa2b4f8c01f97d0dae1bb4d86d4af0d550b46667..efb954b6c3e4793e77a72a6ba22c62f66a2192a8 100644 (file)
@@ -5,8 +5,6 @@
 
 menu "Login/Password Management Utilities"
 
-INSERT
-
 config FEATURE_SHADOWPASSWDS
        bool "Support for shadow passwords"
        default y
@@ -93,239 +91,6 @@ config USE_BB_CRYPT_SHA
          With this option off, login will fail password check for any
          user which has password encrypted with these algorithms.
 
-config ADDUSER
-       bool "adduser"
-       default y
-       help
-         Utility for creating a new user account.
-
-config FEATURE_ADDUSER_LONG_OPTIONS
-       bool "Enable long options"
-       default y
-       depends on ADDUSER && LONG_OPTS
-       help
-         Support long options for the adduser applet.
-
-config FEATURE_CHECK_NAMES
-       bool "Enable sanity check on user/group names in adduser and addgroup"
-       default n
-       depends on ADDUSER || ADDGROUP
-       help
-         Enable sanity check on user and group names in adduser and addgroup.
-         To avoid problems, the user or group name should consist only of
-         letters, digits, underscores, periods, at signs and dashes,
-         and not start with a dash (as defined by IEEE Std 1003.1-2001).
-         For compatibility with Samba machine accounts "$" is also supported
-         at the end of the user or group name.
-
-config LAST_ID
-       int "Last valid uid or gid for adduser and addgroup"
-       depends on ADDUSER || ADDGROUP
-       default 60000
-       help
-         Last valid uid or gid for adduser and addgroup
-
-config FIRST_SYSTEM_ID
-       int "First valid system uid or gid for adduser and addgroup"
-       depends on ADDUSER || ADDGROUP
-       range 0 LAST_ID
-       default 100
-       help
-         First valid system uid or gid for adduser and addgroup
-
-config LAST_SYSTEM_ID
-       int "Last valid system uid or gid for adduser and addgroup"
-       depends on ADDUSER || ADDGROUP
-       range FIRST_SYSTEM_ID LAST_ID
-       default 999
-       help
-         Last valid system uid or gid for adduser and addgroup
-
-config ADDGROUP
-       bool "addgroup"
-       default y
-       help
-         Utility for creating a new group account.
-
-config FEATURE_ADDGROUP_LONG_OPTIONS
-       bool "Enable long options"
-       default y
-       depends on ADDGROUP && LONG_OPTS
-       help
-         Support long options for the addgroup applet.
-
-config FEATURE_ADDUSER_TO_GROUP
-       bool "Support for adding users to groups"
-       default y
-       depends on ADDGROUP
-       help
-         If  called  with two non-option arguments,
-         addgroup will add an existing user to an
-         existing group.
-
-config DELUSER
-       bool "deluser"
-       default y
-       help
-         Utility for deleting a user account.
-
-config DELGROUP
-       bool "delgroup"
-       default y
-       help
-         Utility for deleting a group account.
-
-config FEATURE_DEL_USER_FROM_GROUP
-       bool "Support for removing users from groups"
-       default y
-       depends on DELGROUP
-       help
-         If called with two non-option arguments, deluser
-         or delgroup will remove an user from a specified group.
-
-config GETTY
-       bool "getty"
-       default y
-       select FEATURE_SYSLOG
-       help
-         getty lets you log in on a tty. It is normally invoked by init.
-
-         Note that you can save a few bytes by disabling it and
-         using login applet directly.
-         If you need to reset tty attributes before calling login,
-         this script approximates getty:
-
-         exec </dev/$1 >/dev/$1 2>&1 || exit 1
-         reset
-         stty sane; stty ispeed 38400; stty ospeed 38400
-         printf "%s login: " "`hostname`"
-         read -r login
-         exec /bin/login "$login"
-
-config LOGIN
-       bool "login"
-       default y
-       select FEATURE_SYSLOG
-       help
-         login is used when signing onto a system.
-
-         Note that Busybox binary must be setuid root for this applet to
-         work properly.
-
-config LOGIN_SESSION_AS_CHILD
-       bool "Run logged in session in a child process"
-       default y if PAM
-       depends on LOGIN
-       help
-         Run the logged in session in a child process.  This allows
-         login to clean up things such as utmp entries or PAM sessions
-         when the login session is complete.  If you use PAM, you
-         almost always would want this to be set to Y, else PAM session
-         will not be cleaned up.
-
-config LOGIN_SCRIPTS
-       bool "Support for login scripts"
-       depends on LOGIN
-       default y
-       help
-         Enable this if you want login to execute $LOGIN_PRE_SUID_SCRIPT
-         just prior to switching from root to logged-in user.
-
-config FEATURE_NOLOGIN
-       bool "Support for /etc/nologin"
-       default y
-       depends on LOGIN
-       help
-         The file /etc/nologin is used by (some versions of) login(1).
-         If it exists, non-root logins are prohibited.
-
-config FEATURE_SECURETTY
-       bool "Support for /etc/securetty"
-       default y
-       depends on LOGIN
-       help
-         The file /etc/securetty is used by (some versions of) login(1).
-         The file contains the device names of tty lines (one per line,
-         without leading /dev/) on which root is allowed to login.
-
-config PASSWD
-       bool "passwd"
-       default y
-       select FEATURE_SYSLOG
-       help
-         passwd changes passwords for user and group accounts. A normal user
-         may only change the password for his/her own account, the super user
-         may change the password for any account. The administrator of a group
-         may change the password for the group.
-
-         Note that Busybox binary must be setuid root for this applet to
-         work properly.
-
-config FEATURE_PASSWD_WEAK_CHECK
-       bool "Check new passwords for weakness"
-       default y
-       depends on PASSWD
-       help
-         With this option passwd will refuse new passwords which are "weak".
-
-config CRYPTPW
-       bool "cryptpw"
-       default y
-       help
-         Encrypts the given password with the crypt(3) libc function
-         using the given salt. Debian has this utility under mkpasswd
-         name. Busybox provides mkpasswd as an alias for cryptpw.
-
-config CHPASSWD
-       bool "chpasswd"
-       default y
-       help
-         Reads a file of user name and password pairs from standard input
-         and uses this information to update a group of existing users.
-
-config FEATURE_DEFAULT_PASSWD_ALGO
-       string "Default password encryption method (passwd -a, cryptpw -m parameter)"
-       default "des"
-       depends on PASSWD || CRYPTPW
-       help
-         Possible choices are "d[es]", "m[d5]", "s[ha256]" or "sha512".
-
-config SU
-       bool "su"
-       default y
-       select FEATURE_SYSLOG
-       help
-         su is used to become another user during a login session.
-         Invoked without a username, su defaults to becoming the super user.
-
-         Note that Busybox binary must be setuid root for this applet to
-         work properly.
-
-config FEATURE_SU_SYSLOG
-       bool "Enable su to write to syslog"
-       default y
-       depends on SU
-
-config FEATURE_SU_CHECKS_SHELLS
-       bool "Enable su to check user's shell to be listed in /etc/shells"
-       depends on SU
-       default y
-
-config SULOGIN
-       bool "sulogin"
-       default y
-       select FEATURE_SYSLOG
-       help
-         sulogin is invoked when the system goes into single user
-         mode (this is done through an entry in inittab).
-
-config VLOCK
-       bool "vlock"
-       default y
-       help
-         Build the "vlock" applet which allows you to lock (virtual) terminals.
-
-         Note that Busybox binary must be setuid root for this applet to
-         work properly.
+INSERT
 
 endmenu
index ef416a76fd2d369e2fe95035b7b37018bb54c5fc..6b4fb747007c3f8819fe2a060e7cc4d8547dcb98 100644 (file)
@@ -7,15 +7,3 @@
 lib-y:=
 
 INSERT
-lib-$(CONFIG_ADDGROUP) += addgroup.o
-lib-$(CONFIG_ADDUSER)  += adduser.o
-lib-$(CONFIG_CRYPTPW)  += cryptpw.o
-lib-$(CONFIG_CHPASSWD) += chpasswd.o
-lib-$(CONFIG_GETTY)    += getty.o
-lib-$(CONFIG_LOGIN)    += login.o
-lib-$(CONFIG_PASSWD)   += passwd.o
-lib-$(CONFIG_SU)       += su.o
-lib-$(CONFIG_SULOGIN)  += sulogin.o
-lib-$(CONFIG_VLOCK)    += vlock.o
-lib-$(CONFIG_DELUSER)  += deluser.o
-lib-$(CONFIG_DELGROUP) += deluser.o
index 9419ff5e70fe94fbf1a162d0cb44b160592f7548..ce4a7bbd280df22aad6893d7f26597e8b0527949 100644 (file)
@@ -7,13 +7,6 @@
  * Licensed under GPLv2 or later, see the LICENSE file in this source tree
  * for details.
  */
-
-//applet:IF_ADD_SHELL(   APPLET_ODDNAME(add-shell   , add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, add_shell   ))
-//applet:IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, remove_shell))
-
-//kbuild:lib-$(CONFIG_ADD_SHELL)    += add-remove-shell.o
-//kbuild:lib-$(CONFIG_REMOVE_SHELL) += add-remove-shell.o
-
 //config:config ADD_SHELL
 //config:       bool "add-shell"
 //config:       default y if DESKTOP
 //config:       help
 //config:         Remove shells from /etc/shells.
 
+//applet:IF_ADD_SHELL(   APPLET_ODDNAME(add-shell   , add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, add_shell   ))
+//applet:IF_REMOVE_SHELL(APPLET_ODDNAME(remove-shell, add_remove_shell, BB_DIR_USR_SBIN, BB_SUID_DROP, remove_shell))
+
+//kbuild:lib-$(CONFIG_ADD_SHELL)    += add-remove-shell.o
+//kbuild:lib-$(CONFIG_REMOVE_SHELL) += add-remove-shell.o
+
 //usage:#define add_shell_trivial_usage
 //usage:       "SHELL..."
 //usage:#define add_shell_full_usage "\n\n"
index 260e337f3d56c7596ec74bafe66e4d1f9792351c..4d4fc3f28c3aa20a9a9456a090b18e8f3bfee1a1 100644 (file)
@@ -9,6 +9,31 @@
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  *
  */
+//config:config ADDGROUP
+//config:      bool "addgroup"
+//config:      default y
+//config:      help
+//config:        Utility for creating a new group account.
+//config:
+//config:config FEATURE_ADDGROUP_LONG_OPTIONS
+//config:      bool "Enable long options"
+//config:      default y
+//config:      depends on ADDGROUP && LONG_OPTS
+//config:      help
+//config:        Support long options for the addgroup applet.
+//config:
+//config:config FEATURE_ADDUSER_TO_GROUP
+//config:      bool "Support for adding users to groups"
+//config:      default y
+//config:      depends on ADDGROUP
+//config:      help
+//config:        If  called  with two non-option arguments,
+//config:        addgroup will add an existing user to an
+//config:        existing group.
+
+//applet:IF_ADDGROUP(APPLET(addgroup, BB_DIR_USR_SBIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_ADDGROUP) += addgroup.o
 
 //usage:#define addgroup_trivial_usage
 //usage:       "[-g GID] [-S] " IF_FEATURE_ADDUSER_TO_GROUP("[USER] ") "GROUP"
index 605e3363fa7a09f0819397302c4f891cd06ff7b2..608fb8437ae989b646fb9b3cd17bd18d2b4d82ac 100644 (file)
@@ -7,6 +7,57 @@
  *
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
+//config:config ADDUSER
+//config:      bool "adduser"
+//config:      default y
+//config:      help
+//config:        Utility for creating a new user account.
+//config:
+//config:config FEATURE_ADDUSER_LONG_OPTIONS
+//config:      bool "Enable long options"
+//config:      default y
+//config:      depends on ADDUSER && LONG_OPTS
+//config:      help
+//config:        Support long options for the adduser applet.
+//config:
+//config:config FEATURE_CHECK_NAMES
+//config:      bool "Enable sanity check on user/group names in adduser and addgroup"
+//config:      default n
+//config:      depends on ADDUSER || ADDGROUP
+//config:      help
+//config:        Enable sanity check on user and group names in adduser and addgroup.
+//config:        To avoid problems, the user or group name should consist only of
+//config:        letters, digits, underscores, periods, at signs and dashes,
+//config:        and not start with a dash (as defined by IEEE Std 1003.1-2001).
+//config:        For compatibility with Samba machine accounts "$" is also supported
+//config:        at the end of the user or group name.
+//config:
+//config:config LAST_ID
+//config:      int "Last valid uid or gid for adduser and addgroup"
+//config:      depends on ADDUSER || ADDGROUP
+//config:      default 60000
+//config:      help
+//config:        Last valid uid or gid for adduser and addgroup
+//config:
+//config:config FIRST_SYSTEM_ID
+//config:      int "First valid system uid or gid for adduser and addgroup"
+//config:      depends on ADDUSER || ADDGROUP
+//config:      range 0 LAST_ID
+//config:      default 100
+//config:      help
+//config:        First valid system uid or gid for adduser and addgroup
+//config:
+//config:config LAST_SYSTEM_ID
+//config:      int "Last valid system uid or gid for adduser and addgroup"
+//config:      depends on ADDUSER || ADDGROUP
+//config:      range FIRST_SYSTEM_ID LAST_ID
+//config:      default 999
+//config:      help
+//config:        Last valid system uid or gid for adduser and addgroup
+
+//applet:IF_ADDUSER(APPLET(adduser, BB_DIR_USR_SBIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_ADDUSER) += adduser.o
 
 //usage:#define adduser_trivial_usage
 //usage:       "[OPTIONS] USER [GROUP]"
index 54ed73795a464bcc293bef310e611eb21df0a4ff..6c41d17beb5b6454a62ba57d75bb102bb39a3f49 100644 (file)
@@ -5,7 +5,23 @@
  * Written for SLIND (from passwd.c) by Alexander Shishkin <virtuoso@slind.org>
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
-#include "libbb.h"
+//config:config CHPASSWD
+//config:      bool "chpasswd"
+//config:      default y
+//config:      help
+//config:        Reads a file of user name and password pairs from standard input
+//config:        and uses this information to update a group of existing users.
+//config:
+//config:config FEATURE_DEFAULT_PASSWD_ALGO
+//config:      string "Default password encryption method (passwd -a, cryptpw -m parameter)"
+//config:      default "des"
+//config:      depends on PASSWD || CRYPTPW
+//config:      help
+//config:        Possible choices are "d[es]", "m[d5]", "s[ha256]" or "sha512".
+
+//applet:IF_CHPASSWD(APPLET(chpasswd, BB_DIR_USR_SBIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_CHPASSWD) += chpasswd.o
 
 //usage:#define chpasswd_trivial_usage
 //usage:       IF_LONG_OPTS("[--md5|--encrypted]") IF_NOT_LONG_OPTS("[-m|-e]")
@@ -22,6 +38,8 @@
 
 //TODO: implement -c ALGO
 
+#include "libbb.h"
+
 #if ENABLE_LONG_OPTS
 static const char chpasswd_longopts[] ALIGN1 =
        "encrypted\0" No_argument "e"
index 29f0fbe91abc23b3fb3c690a7315a009cf8090ef..55dcc291447385ec8cc140b149aa38e84800b513 100644 (file)
@@ -9,6 +9,18 @@
  *
  * Licensed under GPLv2, see file LICENSE in this source tree.
  */
+//config:config CRYPTPW
+//config:      bool "cryptpw"
+//config:      default y
+//config:      help
+//config:        Encrypts the given password with the crypt(3) libc function
+//config:        using the given salt. Debian has this utility under mkpasswd
+//config:        name. Busybox provides mkpasswd as an alias for cryptpw.
+
+//applet:IF_CRYPTPW(APPLET(cryptpw, BB_DIR_USR_BIN, BB_SUID_DROP))
+//applet:IF_CRYPTPW(APPLET_ODDNAME(mkpasswd, cryptpw, BB_DIR_USR_BIN, BB_SUID_DROP, mkpasswd))
+
+//kbuild:lib-$(CONFIG_CRYPTPW) += cryptpw.o
 
 //usage:#define cryptpw_trivial_usage
 //usage:       "[OPTIONS] [PASSWORD] [SALT]"
index 110cd63103de4c9f3823b9ada199c7d1fc077970..7c3caf9e3508b7786a58fa8f54d7d89ebebca98e 100644 (file)
@@ -7,8 +7,32 @@
  * Copyright (C) 2007 by Tito Ragusa <farmatito@tiscali.it>
  *
  * Licensed under GPLv2, see file LICENSE in this source tree.
- *
  */
+//config:config DELUSER
+//config:      bool "deluser"
+//config:      default y
+//config:      help
+//config:        Utility for deleting a user account.
+//config:
+//config:config DELGROUP
+//config:      bool "delgroup"
+//config:      default y
+//config:      help
+//config:        Utility for deleting a group account.
+//config:
+//config:config FEATURE_DEL_USER_FROM_GROUP
+//config:      bool "Support for removing users from groups"
+//config:      default y
+//config:      depends on DELGROUP
+//config:      help
+//config:        If called with two non-option arguments, deluser
+//config:        or delgroup will remove an user from a specified group.
+
+//applet:IF_DELUSER(APPLET(deluser, BB_DIR_USR_SBIN, BB_SUID_DROP))
+//applet:IF_DELGROUP(APPLET_ODDNAME(delgroup, deluser, BB_DIR_USR_SBIN, BB_SUID_DROP, delgroup))
+
+//kbuild:lib-$(CONFIG_DELUSER) += deluser.o
+//kbuild:lib-$(CONFIG_DELGROUP) += deluser.o
 
 //usage:#define deluser_trivial_usage
 //usage:       IF_LONG_OPTS("[--remove-home] ") "USER"
index 762d5c7733d00cd1f1ea06e283526dcc1643fdbd..b10bdbdbf3e336c4dbd4f7172552ccc850bdf1fe 100644 (file)
  *
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
+//config:config GETTY
+//config:      bool "getty"
+//config:      default y
+//config:      select FEATURE_SYSLOG
+//config:      help
+//config:        getty lets you log in on a tty. It is normally invoked by init.
+//config:
+//config:        Note that you can save a few bytes by disabling it and
+//config:        using login applet directly.
+//config:        If you need to reset tty attributes before calling login,
+//config:        this script approximates getty:
+//config:
+//config:        exec </dev/$1 >/dev/$1 2>&1 || exit 1
+//config:        reset
+//config:        stty sane; stty ispeed 38400; stty ospeed 38400
+//config:        printf "%s login: " "`hostname`"
+//config:        read -r login
+//config:        exec /bin/login "$login"
+
+//applet:IF_GETTY(APPLET(getty, BB_DIR_SBIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_GETTY) += getty.o
 
 #include "libbb.h"
 #include <syslog.h>
index 1700cfcb568a47a8e42fe890f28d0ef272fda646..f1f04da19bc7a45303c816ccd565bca6e4385797 100644 (file)
@@ -2,6 +2,56 @@
 /*
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
+//config:config LOGIN
+//config:      bool "login"
+//config:      default y
+//config:      select FEATURE_SYSLOG
+//config:      help
+//config:        login is used when signing onto a system.
+//config:
+//config:        Note that Busybox binary must be setuid root for this applet to
+//config:        work properly.
+//config:
+//config:config LOGIN_SESSION_AS_CHILD
+//config:      bool "Run logged in session in a child process"
+//config:      default y if PAM
+//config:      depends on LOGIN
+//config:      help
+//config:        Run the logged in session in a child process.  This allows
+//config:        login to clean up things such as utmp entries or PAM sessions
+//config:        when the login session is complete.  If you use PAM, you
+//config:        almost always would want this to be set to Y, else PAM session
+//config:        will not be cleaned up.
+//config:
+//config:config LOGIN_SCRIPTS
+//config:      bool "Support for login scripts"
+//config:      depends on LOGIN
+//config:      default y
+//config:      help
+//config:        Enable this if you want login to execute $LOGIN_PRE_SUID_SCRIPT
+//config:        just prior to switching from root to logged-in user.
+//config:
+//config:config FEATURE_NOLOGIN
+//config:      bool "Support for /etc/nologin"
+//config:      default y
+//config:      depends on LOGIN
+//config:      help
+//config:        The file /etc/nologin is used by (some versions of) login(1).
+//config:        If it exists, non-root logins are prohibited.
+//config:
+//config:config FEATURE_SECURETTY
+//config:      bool "Support for /etc/securetty"
+//config:      default y
+//config:      depends on LOGIN
+//config:      help
+//config:        The file /etc/securetty is used by (some versions of) login(1).
+//config:        The file contains the device names of tty lines (one per line,
+//config:        without leading /dev/) on which root is allowed to login.
+
+//applet:/* Needs to be run by root or be suid root - needs to change uid and gid: */
+//applet:IF_LOGIN(APPLET(login, BB_DIR_BIN, BB_SUID_REQUIRE))
+
+//kbuild:lib-$(CONFIG_LOGIN) += login.o
 
 //usage:#define login_trivial_usage
 //usage:       "[-p] [-h HOST] [[-f] USER]"
index 1509089328df8476a7adbf5d4c5847defc2b17ac..73726d3e058598c8bbdd30790d80a144482ce9e1 100644 (file)
@@ -2,6 +2,30 @@
 /*
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
+//config:config PASSWD
+//config:      bool "passwd"
+//config:      default y
+//config:      select FEATURE_SYSLOG
+//config:      help
+//config:        passwd changes passwords for user and group accounts. A normal user
+//config:        may only change the password for his/her own account, the super user
+//config:        may change the password for any account. The administrator of a group
+//config:        may change the password for the group.
+//config:
+//config:        Note that Busybox binary must be setuid root for this applet to
+//config:        work properly.
+//config:
+//config:config FEATURE_PASSWD_WEAK_CHECK
+//config:      bool "Check new passwords for weakness"
+//config:      default y
+//config:      depends on PASSWD
+//config:      help
+//config:        With this option passwd will refuse new passwords which are "weak".
+
+//applet:/* Needs to be run by root or be suid root - needs to change /etc/{passwd,shadow}: */
+//applet:IF_PASSWD(APPLET(passwd, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
+
+//kbuild:lib-$(CONFIG_PASSWD) += passwd.o
 
 //usage:#define passwd_trivial_usage
 //usage:       "[OPTIONS] [USER]"
index f8125054a412acc7f73afab3f944d3e4841e21e5..3c0e8c100ade227a5049cfd8bde05f43fee1507c 100644 (file)
@@ -4,9 +4,31 @@
  *
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
-
-#include "libbb.h"
-#include <syslog.h>
+//config:config SU
+//config:      bool "su"
+//config:      default y
+//config:      select FEATURE_SYSLOG
+//config:      help
+//config:        su is used to become another user during a login session.
+//config:        Invoked without a username, su defaults to becoming the super user.
+//config:
+//config:        Note that Busybox binary must be setuid root for this applet to
+//config:        work properly.
+//config:
+//config:config FEATURE_SU_SYSLOG
+//config:      bool "Enable su to write to syslog"
+//config:      default y
+//config:      depends on SU
+//config:
+//config:config FEATURE_SU_CHECKS_SHELLS
+//config:      bool "Enable su to check user's shell to be listed in /etc/shells"
+//config:      depends on SU
+//config:      default y
+
+//applet:/* Needs to be run by root or be suid root - needs to change uid and gid: */
+//applet:IF_SU(APPLET(su, BB_DIR_BIN, BB_SUID_REQUIRE))
+
+//kbuild:lib-$(CONFIG_SU) += su.o
 
 //usage:#define su_trivial_usage
 //usage:       "[OPTIONS] [-] [USER]"
@@ -17,6 +39,9 @@
 //usage:     "\n       -c CMD  Command to pass to 'sh -c'"
 //usage:     "\n       -s SH   Shell to use instead of user's default"
 
+#include "libbb.h"
+#include <syslog.h>
+
 #if ENABLE_FEATURE_SU_CHECKS_SHELLS
 /* Return 1 if SHELL is a restricted shell (one not returned by
  * getusershell), else 0, meaning it is a standard shell.  */
index 2a2909937037830c3759675fb1cc9e1461bedd8c..19b1e304cb4d3f4ad5d05294f61d5d9c089613ab 100644 (file)
@@ -4,6 +4,18 @@
  *
  * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
+//config:config SULOGIN
+//config:      bool "sulogin"
+//config:      default y
+//config:      select FEATURE_SYSLOG
+//config:      help
+//config:        sulogin is invoked when the system goes into single user
+//config:        mode (this is done through an entry in inittab).
+
+//applet:/* Needs to be run by root or be suid root - needs to change uid and gid: */
+//applet:IF_SULOGIN(APPLET(sulogin, BB_DIR_SBIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_SULOGIN) += sulogin.o
 
 //usage:#define sulogin_trivial_usage
 //usage:       "[-t N] [TTY]"
index 44b14e6bc460387c0e6ec23ed7714808e6934c3a..52ae607c9e4717fc3d2251d6846e13b574607abd 100644 (file)
  * minimalistic vlock.
  */
 /* Fixed by Erik Andersen to do passwords the tinylogin way...
- * It now works with md5, sha1, etc passwords. */
+ * It now works with md5, sha1, etc passwords.
+ */
+//config:config VLOCK
+//config:      bool "vlock"
+//config:      default y
+//config:      help
+//config:        Build the "vlock" applet which allows you to lock (virtual) terminals.
+//config:
+//config:        Note that Busybox binary must be setuid root for this applet to
+//config:        work properly.
+
+//applet:/* Needs to be run by root or be suid root - needs to change uid and gid: */
+//applet:IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE))
+
+//kbuild:lib-$(CONFIG_VLOCK) += vlock.o
 
 //usage:#define vlock_trivial_usage
 //usage:       "[-a]"