[yocto] su.shadow: Change in behaviour

Gary Thomas gary at mlbassoc.com
Fri Jul 18 11:28:42 PDT 2014


I just noticed a difference in how su.shadow functions with
the latest code.  If I run this
   # su -c /home/root/test -l root
with the previous version (4.1.4.3) I see this flow:
   6761  execve("/bin/su", ["su", "-c", "/home/root/test", "-l"], [/* 13 vars */]) = 0
   6761  execve("/bin/sh", ["/bin/sh", "-c", "/home/root/test"], [/* 7 vars */]) = 0
   6762  execve("/home/root/test", ["/home/root/test"], [/* 8 vars */]) = 0
with the latest version (4.2.1) I see:
   961   execve("/bin/su", ["su", "-c", "/home/root/test", "-l"], [/* 13 vars */]) = 0
   961   execve("/bin/sh", ["-su", "-c", "/home/root/test"], [/* 7 vars */]) = 0
which fails with 'su: applet not found' if /bin.sh is busybox and
succeeds if the /bin/sh is bash.

Is seems that the new version is expecting the shell to take
care of the user switch (maybe it doesn't realize that it's
already 'root') and the busybox shell doesn't handle this.
That said, I can see that busybox is built with 'CONFIG_SU=y',
but there is no 'su' applet.

Who's wrong here (su.shadow or busybox)?  Has anyone else seen
this or does everyone just use bash?

Note: I noticed this because with the latest Poky/Yocto master
with these changes, the X server no longer comes up because it
relies on su (su -l -c "/etc/X11/Xserver&" root) and this now
fails when using /bin/sh==busybox.

Thanks for any pointers or ideas

-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------



More information about the yocto mailing list