On Wed, Jun 25, 2025 at 09:39:12AM +0100, David Laight wrote: > On Wed, 25 Jun 2025 07:11:30 +0300 > Nadav Tasher <[email protected]> wrote: > > > On Tue, Jun 24, 2025 at 02:35:58PM +0200, Csókás Bence wrote: > > > Hi, > > > > > > On 2025. 06. 14. 18:10, Nadav Tasher wrote: > > > > To improve applet execution coverage, get_shell_name() will return "sh" > > > > when applets are prefered and "sh" is defined as a shell applet. > > > > > > > > This allows for more applets to execute sub-applets when spawning > > > > shells. > > > > > > > > Signed-off-by: Nadav Tasher <[email protected]> > > > > > > Maybe it's just me, but why are we overriding all users' shell preferences > > > depending on a Kconfig option? Isn't there a better way? > > > > > > Bence > > > > > This is intentional, since it is the only way we can guarantee applets > > which call system() or execv(get_shell_name(), ...) execute a self-contained > > shell that honors the "prefer applets" Kconfig. > > > > We need to force this behaviour to guarentee that only applets will be > > executed, since get_shell_name() will result in ash or hush being used > > instead of /bin/sh or others. > > Why/how does this help? > > /bin/sh can easily be ash, dash or bash (and probably others). > OTOH pw->pw_shell could be absolutely anything and might not understand > 'posix' shell syntax at all. > Perhaps the obvious example being csh. > > David > Yes, get_shell_name() might return a custom shell. But in the scenareo where you already compiled BusyBox to support this feature, you probably want applets that execute a shell to also adhere to this policy, which is why making "sh" the default helpful here.
"sh" is just an alias to ash or hush in this case, which then "prefer" applets themselves. For example, a random applet does get_shell_name(), then tries to bb_exec it. The bb_exec function then realizes that "sh" is an applet name, and executes it. That applet, ash in my case, will then process whatever command was provided, and execute the applets required to complete the command. This patch just makes sure that the applet preference policy feature is enforced recursively. > > > > Nadav > > _______________________________________________ > > busybox mailing list > > [email protected] > > https://lists.busybox.net/mailman/listinfo/busybox > _______________________________________________ busybox mailing list [email protected] https://lists.busybox.net/mailman/listinfo/busybox
