Follow-up Comment #2, bug #68587 (group findutils): Hello,
thank you for review and enhancements.
[comment #1 Kommentar #1:]
[...]
>> # figure out if su supports the -s option
>> select_shell() {
>> - if su "$1" -s $SHELL -c false < /dev/null ; then
>> + if [ "$updatedbuserchange" = "runuser" ] ; then
>> + echo "-s $SHELL"
>> + elif su "$1" -s $SHELL -c false < /dev/null ; then
>> # No.
>> echo ""
> This does not test whether runuser(1) actually works or not.
Afaict your version of the patch does not check that either. It adds a test
for whether runuser -s $SHELL ... works or not. The outcome of this tests
changes whether runsuser is invoked with -s $SHELL later. It does not test
whether runuser works, if it is available it is used.
To my knowledge there is no alternative implementation, no other binary called
runuser. That is why I intentionally left out testing whether -s was supported
for the runuser case. - If we find runuser it is the one
from util-linux and even in the very first incarnation it had the -s option. I
*think* the case for su is different. - It has been around forever with
multiple possibly incompatible implementations.
> E.g. if some regular user's PATH includes /sbin, then which(1) below would
> find the tool, but it still would not work.
> $ /sbin/runuser someuser - true
> runuser: may not be used by non-root users
Perhaps this might be handled by additionally checking whether $(id -u) is 0?
if which runuser >/dev/null 2>&1 && [ "$(id -u)" = "0" ] ; then
updatedbuserchange=runuser
else
updatedbuserchange=su
fi
[...]
>> +if which runuser 2>&1 ; then
>> + updatedbuserchange=runuser
>> +else
>> + updatedbuserchange=su
>> +fi
>> +
> I'm not sure about this redirection of stderr to stdout.
> Did you mean
> if which runuser >/dev/null 2>&1 ; then
> ?
[...]
Yes exactly.
cu Andreas
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?68587>
_______________________________________________
Nachricht gesendet über Savannah
https://savannah.gnu.org/
signature.asc
Description: PGP signature
