Skip to content
Snippets Groups Projects
  • Eelco Dolstra's avatar
    47f87072
    * 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
    History
    * A very dirty hack to make setuid installations a bit nicer to use.
    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).