On Tue, Mar 16, 2010 at 6:04 PM, <Casper.Dik at sun.com> wrote: > > I filed the following bug: > > 6934527 pfksh93 does not work for builtin commands
This bug might be a candidate for a WONTFIX. The root cause is that the pfexec *design* is utterly broken (giving a whole process extra privileges, ignoring the fact that part of this process may be compromised. The granulation is the wrong one and should never grant a whole process such a power) and deliberately ignored the concept of shell builtins in POSIX shells. Sure, Sun never cared much about POSIX when designing own APIs but we have again the case where this ignorance in the design process strikes back. > > pfexec is only executed for "external" commands and not for > internal commands. This is the correct behaviour. Commands which require special privileges should intentionally be marked as privileged, in this case by specifying the full path of the command (which prevents the shell from using a builtin command). > ksh93 has implemented quite a few commands > as internal commands and programs such as "mkdir" are no longer > run with the appropriate privileges. > > I want to change ksh93 that when it runs as a "profile shell", it > needs to disable all builtin commands listed in "cmdlist.h"; This would cause "7000000 Putback for 6934527 regressed pfksh93 performance, scripts run 70-100 times slower". AFAIK this kind of performance regression is a no-go in ON, right? Shell builtins were always there (echo, printf being the most popular pre-POSIX incarnations) and just ignoring or disabling them will only cause *more* trouble, usually by breaking scripts in subtle ways. Either the pfexec design needs fixing or script authors must clearly use the full path of commands which require extra privileges. > I understand that they are all registered with the full pathnames. > In inittree() and want to ignore all such pathnames for the > shtab_builtins. Or is there a better we to avoid these builtin > commands? > > This, of course, is in OpenSolaris a problem also for sh and ksh as > they're all "ksh93". I think the problem is the design of pfexec and friends which should be fixed and not that the broken policy enforced upon ksh93. It will just break things, including scripts which rely on features only present in the builtin command and not in the /usr/bin commands, signal handling and other stuff. Irek