diff mbox

[v2] Allow setting the password for user default

Message ID 1401787751-32600-1-git-send-email-sho@relinux.de
State Rejected
Headers show

Commit Message

Stephan Hoffmann June 3, 2014, 9:29 a.m. UTC
Signed-off-by: Stephan Hoffmann <sho@relinux.de>
---
Since we can set the password for root while configuring the system
it seems logical to have the same possibility for user "default".

Changes v1 -> v2
  - remove rewording in help text for BR2_TARGET_GENERIC_ROOT_PASSWD
---
 system/Config.in | 23 ++++++++++++++++++++++-
 system/system.mk | 11 ++++++++++-
 2 files changed, 32 insertions(+), 2 deletions(-)

Comments

Arnout Vandecappelle June 4, 2014, 6:16 a.m. UTC | #1
On 06/03/14 11:29, Stephan Hoffmann wrote:
> Signed-off-by: Stephan Hoffmann <sho@relinux.de>
> ---
> Since we can set the password for root while configuring the system
> it seems logical to have the same possibility for user "default".
> 
> Changes v1 -> v2
>   - remove rewording in help text for BR2_TARGET_GENERIC_ROOT_PASSWD
> ---
>  system/Config.in | 23 ++++++++++++++++++++++-
>  system/system.mk | 11 ++++++++++-
>  2 files changed, 32 insertions(+), 2 deletions(-)
> 
> diff --git a/system/Config.in b/system/Config.in
> index 53bca53..d5408e1 100644
> --- a/system/Config.in
> +++ b/system/Config.in
> @@ -211,6 +211,27 @@ config BR2_TARGET_GENERIC_ROOT_PASSWD
>  	  in the build log! Avoid using a valuable password if either the
>  	  .config file or the build log may be distributed!
>  
> +config BR2_TARGET_GENERIC_DEFAULT_PASSWD
> +	string "Password for user default"
> +	default ""
> +	help
> +	  Set the initial password for user default (in clear). It will be encrypted.
> +
> +	  If set to empty (the default), then no password will be set,
> +	  and default will need no password to log in.
> +
> +	  WARNING! WARNING!
> +	  Although pretty strong, MD5 is now an old hash function, and
> +	  suffers from some weaknesses, which makes it susceptible to attacks.
> +	  It is showing its age, so this root password should not be trusted
> +	  to properly secure any product that can be shipped to the wide,
> +	  hostile world.

 Since we can now select the hash, this warning has no merit anymore.

 With that fixed:

Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

> +
> +	  WARNING! WARNING!
> +	  The password appears in clear in the .config file, and may appear
> +	  in the build log! Avoid using a valuable password if either the
> +	  .config file or the build log may be distributed!
> +
>  config BR2_TARGET_GENERIC_GETTY
>  	bool "Run a getty (login prompt) after boot"
>  	default y
> diff --git a/system/system.mk b/system/system.mk
> index 01a6c3a..367a8c4 100644
> --- a/system/system.mk
> +++ b/system/system.mk
> @@ -1,6 +1,7 @@
>  TARGET_GENERIC_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))
>  TARGET_GENERIC_ISSUE = $(call qstrip,$(BR2_TARGET_GENERIC_ISSUE))
>  TARGET_GENERIC_ROOT_PASSWD = $(call qstrip,$(BR2_TARGET_GENERIC_ROOT_PASSWD))
> +TARGET_GENERIC_DEFAULT_PASSWD:=$(call qstrip,$(BR2_TARGET_GENERIC_DEFAULT_PASSWD))
>  TARGET_GENERIC_PASSWD_METHOD = $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD))
>  TARGET_GENERIC_GETTY_PORT = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT))
>  TARGET_GENERIC_GETTY_BAUDRATE = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE))
> @@ -29,6 +30,14 @@ target-root-passwd:
>  		TARGET_GENERIC_ROOT_PASSWD_HASH=$$($(MKPASSWD) -m "$(TARGET_GENERIC_PASSWD_METHOD)" "$(TARGET_GENERIC_ROOT_PASSWD)"); \
>  	$(SED) "s,^root:[^:]*:,root:$$TARGET_GENERIC_ROOT_PASSWD_HASH:," $(TARGET_DIR)/etc/shadow
>  
> +ifneq ($(TARGET_GENERIC_DEFAULT_PASSWD),)
> +target-default-passwd: host-mkpasswd
> +endif
> +target-default-passwd:
> +	[ -n "$(TARGET_GENERIC_DEFAULT_PASSWD)" ] && \
> +		TARGET_GENERIC_DEFAULT_PASSWD_HASH=$$($(MKPASSWD) -m "$(TARGET_GENERIC_PASSWD_METHOD)" "$(TARGET_GENERIC_DEFAULT_PASSWD)"); \
> +	$(SED) "s,^default:[^:]*:,default:$$TARGET_GENERIC_DEFAULT_PASSWD_HASH:," $(TARGET_DIR)/etc/shadow

 It would have been nice to factor this with the root password generation, but
that can be done in a follow-up patch if needed.


 Regards,
 Arnout

> +
>  target-generic-getty-busybox:
>  	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(TARGET_GENERIC_GETTY_PORT)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY_OPTIONS) $(TARGET_GENERIC_GETTY_PORT) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
>  		$(TARGET_DIR)/etc/inittab
> @@ -60,7 +69,7 @@ TARGETS += target-generic-issue
>  endif
>  
>  ifeq ($(BR2_ROOTFS_SKELETON_DEFAULT),y)
> -TARGETS += target-root-passwd
> +TARGETS += target-root-passwd target-default-passwd
>  
>  ifeq ($(BR2_TARGET_GENERIC_GETTY),y)
>  TARGETS += target-generic-getty-$(if $(BR2_PACKAGE_SYSVINIT),sysvinit,busybox)
>
Peter Korsgaard June 4, 2014, 10:47 a.m. UTC | #2
>>>>> "Stephan" == Stephan Hoffmann <sho@relinux.de> writes:

 > Signed-off-by: Stephan Hoffmann <sho@relinux.de>
 > ---
 > Since we can set the password for root while configuring the system
 > it seems logical to have the same possibility for user "default".

 > Changes v1 -> v2
 >   - remove rewording in help text for BR2_TARGET_GENERIC_ROOT_PASSWD
 > ---
 >  system/Config.in | 23 ++++++++++++++++++++++-
 >  system/system.mk | 11 ++++++++++-
 >  2 files changed, 32 insertions(+), 2 deletions(-)

 > diff --git a/system/Config.in b/system/Config.in
 > index 53bca53..d5408e1 100644
 > --- a/system/Config.in
 > +++ b/system/Config.in
 > @@ -211,6 +211,27 @@ config BR2_TARGET_GENERIC_ROOT_PASSWD
 >  	  in the build log! Avoid using a valuable password if either the
 >  	  .config file or the build log may be distributed!
 
 > +config BR2_TARGET_GENERIC_DEFAULT_PASSWD
 > +	string "Password for user default"
 > +	default ""
 > +	help
 > +	  Set the initial password for user default (in clear). It will be encrypted.
 > +
 > +	  If set to empty (the default), then no password will be set,
 > +	  and default will need no password to log in.

I would actually rather get rid of the 'default' user, now that we have
support for BR2_ROOTFS_USERS_TABLES. The 'default' user is not needed
for anything in Buildroot itself, and I'm pretty sure some people might
not know / remember that we always have this password-less user and
remember to remove it in a post build - I know I haven't.

Do you have any use case for keeping it instead of just using
BR2_ROOTFS_USERS_TABLES?
Stephan Hoffmann June 4, 2014, 11:46 a.m. UTC | #3
On 04.06.2014 12:47, Peter Korsgaard wrote:
>>>>>> "Stephan" == Stephan Hoffmann <sho@relinux.de> writes:
>  > Signed-off-by: Stephan Hoffmann <sho@relinux.de>
>  > ---
>  > Since we can set the password for root while configuring the system
>  > it seems logical to have the same possibility for user "default".
>
>  > Changes v1 -> v2
>  >   - remove rewording in help text for BR2_TARGET_GENERIC_ROOT_PASSWD
>  > ---
>  >  system/Config.in | 23 ++++++++++++++++++++++-
>  >  system/system.mk | 11 ++++++++++-
>  >  2 files changed, 32 insertions(+), 2 deletions(-)
>
>  > diff --git a/system/Config.in b/system/Config.in
>  > index 53bca53..d5408e1 100644
>  > --- a/system/Config.in
>  > +++ b/system/Config.in
>  > @@ -211,6 +211,27 @@ config BR2_TARGET_GENERIC_ROOT_PASSWD
>  >  	  in the build log! Avoid using a valuable password if either the
>  >  	  .config file or the build log may be distributed!
>  
>  > +config BR2_TARGET_GENERIC_DEFAULT_PASSWD
>  > +	string "Password for user default"
>  > +	default ""
>  > +	help
>  > +	  Set the initial password for user default (in clear). It will be encrypted.
>  > +
>  > +	  If set to empty (the default), then no password will be set,
>  > +	  and default will need no password to log in.
>
> I would actually rather get rid of the 'default' user, now that we have
> support for BR2_ROOTFS_USERS_TABLES. The 'default' user is not needed
> for anything in Buildroot itself, and I'm pretty sure some people might
> not know / remember that we always have this password-less user and
> remember to remove it in a post build - I know I haven't.
Good point, Peter!

This patch was sitting around here for a while and I obviously missed
the invention of BR2_ROOTFS_USERS_TABLES.

> Do you have any use case for keeping it instead of just using
> BR2_ROOTFS_USERS_TABLES?
No, so we shall drop this patch. I can also cook a patch that removes
the old default user, because I definitively do not want to have it
without the possibility to give it a password easily.

Kind regards

Stephan
>
Peter Korsgaard June 4, 2014, noon UTC | #4
>>>>> "Stephan" == Stephan Hoffmann <sho@relinux.de> writes:

Hi,

 >> Do you have any use case for keeping it instead of just using
 >> BR2_ROOTFS_USERS_TABLES?
 > No, so we shall drop this patch. I can also cook a patch that removes
 > the old default user, because I definitively do not want to have it
 > without the possibility to give it a password easily.

Yes, please do - Thanks!
diff mbox

Patch

diff --git a/system/Config.in b/system/Config.in
index 53bca53..d5408e1 100644
--- a/system/Config.in
+++ b/system/Config.in
@@ -211,6 +211,27 @@  config BR2_TARGET_GENERIC_ROOT_PASSWD
 	  in the build log! Avoid using a valuable password if either the
 	  .config file or the build log may be distributed!
 
+config BR2_TARGET_GENERIC_DEFAULT_PASSWD
+	string "Password for user default"
+	default ""
+	help
+	  Set the initial password for user default (in clear). It will be encrypted.
+
+	  If set to empty (the default), then no password will be set,
+	  and default will need no password to log in.
+
+	  WARNING! WARNING!
+	  Although pretty strong, MD5 is now an old hash function, and
+	  suffers from some weaknesses, which makes it susceptible to attacks.
+	  It is showing its age, so this root password should not be trusted
+	  to properly secure any product that can be shipped to the wide,
+	  hostile world.
+
+	  WARNING! WARNING!
+	  The password appears in clear in the .config file, and may appear
+	  in the build log! Avoid using a valuable password if either the
+	  .config file or the build log may be distributed!
+
 config BR2_TARGET_GENERIC_GETTY
 	bool "Run a getty (login prompt) after boot"
 	default y
diff --git a/system/system.mk b/system/system.mk
index 01a6c3a..367a8c4 100644
--- a/system/system.mk
+++ b/system/system.mk
@@ -1,6 +1,7 @@ 
 TARGET_GENERIC_HOSTNAME = $(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME))
 TARGET_GENERIC_ISSUE = $(call qstrip,$(BR2_TARGET_GENERIC_ISSUE))
 TARGET_GENERIC_ROOT_PASSWD = $(call qstrip,$(BR2_TARGET_GENERIC_ROOT_PASSWD))
+TARGET_GENERIC_DEFAULT_PASSWD:=$(call qstrip,$(BR2_TARGET_GENERIC_DEFAULT_PASSWD))
 TARGET_GENERIC_PASSWD_METHOD = $(call qstrip,$(BR2_TARGET_GENERIC_PASSWD_METHOD))
 TARGET_GENERIC_GETTY_PORT = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_PORT))
 TARGET_GENERIC_GETTY_BAUDRATE = $(call qstrip,$(BR2_TARGET_GENERIC_GETTY_BAUDRATE))
@@ -29,6 +30,14 @@  target-root-passwd:
 		TARGET_GENERIC_ROOT_PASSWD_HASH=$$($(MKPASSWD) -m "$(TARGET_GENERIC_PASSWD_METHOD)" "$(TARGET_GENERIC_ROOT_PASSWD)"); \
 	$(SED) "s,^root:[^:]*:,root:$$TARGET_GENERIC_ROOT_PASSWD_HASH:," $(TARGET_DIR)/etc/shadow
 
+ifneq ($(TARGET_GENERIC_DEFAULT_PASSWD),)
+target-default-passwd: host-mkpasswd
+endif
+target-default-passwd:
+	[ -n "$(TARGET_GENERIC_DEFAULT_PASSWD)" ] && \
+		TARGET_GENERIC_DEFAULT_PASSWD_HASH=$$($(MKPASSWD) -m "$(TARGET_GENERIC_PASSWD_METHOD)" "$(TARGET_GENERIC_DEFAULT_PASSWD)"); \
+	$(SED) "s,^default:[^:]*:,default:$$TARGET_GENERIC_DEFAULT_PASSWD_HASH:," $(TARGET_DIR)/etc/shadow
+
 target-generic-getty-busybox:
 	$(SED) '/# GENERIC_SERIAL$$/s~^.*#~$(TARGET_GENERIC_GETTY_PORT)::respawn:/sbin/getty -L $(TARGET_GENERIC_GETTY_OPTIONS) $(TARGET_GENERIC_GETTY_PORT) $(TARGET_GENERIC_GETTY_BAUDRATE) $(TARGET_GENERIC_GETTY_TERM) #~' \
 		$(TARGET_DIR)/etc/inittab
@@ -60,7 +69,7 @@  TARGETS += target-generic-issue
 endif
 
 ifeq ($(BR2_ROOTFS_SKELETON_DEFAULT),y)
-TARGETS += target-root-passwd
+TARGETS += target-root-passwd target-default-passwd
 
 ifeq ($(BR2_TARGET_GENERIC_GETTY),y)
 TARGETS += target-generic-getty-$(if $(BR2_PACKAGE_SYSVINIT),sysvinit,busybox)