On Friday 29 April 2005 03:16 pm, Blaisorblade wrote: > > Hmmm... I suppose I could always have a wrapper script > > which can't be setuid if in bash, could if in Perl and perlsuid is > installed.
Actually you can run bash setuid with the -p option. From bash's "flags.c": /* Non-zero means that this shell is running in `privileged' mode. This is required if the shell is to run setuid. If the `-p' option is not supplied at startup, and the real and effective uids or gids differ, disable_priv_mode is called to relinquish setuid status. */ int privileged_mode = 0; (That said, if you do use -p to get get a setuid bash, there's several other things you should do to make this marginally less dangerous. And I wouldn't trust myself to remember them all off the top of my head...) That said, I wasn't thinking of using bash for the wrapper but either python or C. It's just easier to secure them... > > that runs UML as a > > non-root process in the chroot environment and opens a named pipe that we > > can write into via hostfs when we want the chroot environment > > depopulated. > > No, that must be a regular file... Linux does not pass requests to work on > device nodes, named pipes, sockets down to the filesystem, so none of them > can pass datas between the machines. You'd need a real IP socket > (TCP/UDP),, or maybe something mconsole-based. Okay, the disgusting way to do this: Mount a ramfs somewhere. CD into it, make subdirectories and bind mount in enough of the parent environment to run UML and open the memory file. Run UML. Have UML create a new file in the ramfs to signal when it's up enough that the host filesystem can go away. The parent program detects the file's creation, unmounts all the directories, deletes the empty directories, remounts the ramfs read-only, and then does a lazy unmount of the ramfs. I can come up with a _more_ disgusting way to do this if necessary. :) > You can pass the location through a normal assignment on the cmd.line > (which will become a env.var, or you might parse /proc/cmdline). Creating a temporary file in the ramfs is good enough... > > (I vaguely recall there's a way to tell UML where to drop its memory > > file...) > > Setting TMPDIR. Cool. Rob ------------------------------------------------------- SF.Net email is sponsored by: Tell us your software development plans! Take this survey and enter to win a one-year sub to SourceForge.net Plus IDC's 2005 look-ahead and a copy of this survey Click here to start! http://www.idcswdc.com/cgi-bin/survey?id=105hix _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel