Skip to contentSkip to conversation

package: dropbear: make PATH configurable

PATCH New Markus Mayer 4 participants 7 messages Mar 8, 2018 – Mar 9, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package: dropbear: make PATH configurable

Make the default PATH dropbear is using configurable.

If not specified, it will continue to default to dropbear's DEFAULT_PATH.

---

Please let me know what you think. Thanks.

 package/dropbear/Config.in   | 6 ++++++
 package/dropbear/dropbear.mk | 8 ++++++++
 2 files changed, 14 insertions(+)
package/dropbear/Config.in +6 -0
index 6700778161ba..d38ecf50834a 100644
@@ -55,4 +55,10 @@ config BR2_PACKAGE_DROPBEAR_LASTLOG
 	  Enable logging of dropbear access to lastlog. Notice that
 	  Buildroot does not generate lastlog by default.
 
+config BR2_PACKAGE_DROPBEAR_PATH
+	string "dropbear default path"
+	help
+	  Use the path specified here as dropbear's default path.
+	  If not specified, dropbear will use "/usr/bin:/bin".
+
 endif
package/dropbear/dropbear.mk +8 -0
index 01a1a07b7696..ddbedf3bce93 100644
@@ -51,6 +51,14 @@ define DROPBEAR_DISABLE_STANDALONE
 	$(SED) 's:\(#define NON_INETD_MODE\):/*\1 */:' $(@D)/options.h
 endef
 
+ifneq ($(BR2_PACKAGE_DROPBEAR_PATH),"")
+define DROPBEAR_CUSTOM_PATH
+	$(SED) 's|^\(#define DEFAULT_PATH\).*|\1 $(BR2_PACKAGE_DROPBEAR_PATH)|' $(@D)/options.h
+endef
+
+DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_CUSTOM_PATH
+endif
+
 define DROPBEAR_INSTALL_INIT_SYSTEMD
 	$(INSTALL) -D -m 644 package/dropbear/dropbear.service \
 		$(TARGET_DIR)/usr/lib/systemd/system/dropbear.service
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/1 package: dropbear: make PATH configurable

Markus, All,

On 2018-03-08 13:44 -0800, Markus Mayer spake thusly:

Quoted 4 lines

Make the default PATH dropbear is using configurable.

If not specified, it will continue to default to dropbear's DEFAULT_PATH.

Isn't it better to jut let the user provide a ~/.profile file which actually sets the PATH?

Regards,
Yann E. MORIN.

Quoted 50 lines

---

Please let me know what you think. Thanks.

 package/dropbear/Config.in   | 6 ++++++
 package/dropbear/dropbear.mk | 8 ++++++++
 2 files changed, 14 insertions(+)
package/dropbear/Config.in +6 -0
index 6700778161ba..d38ecf50834a 100644
@@ -55,4 +55,10 @@ config BR2_PACKAGE_DROPBEAR_LASTLOG
 	  Enable logging of dropbear access to lastlog. Notice that
 	  Buildroot does not generate lastlog by default.
 
+config BR2_PACKAGE_DROPBEAR_PATH
+	string "dropbear default path"
+	help
+	  Use the path specified here as dropbear's default path.
+	  If not specified, dropbear will use "/usr/bin:/bin".
+
 endif
package/dropbear/dropbear.mk +8 -0
index 01a1a07b7696..ddbedf3bce93 100644
@@ -51,6 +51,14 @@ define DROPBEAR_DISABLE_STANDALONE
 	$(SED) 's:\(#define NON_INETD_MODE\):/*\1 */:' $(@D)/options.h
 endef
 
+ifneq ($(BR2_PACKAGE_DROPBEAR_PATH),"")
+define DROPBEAR_CUSTOM_PATH
+	$(SED) 's|^\(#define DEFAULT_PATH\).*|\1 $(BR2_PACKAGE_DROPBEAR_PATH)|' $(@D)/options.h
+endef
+
+DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_CUSTOM_PATH
+endif
+
 define DROPBEAR_INSTALL_INIT_SYSTEMD
 	$(INSTALL) -D -m 644 package/dropbear/dropbear.service \
 		$(TARGET_DIR)/usr/lib/systemd/system/dropbear.service
Signature · 6 lines
2.7.4

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#2 lore raw

PATCH 1/1 package: dropbear: make PATH configurable

Quoted 10 lines · Yann E. MORIN

Markus, All,

On 2018-03-08 13:44 -0800, Markus Mayer spake thusly:

Quoted 4 lines

Make the default PATH dropbear is using configurable.

If not specified, it will continue to default to dropbear's DEFAULT_PATH.

Isn't it better to jut let the user provide a ~/.profile file which actually sets the PATH?

That's certainly one way to do it and one can still choose to do that for when it works.

Where we have found it helpful to change the default is for non-interactive shells, i.e. running a command via ssh without logging in first. If you try to do "ssh eval-board ifconfig" it'll fail, because /sbin isn't in the path. And .profile doesn't help you.

There's an example:

$ ssh brcmstb ifconfig
sh: ifconfig: command not found

No surprise, because /sbin isn't in the PATH.

$ ssh brcmstb 'echo $PATH'
/usr/bin:/bin

But hold on. ".profile" does exist and it does add /sbin to the PATH. Still no luck, though.

$ ssh brcmstb 'cat .profile'
PATH=/bin:/usr/bin:/sbin:/usr/sbin

Of course it works if you specify the full path.

$ ssh brcmstb /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:10:18:DD:33:10
          inet addr:192.168.15.8  Bcast:192.168.15.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:364 errors:0 dropped:0 overruns:0 frame:0
          TX packets:274 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:65845 (64.3 KiB)  TX bytes:45749 (44.6 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

And when you log in, ".profile" does what you expect it to do. So, ".profile" works for interactive shells, but not for non-interactive ones.

$ ssh brcmstb
# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin

Hence the idea of allowing a user to modify the DEFAULT_PATH in dropbear itself.

Regards,
-Markus

Quoted 61 lines

Regards,
Yann E. MORIN.

Quoted 46 lines

---

Please let me know what you think. Thanks.

 package/dropbear/Config.in   | 6 ++++++
 package/dropbear/dropbear.mk | 8 ++++++++
 2 files changed, 14 insertions(+)
package/dropbear/Config.in +6 -0
index 6700778161ba..d38ecf50834a 100644
@@ -55,4 +55,10 @@ config BR2_PACKAGE_DROPBEAR_LASTLOG
        Enable logging of dropbear access to lastlog. Notice that
        Buildroot does not generate lastlog by default.
 
+config BR2_PACKAGE_DROPBEAR_PATH
+     string "dropbear default path"
+     help
+       Use the path specified here as dropbear's default path.
+       If not specified, dropbear will use "/usr/bin:/bin".
+
 endif
package/dropbear/dropbear.mk +8 -1
index 01a1a07b7696..ddbedf3bce93 100644
@@ -51,6 +51,14 @@ define DROPBEAR_DISABLE_STANDALONE
      $(SED) 's:\(#define NON_INETD_MODE\):/*\1 */:' $(@D)/options.h
 endef
 
+ifneq ($(BR2_PACKAGE_DROPBEAR_PATH),"")
+define DROPBEAR_CUSTOM_PATH
+     $(SED) 's|^\(#define DEFAULT_PATH\).*|\1 $(BR2_PACKAGE_DROPBEAR_PATH)|' $(@D)/options.h
+endef
+
+DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_CUSTOM_PATH
+endif
+
 define DROPBEAR_INSTALL_INIT_SYSTEMD
      $(INSTALL) -D -m 644 package/dropbear/dropbear.service \
              $(TARGET_DIR)/usr/lib/systemd/system/dropbear.service
--

2.7.4

Quoted 4 lines

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

--
.-----------------.--------------------.------------------.--------------------.

|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |

'------------------------------^-------^------------------^--------------------'

#3 lore raw

PATCH 1/1 package: dropbear: make PATH configurable

On Mar 8, 2018 2:29 PM, "Markus Mayer" <[email protected]> wrote:

Quoted 10 lines · Yann E. MORIN

Markus, All,

On 2018-03-08 13:44 -0800, Markus Mayer spake thusly:

Quoted 4 lines

Make the default PATH dropbear is using configurable.

If not specified, it will continue to default to dropbear's DEFAULT_PATH.

Isn't it better to jut let the user provide a ~/.profile file which actually sets the PATH?

That's certainly one way to do it and one can still choose to do that for when it works.

Where we have found it helpful to change the default is for non-interactive shells, i.e. running a command via ssh without logging in first. If you try to do "ssh eval-board ifconfig" it'll fail, because /sbin isn't in the path. And .profile doesn't help you.

There's an example:

$ ssh brcmstb ifconfig
sh: ifconfig: command not found

No surprise, because /sbin isn't in the PATH.

$ ssh brcmstb 'echo $PATH'
/usr/bin:/bin

But hold on. ".profile" does exist and it does add /sbin to the PATH. Still no luck, though.

$ ssh brcmstb 'cat .profile'
PATH=/bin:/usr/bin:/sbin:/usr/sbin

Of course it works if you specify the full path.

$ ssh brcmstb /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:10:18:DD:33:10
          inet addr:192.168.15.8  Bcast:192.168.15.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:364 errors:0 dropped:0 overruns:0 frame:0
          TX packets:274 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:65845 (64.3 KiB)  TX bytes:45749 (44.6 KiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

And when you log in, ".profile" does what you expect it to do. So, ".profile" works for interactive shells, but not for non-interactive ones.

$ ssh brcmstb
# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin

ssh -t $host echo $PATH

Hence the idea of allowing a user to modify the DEFAULT_PATH in dropbear itself.

Regards,
-Markus

Quoted 35 lines

Regards,
Yann E. MORIN.

Quoted 32 lines

---

Please let me know what you think. Thanks.

 package/dropbear/Config.in   | 6 ++++++
 package/dropbear/dropbear.mk | 8 ++++++++
 2 files changed, 14 insertions(+)
package/dropbear/Config.in +6 -0
index 6700778161ba..d38ecf50834a 100644
@@ -55,4 +55,10 @@ config BR2_PACKAGE_DROPBEAR_LASTLOG
        Enable logging of dropbear access to lastlog. Notice that
        Buildroot does not generate lastlog by default.
 
+config BR2_PACKAGE_DROPBEAR_PATH
+     string "dropbear default path"
+     help
+       Use the path specified here as dropbear's default path.
+       If not specified, dropbear will use "/usr/bin:/bin".
+
 endif
package/dropbear/dropbear.mk +0 -0
index 01a1a07b7696..ddbedf3bce93 100644
@@ -51,6 +51,14 @@ define DROPBEAR_DISABLE_STANDALONE
      $(SED) 's:\(#define NON_INETD_MODE\):/*\1 */:' $(@D)/options.h
 endef
 
Quoted 3 lines

package/dropbear/dropbear.mk define DROPBEAR_DISABLE_STANDALONE

Quoted 3 lines
package/dropbear/dropbear.mk +3 -0
+ifneq ($(BR2_PACKAGE_DROPBEAR_PATH),"")
+define DROPBEAR_CUSTOM_PATH
+     $(SED) 's|^\(#define DEFAULT_PATH\).*|\1

$(BR2_PACKAGE_DROPBEAR_PATH)|' $(@D)/options.h

Quoted 11 lines
Quoted 11 lines
package/dropbear/dropbear.mk +5 -1
+endef
+
+DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_CUSTOM_PATH
+endif
+
 define DROPBEAR_INSTALL_INIT_SYSTEMD
      $(INSTALL) -D -m 644 package/dropbear/dropbear.service \
              $(TARGET_DIR)/usr/lib/systemd/system/dropbear.service
--

2.7.4

Quoted 7 lines
Quoted 4 lines

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

--
.-----------------.--------------------.------------------.-

-------------------.

Quoted 1 line

| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics'

conspiracy: |

Quoted 1 line

| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___

     |
Quoted 1 line

| +33 223 225 172 `------------.-------: X AGAINST | \e/ There

is no |

Quoted 1 line

| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v

conspiracy. |

Quoted 1 line

'------------------------------^-------^------------------^-

-------------------'
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20180308/e5021b41/attachment.html>

#4 lore raw

PATCH 1/1 package: dropbear: make PATH configurable

On Thu, Mar 8, 2018 at 4:34 PM, Christopher McCrory <[email protected]> wrote:

<snip>

Quoted 11 lines
$ ssh brcmstb
# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin

ssh -t $host echo $PATH

I thought that would work (forcing a term), but it doesn't

This will do what you want on your local project

$ cat output/local.mk
DROPBEAR_CONF_OPTS += --enable-foo=bar

define DROPBEAR_CUSTOM_PATH
$(SED) 's|^\(#define DEFAULT_PATH\).*|\1 "/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"|' $(@D)/options.h
endef

DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_CUSTOM_PATH

Signature · 7 lines
Christopher McCrory
To the optimist, the glass is half full.
To the pessimist, the glass is half empty.
To the engineer, the glass is twice as big as it needs to be.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20180309/4ec865f7/attachment.html>
#5 lore raw

PATCH 1/1 package: dropbear: make PATH configurable

Quoted 22 lines · Christopher McCrory

On Thu, Mar 8, 2018 at 4:34 PM, Christopher McCrory <[email protected]> wrote:

<snip>

Quoted 8 lines
$ ssh brcmstb
# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin

ssh -t $host echo $PATH

I thought that would work (forcing a term), but it doesn't

This will do what you want on your local project

$ cat output/local.mk
DROPBEAR_CONF_OPTS += --enable-foo=bar
Quoted 7 lines

define DROPBEAR_CUSTOM_PATH
$(SED) 's|^\(#define DEFAULT_PATH\).*|\1 "/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"|' $(@D)/options.h
endef

DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_CUSTOM_PATH

If nobody else wants to make use of this feature, we can certainly stick it in local.mk. I figured it might be beneficial to others, as well.

I'll create a version with a safer regexp as suggested by Nicolas, and then I'll let the maintainers decide if this is worthwhile or not.

Regards,
-Markus

Quoted 5 lines

--
Christopher McCrory
To the optimist, the glass is half full.
To the pessimist, the glass is half empty.
To the engineer, the glass is twice as big as it needs to be.

#6 lore raw

PATCH 1/1 package: dropbear: make PATH configurable

In reply to Markus Mayer
Quoted 34 lines · Markus Mayer

Make the default PATH dropbear is using configurable.

If not specified, it will continue to default to dropbear's DEFAULT_PATH.

---

Please let me know what you think. Thanks.

 package/dropbear/Config.in   | 6 ++++++
 package/dropbear/dropbear.mk | 8 ++++++++
 2 files changed, 14 insertions(+)
package/dropbear/Config.in +6 -0
index 6700778161ba..d38ecf50834a 100644
@@ -55,4 +55,10 @@ config BR2_PACKAGE_DROPBEAR_LASTLOG
 	  Enable logging of dropbear access to lastlog. Notice that
 	  Buildroot does not generate lastlog by default.
 
+config BR2_PACKAGE_DROPBEAR_PATH
+	string "dropbear default path"
+	help
+	  Use the path specified here as dropbear's default path.
+	  If not specified, dropbear will use "/usr/bin:/bin".
+
 endif
package/dropbear/dropbear.mk +0 -0
index 01a1a07b7696..ddbedf3bce93 100644

package/dropbear/dropbear.mk define DROPBEAR_DISABLE_STANDALONE · line 57

Quoted 7 lines
package/dropbear/dropbear.mk +4 -0
@@ -51,6 +51,14 @@ define DROPBEAR_DISABLE_STANDALONE
 	$(SED) 's:\(#define NON_INETD_MODE\):/*\1 */:' $(@D)/options.h
 endef
 
+ifneq ($(BR2_PACKAGE_DROPBEAR_PATH),"")
+define DROPBEAR_CUSTOM_PATH
+	$(SED) 's|^\(#define DEFAULT_PATH\).*|\1 $(BR2_PACKAGE_DROPBEAR_PATH)|' $(@D)/options.h
+endef

You should probably protect this regex a bit more. It could overwrite a future macro beginning with DEFAULT_PATH, or it could stop working if someone add spaces between #define and DEFAULT_PATH. Such future bugs could stay unnoticed if the compilation does not fail.

Alternatively, you could append an #undef and #define at the end of the file, so that #undef can fails if DEFAULT_PATH does not exist anymore.

BTW, you probably know that ifconfig is deprecated, and the replacement is 'ip a' from busybox or iproute2, which is inside /bin