@@ -2591,6 +2591,7 @@ menu "System tools"
source "package/sdbus-cpp/Config.in"
source "package/sdbusplus/Config.in"
source "package/seatd/Config.in"
+ source "package/shadow/Config.in"
source "package/smack/Config.in"
source "package/start-stop-daemon/Config.in"
source "package/supervisor/Config.in"
new file mode 100644
@@ -0,0 +1,81 @@
+menuconfig BR2_PACKAGE_SHADOW
+ bool "shadow"
+ depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
+ help
+ Utilities to deal with user accounts.
+
+ https://github.com/shadow-maint/shadow
+
+if BR2_PACKAGE_SHADOW
+
+config BR2_PACKAGE_SHADOW_SHADOWGRP
+ bool "shadowgrp"
+ default y
+ help
+ Enable shadow group support.
+
+if BR2_PACKAGE_LINUX_PAM
+
+config BR2_PACKAGE_SHADOW_ACCOUNT_TOOLS_SETUID
+ bool "account-tools-setuid"
+ help
+ Install the user and group management tools setuid and authenticate the
+ callers.
+
+endif # BR2_PACKAGE_LINUX_PAM
+
+config BR2_PACKAGE_SHADOW_UTMPX
+ bool "utmpx"
+ help
+ Enable loggin in utmpx / wtmpx.
+
+config BR2_PACKAGE_SHADOW_SUBORDINATE_IDS
+ bool "subordinate-ids"
+ default y
+ help
+ Support subordinate ids.
+
+config BR2_PACKAGE_SHADOW_SHA_CRYPT
+ bool "sha-crypt"
+ default y
+ help
+ Allow the SHA256 and SHA512 password encryption algorithms.
+
+config BR2_PACKAGE_SHADOW_BCRYPT
+ bool "bcrypt"
+ help
+ Allow the bcrypt password encryption algorithm.
+
+config BR2_PACKAGE_SHADOW_YESCRYPT
+ bool "yescrypt"
+ help
+ Allow the yescrypt password encryption algorithm.
+
+config BR2_PACKAGE_SHADOW_NSCD
+ bool "nscd"
+ default y
+ help
+ Enable support for nscd.
+
+config BR2_PACKAGE_SHADOW_SSSD
+ bool "sssd"
+ default y
+ help
+ Define to support flushing of sssd caches.
+
+config BR2_PACKAGE_SHADOW_GROUP_NAME_MAX_LENGTH
+ int "group-name-max-length"
+ default 16
+ help
+ Set max group name length. (0 equals infinity)
+
+config BR2_PACKAGE_SHADOW_SU
+ bool "su"
+ default y
+ help
+ Build and install su program.
+
+endif # BR2_PACKAGE_SHADOW
+
+comment "shadow needs a toolchain w/ headers >= 4.14"
+ depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
new file mode 100644
@@ -0,0 +1,3 @@
+# Locally computed
+sha256 41f093ce58b2ae5f389a1c5553e0c18bc73e6fe27f66273891991198a7707c95 shadow-4.11.1.tar.xz
+sha256 3d25ab8f43fdc14624296a56ff8dc3e72e499ad35f32ae0c803f4959cfe17c0a COPYING
new file mode 100644
@@ -0,0 +1,171 @@
+################################################################################
+#
+# shadow
+#
+################################################################################
+
+SHADOW_VERSION = 4.11.1
+SHADOW_SITE = https://github.com/shadow-maint/shadow/releases/download/v$(SHADOW_VERSION)
+SHADOW_SOURCE = shadow-$(SHADOW_VERSION).tar.xz
+SHADOW_LICENSE = BSD-3-Clause
+SHADOW_LICENSE_FILES = COPYING
+
+SHADOW_CONF_OPTS += \
+ --disable-man \
+ --without-btrfs \
+ --without-skey \
+ --without-tcb
+
+ifeq ($(BR2_STATIC_LIBS),y)
+SHADOW_CONF_OPTS += --enable-static
+else
+SHADOW_CONF_OPTS += --disable-static
+endif
+
+ifeq ($(BR2_SHARED_LIBS),y)
+SHADOW_CONF_OPTS += --enable-shared
+else
+SHADOW_CONF_OPTS += --disable-shared
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_SHADOWGRP),y)
+SHADOW_CONF_OPTS += --enable-shadowgrp
+else
+SHADOW_CONF_OPTS += --disable-shadowgrp
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_ACCOUNT_TOOLS_SETUID),y)
+SHADOW_CONF_OPTS += --enable-account-tools-setuid
+SHADOW_ACCOUNT_TOOLS_SETUID = \
+ /usr/sbin/chgpasswd f 4755 0 0 - - - - - \
+ /usr/sbin/chpasswd f 4755 0 0 - - - - - \
+ /usr/sbin/groupadd f 4755 0 0 - - - - - \
+ /usr/sbin/groupdel f 4755 0 0 - - - - - \
+ /usr/sbin/groupmod f 4755 0 0 - - - - - \
+ /usr/sbin/newusers f 4755 0 0 - - - - - \
+ /usr/sbin/useradd f 4755 0 0 - - - - - \
+ /usr/sbin/usermod f 4755 0 0 - - - - -
+else
+SHADOW_CONF_OPTS += --disable-account-tools-setuid
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_UTMPX),y)
+SHADOW_CONF_OPTS += --enable-utmpx
+else
+SHADOW_CONF_OPTS += --disable-utmpx
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_SUBORDINATE_IDS),y)
+SHADOW_CONF_OPTS += --enable-subordinate-ids
+SHADOW_SUBORDINATE_IDS_PERMISSIONS = \
+ /usr/bin/newuidmap f 4755 0 0 - - - - - \
+ /usr/bin/newgidmap f 4755 0 0 - - - - -
+else
+SHADOW_CONF_OPTS += --disable-subordinate-ids
+endif
+
+ifeq ($(BR2_PACKAGE_ACL),y)
+SHADOW_CONF_OPTS += --with-acl
+SHADOW_DEPENDENCIES += acl
+else
+SHADOW_CONF_OPTS += --without-acl
+endif
+
+ifeq ($(BR2_PACKAGE_ATTR),y)
+SHADOW_CONF_OPTS += --with-attr
+SHADOW_DEPENDENCIES += attr
+else
+SHADOW_CONF_OPTS += --without-attr
+endif
+
+ifeq ($(BR2_PACKAGE_AUDIT),y)
+SHADOW_CONF_OPTS += --with-audit
+SHADOW_DEPENDENCIES += audit
+else
+SHADOW_CONF_OPTS += --without-audit
+endif
+
+ifeq ($(BR2_PACKAGE_CRACKLIB),y)
+SHADOW_CONF_OPTS += --with-libcrack
+SHADOW_DEPENDENCIES += cracklib
+else
+SHADOW_CONF_OPTS += --without-libcrack
+endif
+
+ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
+SHADOW_CONF_OPTS += --with-selinux
+SHADOW_DEPENDENCIES += libselinux libsemanage
+else
+SHADOW_CONF_OPTS += --without-selinux
+endif
+
+ifeq ($(BR2_PACKAGE_LINUX_PAM),y)
+SHADOW_CONF_OPTS += --with-libpam
+SHADOW_DEPENDENCIES += linux-pam
+else
+SHADOW_CONF_OPTS += --without-libpam
+endif
+
+ifeq ($(BR2_ENABLE_LOCALE),y)
+SHADOW_CONF_OPTS += --enable-nls
+else
+SHADOW_CONF_OPTS += --disable-nls
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_SHA_CRYPT),y)
+SHADOW_CONF_OPTS += --with-sha-crypt
+else
+SHADOW_CONF_OPTS += --without-sha-crypt
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_BCRYPT),y)
+SHADOW_CONF_OPTS += --with-bcrypt
+else
+SHADOW_CONF_OPTS += --without-bcrypt
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_YESCRYPT),y)
+SHADOW_CONF_OPTS += --with-yescrypt
+else
+SHADOW_CONF_OPTS += --without-yescrypt
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_NSCD),y)
+SHADOW_CONF_OPTS += --with-nscd
+else
+SHADOW_CONF_OPTS += --without-nscd
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_SSSD),y)
+SHADOW_CONF_OPTS += --with-sssd
+else
+SHADOW_CONF_OPTS += --without-sssd
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_GROUP_NAME_MAX_LENGTH),0)
+SHADOW_CONF_OPTS += --without-group-name-max-length
+else
+SHADOW_CONF_OPTS += --with-group-name-max-length=$(BR2_PACKAGE_SHADOW_GROUP_NAME_MAX_LENGTH)
+endif
+
+ifeq ($(BR2_PACKAGE_SHADOW_SU),y)
+SHADOW_CONF_OPTS += --with-su
+SHADOW_SU_PERMISSIONS = /bin/su f 4755 0 0 - - - - -
+else
+SHADOW_CONF_OPTS += --without-su
+endif
+
+define SHADOW_PERMISSIONS
+ /usr/bin/chage f 4755 0 0 - - - - -
+ /usr/bin/chfn f 4755 0 0 - - - - -
+ /usr/bin/chsh f 4755 0 0 - - - - -
+ /usr/bin/expiry f 4755 0 0 - - - - -
+ /usr/bin/gpasswd f 4755 0 0 - - - - -
+ /usr/bin/newgrp f 4755 0 0 - - - - -
+ /usr/bin/passwd f 4755 0 0 - - - - -
+ $(SHADOW_ACCOUNT_TOOLS_SETUID)
+ $(SHADOW_SUBORDINATE_IDS_PERMISSIONS)
+ $(SHADOW_SU_PERMISSIONS)
+endef
+
+$(eval $(autotools-package))
shadow provides utilities to deal with user accounts. Signed-off-by: Raphael Pavlidis <raphael.pavlidis@gmail.com> --- package/Config.in | 1 + package/shadow/Config.in | 81 ++++++++++++++++++ package/shadow/shadow.hash | 3 + package/shadow/shadow.mk | 171 +++++++++++++++++++++++++++++++++++++ 4 files changed, 256 insertions(+) create mode 100644 package/shadow/Config.in create mode 100644 package/shadow/shadow.hash create mode 100644 package/shadow/shadow.mk