Path: utzoo!attcan!uunet!jarthur!usc!zaphod.mps.ohio-state.edu!uakari.primate.wisc.edu!uflorida!haven!uvaarpa!mmdf From: tytso@athena.mit.edu (Theodore Ts'o) Newsgroups: comp.lang.perl Subject: Subtle effects of DOSUID Message-ID: <1990Mar21.235646.22870@uvaarpa.Virginia.EDU> Date: 21 Mar 90 23:56:46 GMT Sender: mmdf@uvaarpa.Virginia.EDU (Uvaarpa Mail System) Reply-To: tytso@athena.mit.edu Organization: The Internet Lines: 26 Because of our setup of where perl is located (which I, unfortunately, have no control over), I need to start perl scripts as follows: #!/afs/athena.mit.edu/contrib/watchmaker/@sys/perl Of course, this doesn't work, because of the kernel limit of 32 characters for the interpreter name. So, my standard way of starting perl scripts is as follows (yes, I know, what a hack): #!/bin/sh eval "exec /afs/athena.mit.edu/contrib/watchmaker/@sys/perl -S $0 $*" if $running_under_some_shell; Which worked fine, until I tried compiling perl with DOSUID. Apparently, one of the checks enabled by DOSUID (which it does even though the script is not setuid) is to see if the interpreter specified in the #! line is perl --- and if it isn't, to exec the named interpreter and feed the script to it. Of course, this causes a loop and perl never gets a chance to execute my script. My question is: why is it doing the check even though the script is not setuid? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Theodore Ts'o bloom-beacon!mit-athena!tytso 3 Ames St., Cambridge, MA 02139 tytso@athena.mit.edu Everybody's playing the game, but nobody's rules are the same!