[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#366805: tex-common: Group question for tex files: too difficult IMO



On Thu, May 11, 2006 at 04:45:52PM +0200, Frank K??ster wrote:
> > Isn't it possible to create a tex user and have that user (via setuid
> > binaries) manage the shared data in a safe way?
> 
> Never thought about that.  Yes, it seems possible, but it's *not*
> trivial.  The executables that are called to generate the fonts are
> simple shell scripts, and setuid shell scripts aren't possible on Linux
> (and you don't want them, anyway).  The shell scripts call mf, a real
> binary, but this is also meant to be used directly and can't be setuid.

That was my target when writing the libkpathsea-perl package:
reimplement the mktex* scripts in Perl and then have them be
setuid/setgid (or more likely now, as suidperl is deprecated, have a
compiled setuid/gid wrapper call the Perl scripts).

A simple way to do it without the Perl stuff is just to move the shell
scripts to /usr/share/tex or wherever and replace them with setuid/gid
compiled wrappers.

The difficulty is more subtle, though: since the contents of texmf.cnf
and environment variables can significantly affect the behaviour of
the scripts, it must be determined which of the following is the case:

(1) The generated files will be identical both in generation (using
    only system files) and in intended destination path (filename +
    path) whether or not the user's configuration is read --> can run
    as setuid/gid with all user configuration cleaned up

(2) The generated files will be installed in a personal location if
    run with the user's configuration --> run as user

(3) The generated files will be distinct or have distinct system-wide
    locations depending upon whether or not the user's configuration
    is used --> either give up with an error message, or ignore the
    user's configuration and run setuid/gid with an appropriate
    warning message

But distinguishing between (1) and (3), in general, means running the
whole mktex* script and looking at all files used throughout the
process.  And a user might be unhappy about having their local changes
ignored ....

   Julian



Reply to: