[Buildroot] [PATCH 2/7] package/busybox: add /bin/ash to /etc/shells

Romain Naour romain.naour at smile.fr
Wed Jan 17 15:17:01 UTC 2018


Hi Yann,

Le 14/01/2018 à 23:43, Yann E. MORIN a écrit :
> Romain, All,
> 
> On 2018-01-14 22:03 +0100, Romain Naour spake thusly:
>> When ash (busybox) is selected, /bin/ash is not added to /etc/shells
>> (see man shells). So, login tools like dropbear reject the ssh
>> connexions for users using ash as shell in /etc/passwd.
>>
>> buildroot authpriv.warn dropbear[853]: User 'kubu' has invalid shell, rejected
>>
>> ash is disabled for MMUless systems, so don't add /bin/ash in
>> /etc/shells in this case.
>>
>> Signed-off-by: Romain Naour <romain.naour at smile.fr>
>> ---
>>  package/busybox/busybox.mk | 10 ++++++++++
>>  1 file changed, 10 insertions(+)
>>
>> diff --git a/package/busybox/busybox.mk b/package/busybox/busybox.mk
>> index d0bbd3f..37d064a 100644
>> --- a/package/busybox/busybox.mk
>> +++ b/package/busybox/busybox.mk
>> @@ -258,6 +258,15 @@ define BUSYBOX_INSTALL_TELNET_SCRIPT
>>  	fi
>>  endef
>>  
>> +# Add /bin/ash to /etc/shells otherwise some login tools like dropbear
>> +# can reject the user connexion. See man shells.
>> +ifeq ($(BR2_USE_MMU),y)
>> +define BUSYBOX_INSTALL_ADD_ASH_TO_SHELLS
>> +	grep -qsE '^/bin/ash' $(TARGET_DIR)/etc/shells \
>> +		|| echo "/bin/ash" >> $(TARGET_DIR)/etc/shells
> 
> What if the user uses a custom config file where ash is not enabled?
> What about the other shells busybox may install?
> 
>     define BUSYBOX_INSTALL_ADD_TO_SHELLS
>         if grep -qsE '^CONFIG_ASH=y$$' $(@D)/.config; then
>             grep -qsE '^/bin/ash' $(TARGET_DIR)/etc/shells \
>             || echo "/bin/ash" >> $(TARGET_DIR)/etc/shells; \
>         fi
>         if grep -qsE '^CONFIG_HUSH=y$$' $(@D)/.config; then
>             grep -qsE '^/bin/hush' $(TARGET_DIR)/etc/shells \
>             || echo "/bin/hush" >> $(TARGET_DIR)/etc/shells; \
>         fi
>         if grep -qsE '^CONFIG_MSH=y$$' $(@D)/.config; then
>             grep -qsE '^/bin/msh' $(TARGET_DIR)/etc/shells \
>             || echo "/bin/msh" >> $(TARGET_DIR)/etc/shells; \
>         fi
>     endef
> 
> (msh is just an alias for hush, but it can be a shell nonethless...)

I didn't know about msh and hush...

Btw msh has been removed from Busybox 1.28.0
https://git.busybox.net/busybox/commit/?id=2e989ef232e35750df573898077dd356003705b2

Best regards,
Romain

> 
> Regards,
> Yann E. MORIN.
> 
>> +endef
>> +endif
>> +
>>  # Enable "noclobber" in install.sh, to prevent BusyBox from overwriting any
>>  # full-blown versions of apps installed by other packages with sym/hard links.
>>  define BUSYBOX_NOCLOBBER_INSTALL
>> @@ -291,6 +300,7 @@ define BUSYBOX_INSTALL_TARGET_CMDS
>>  	$(BUSYBOX_INSTALL_INITTAB)
>>  	$(BUSYBOX_INSTALL_UDHCPC_SCRIPT)
>>  	$(BUSYBOX_INSTALL_MDEV_CONF)
>> +	$(BUSYBOX_INSTALL_ADD_ASH_TO_SHELLS)
>>  endef
>>  
>>  define BUSYBOX_INSTALL_INIT_SYSV
>> -- 
>> 2.7.4
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
> 



More information about the buildroot mailing list