Skip to content
Snippets Groups Projects
  1. Nov 14, 2004
  2. Oct 27, 2004
  3. Oct 25, 2004
  4. Sep 09, 2004
    • Eelco Dolstra's avatar
      * A very dirty hack to make setuid installations a bit nicer to use. · 47f87072
      Eelco Dolstra authored
        Previously there was the problem that all files read by nix-env
        etc. should be reachable and readable by the Nix user.  So for
        instance building a Nix expression in your home directory meant that
        the home directory should have at least g+x or o+x permission so
        that the Nix user could reach the Nix expression.  Now we just
        switch back to the original user just prior to reading sources and
        the like.  The places where this happens are somewhat arbitrary,
        however.  Any scope that has a live SwitchToOriginalUser object in
        it is executed as the original user.
      
      * Back out r1385.  setreuid() sets the saved uid to the new
        real/effective uid, which prevents us from switching back to the
        original uid.  setresuid() doesn't have this problem (although the
        manpage has a bug: specifying -1 for the saved uid doesn't leave it
        unchanged; an explicit value must be specified).
      47f87072
    • Eelco Dolstra's avatar
      * Use setre[ug]id() instead of setres[ug]id(), since the former is · 5396304c
      Eelco Dolstra authored
        more common than the latter (which exists only on Linux and
        FreeBSD).  We don't really care about dropping the saved IDs since
        there apparently is no way to quiry them in any case, so it can't
        influence the build (unlike the effective IDs which are checked by
        Perl for instance).
      5396304c
  5. Aug 20, 2004
    • Eelco Dolstra's avatar
      * On systems that have the setresuid() and setresgid() system calls to · e77fbe0f
      Eelco Dolstra authored
        set the real uid and gid to the effective uid and gid, the Nix
        binaries can be installed as owned by the Nix user and group instead
        of root, so no root involvement of any kind is necessary.
      
        Linux and FreeBSD have these functions.
      e77fbe0f
    • Eelco Dolstra's avatar
      * Setuid support for sharing a Nix installation between multiple · 2d35116c
      Eelco Dolstra authored
        users.
      
        If the configure flag `--enable-setuid' is used, the Nix programs
        nix-env, nix-store, etc. are installed with the setuid bit turned on
        so that they are executed as the user and group specified by
        `--with-nix-user=USER' and `--with-nix-group=GROUP', respectively
        (with defaults `nix' and `nix').
      
        The setuid programs drop all special privileges if they are executed
        by a user who is not a member of the Nix group.
      
        The setuid feature is a quick hack to enable sharing of a Nix
        installation between users who trust each other.  It is not
        generally secure, since any user in the Nix group can modify (by
        building an appropriate derivation) any object in the store, and for
        instance inject trojans into binaries used by other users.
      
        The setuid programs are owned by root, not the Nix user.  This is
        because on Unix normal users cannot change the real uid, only the
        effective uid.  Many programs don't work properly when the real uid
        differs from the effective uid.  For instance, Perl will turn on
        taint mode.  However, the setuid programs drop all root privileges
        immediately, changing all uids and gids to the Nix user and group.
      
      2d35116c
  6. Aug 13, 2004
  7. Jul 18, 2004
  8. Jun 21, 2004
  9. Jun 04, 2004
  10. May 18, 2004
  11. May 04, 2004
  12. Apr 26, 2004
  13. Apr 23, 2004
  14. Apr 21, 2004
    • Eelco Dolstra's avatar
      * Channels. These allow you to stay current with an evolving set of · 21655a70
      Eelco Dolstra authored
        Nix expressions.
      
        To subscribe to a channel (needs to be done only once):
      
          nix-channel --add \
            http://catamaran.labs.cs.uu.nl/dist/nix/channels/nixpkgs-unstable
      
        This just adds the given URL to ~/.nix-channels (which can also be
        edited manually).
      
        To update from all channels:
      
          nix-channel --update
      
        This fetches the latest expressions and pulls cache manifests.  The
        default Nix expression (~/.nix-defexpr) is made to point to the
        conjunction of the expressions downloaded from all channels.
      
        So to update all installed derivations in the current user
        environment:
      
          nix-channel --update
          nix-env --upgrade '*'
      
        If you are really courageous, you can put this in a cronjob or
        something.
      
        You can subscribe to multiple channels.  It is not entirely clear
        what happens when there are name clashes between derivations from
        different channels.  From nix-env/main.cc it appears that the one
        with the lowest (highest?) hash will be used, which is pretty
        meaningless.
      21655a70
    • Eelco Dolstra's avatar
      * Do initialise state (the DB etc.) when doing a `make install', · f79e9c2d
      Eelco Dolstra authored
        unless `--disable-init-state' is passed to configure.
      f79e9c2d
  15. Apr 08, 2004
  16. Apr 06, 2004
  17. Mar 15, 2004
    • Eelco Dolstra's avatar
      * Added a utility that can be used to produce nice HTML pages from Nix · 9d2669d2
      Eelco Dolstra authored
        build logs.  The program `log2xml' converts a Nix build log (read
        from standard input) into XML file that can then be converted to
        XHTML by the `log2html.xsl' stylesheet.  The CSS stylesheet
        `logfile.css' is necessary to make it look good.
      
        This is primarily useful if the log file has a *tree structure*,
        i.e., that sub-tasks such as the various phases of a build (unpack,
        configure, make, etc.) or recursive invocations of Make are
        represented as such.  While a log file is in principle an
        unstructured plain text file, builders can communicate this tree
        structure to `log2xml' by using escape sequences:
      
        - "\e[p" starts a new nesting level; the first line following the
          escape code is the header;
      
        - "\e[q" ends the current nesting level.
      
        The generic builder in nixpkgs (not yet committed) uses this.  It
        shouldn't be to hard to patch GNU Make to speak this protocol.
      
        Further improvements to the generated HTML pages are to allow
        collapsing/expanding of subtrees, and to abbreviate store paths (but
        to show the full path by hovering the mouse over it).
        
      9d2669d2
    • Eelco Dolstra's avatar
      * Make perl a dependency of Nix. · beda10f5
      Eelco Dolstra authored
      beda10f5
  18. Feb 16, 2004
  19. Jan 30, 2004
  20. Jan 02, 2004
  21. Dec 22, 2003
  22. Dec 01, 2003
  23. Nov 26, 2003
  24. Nov 25, 2003
  25. Nov 22, 2003
  26. Nov 19, 2003
  27. Nov 18, 2003
Loading