On 15.02.2018 16.52, Philip Prindeville wrote:
Well, right!  That was my first approach with a “config" option to do exactly 
that, but it was shot down:

https://github.com/openwrt/packages/pull/5520

I even defaulted the option to continue to allow passwords so that only people 
who (a) selected OpenSSH and (b) turned this option off would be affected… 
which has to be a small portion of the population.

Sorry, I must have missed this. I'm in favor of the current state of that pull request (my concern is the direct consequences of the patch, not the way it is implemented, more below).

Consider a scenario where a user builds an image with OpenSSH, without Dropbear 
(because they have OpenSSH), and without a web interface (because they want to 
save space). This is easily done by selecting and deselecting packages in 
menuconfig/imagebuilder, no custom files needed today. With this change, if the 
image is missing authorized_keys, the only way to log in is serial console 
(failsafe will be locked out too), which requires soldering - or using 
bootloader recovery features, which may also require soldering and aren't 
consistently documented.


Actually, most of the boxes that *I* work on (Geos, Alix 2D, net5501, Xeon 1U 
servers, etc.) all have serial ports and most of them have VGA as well (or 
could if you install the optional header).

True, I was thinking of typical 5-port wireless routers. Still, the lockout problem is real on those devices, and OpenWrt targets and supports a lot of them.

This is just about the default configuration, it's not a choice between 
conflicting compile time options with varying security implications. While key 
authentication may be best practice, allowing SSH password logins isn't on the 
level of reimplementing LuCI in PHP 4. The change is *literally* a handful of 
sed commands, why can't advanced users take care of that themselves? Why do we 
want to make it easier to build a soft-bricking image than it is today?


Conversely, why can’t advanced users have a clear, standardized way of doing 
this?  That they’re “advanced” doesn’t mean they don’t also appreciate 
convenience, an easy way to save and export/import configurations, etc.

I'm not against general development, improvement or standardization of config handling. I'm against the default state of the patch that started this mail thread. The convenience of this patch opens up a new way to break the convenience of failsafe on a lot of devices, and I don't think many people would expect the particular package selection to cause such a behavior. I consider failsafe to be more important. You've already addressed that in your pull request, and I'm in favor of "this should be configurable at build time, but the default behavior should not change". How that is implemented is a different matter, which so far I haven't thought much about.

In a perfect world, no one should ever have to build with patches, anything in 
files/, cherry-picked commits, etc.  Everything would be expressed in the 
.config (or kernel-config).

I have a bunch of uci-defaults scripts (currently loaded via files) that configure my devices after flashing (if any interface has MAC address X, run a bunch of commands (uci stuff, sed, cat, service reloads, whatever)). I keep adding to them without structuring things, and they become unmanageable. One of many things I've thought of and never gotten around to is creating a package feed of config script packages. A package would e.g. be set_lan_ip4_addr, it would have configuration option(s) to set the desired IP address in menuconfig, and then install a generic uci-defaults script with the desired IP address inserted via sed. Maybe there are better ways to do this (install a /etc/config/deployment file that all the scripts read from?), anyway it would be an improvement of what I do now. In theory, that could be used to get any number of possibilities into menuconfig or .config as well.

-Philip

/Magnus

_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to