[Buildroot] [PATCH 1/7] package/skeleton-init-common: add /bin/sh to /etc/shells

Romain Naour romain.naour at smile.fr
Sun Jan 14 21:03:29 UTC 2018


Add the default shell /bin/sh to /etc/shells only if BR2_SYSTEM_BIN_SH_NONE
is not selected.

Add an empty /etc/shells in the rootfs skeleton.

Signed-off-by: Romain Naour <romain.naour at smile.fr>
---
 package/skeleton-init-common/skeleton-init-common.mk | 7 +++++++
 system/skeleton/etc/shells                           | 1 +
 2 files changed, 8 insertions(+)
 create mode 100644 system/skeleton/etc/shells

diff --git a/package/skeleton-init-common/skeleton-init-common.mk b/package/skeleton-init-common/skeleton-init-common.mk
index 8228a81..707f1aa 100644
--- a/package/skeleton-init-common/skeleton-init-common.mk
+++ b/package/skeleton-init-common/skeleton-init-common.mk
@@ -79,6 +79,12 @@ define SKELETON_INIT_COMMON_SET_BIN_SH
 	rm -f $(TARGET_DIR)/bin/sh
 endef
 else
+# Add /bin/sh to /etc/shells otherwise some login tools like dropbear
+# can reject the user connexion. See man shells.
+define SKELETON_INIT_COMMON_ADD_SH_TO_SHELLS
+	grep -qsE '^/bin/sh' $(TARGET_DIR)/etc/shells \
+		|| echo "/bin/sh" >> $(TARGET_DIR)/etc/shells
+endef
 ifneq ($(SKELETON_INIT_COMMON_BIN_SH),)
 define SKELETON_INIT_COMMON_SET_BIN_SH
 	ln -sf $(SKELETON_INIT_COMMON_BIN_SH) $(TARGET_DIR)/bin/sh
@@ -86,5 +92,6 @@ endef
 endif
 endif
 SKELETON_INIT_COMMON_TARGET_FINALIZE_HOOKS += SKELETON_INIT_COMMON_SET_BIN_SH
+SKELETON_INIT_COMMON_POST_INSTALL_TARGET_HOOKS += SKELETON_INIT_COMMON_ADD_SH_TO_SHELLS
 
 $(eval $(generic-package))
diff --git a/system/skeleton/etc/shells b/system/skeleton/etc/shells
new file mode 100644
index 0000000..b5fd584
--- /dev/null
+++ b/system/skeleton/etc/shells
@@ -0,0 +1 @@
+# /etc/shells: valid login shells
-- 
2.7.4




More information about the buildroot mailing list