# HG changeset patch # User Robert McIntyre # Date 1357668615 0 # Node ID ab4011ea1463cdd93614569928a97c51a5380c1b # Parent 941970bc92e3833aa5bc2fc3d68e3755b026d176 using C wrapper instead of perl wrapper. diff -r 941970bc92e3 -r ab4011ea1463 defaults/bashrc --- a/defaults/bashrc Tue Jan 08 16:03:31 2013 +0000 +++ b/defaults/bashrc Tue Jan 08 18:10:15 2013 +0000 @@ -29,3 +29,5 @@ export HGEDITOR="emacs" alias hg="~/.hg-wrapper" + +PS1="\[$(tput setaf 3)\][\u \w] # \[$(tput sgr0)\]" diff -r 941970bc92e3 -r ab4011ea1463 defaults/create-skeleton.sh --- a/defaults/create-skeleton.sh Tue Jan 08 16:03:31 2013 +0000 +++ b/defaults/create-skeleton.sh Tue Jan 08 18:10:15 2013 +0000 @@ -1,4 +1,4 @@ mkdir -pv /pkg/defaults -ln -sfv ./bashrc /pkg/defaults/.bashrc -ln -sfv ./hg-wrapper.pl /pkg/defaults/.hg-wrapper +ln -sfv $(pwd)/bashrc /pkg/defaults/.bashrc +ln -sfv $(pwd)/hg-wrapper.pl /pkg/defaults/.hg-wrapper diff -r 941970bc92e3 -r ab4011ea1463 defaults/hg-wrapper.pl --- a/defaults/hg-wrapper.pl Tue Jan 08 16:03:31 2013 +0000 +++ b/defaults/hg-wrapper.pl Tue Jan 08 18:10:15 2013 +0000 @@ -1,3 +1,9 @@ -!#/usr/bin/env perl +#!/usr/bin/perl -wT -system("hg", @_); +$ENV{"PATH"} = "/usr/bin"; +delete @ENV{qw(IFS CDPATH ENV BASH_ENV PATH)}; + +exec("whoami"); + +#unshift(@ARGV, "hg"); +#exec(@ARGV); diff -r 941970bc92e3 -r ab4011ea1463 defaults/suid-wrapper.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/defaults/suid-wrapper.c Tue Jan 08 18:10:15 2013 +0000 @@ -0,0 +1,12 @@ +#include +#include + +main( int argc, char ** argv, char ** envp ) +{ + if( setgid(getegid()) ) perror( "setgid" ); + if( setuid(geteuid()) ) perror( "setuid" ); + envp = 0; /* blocks IFS attack on non-bash shells */ + system( "/usr/bin/hg", argv, envp ); + perror( argv[0] ); + return errno; +} diff -r 941970bc92e3 -r ab4011ea1463 src/pkg.pl --- a/src/pkg.pl Tue Jan 08 16:03:31 2013 +0000 +++ b/src/pkg.pl Tue Jan 08 18:10:15 2013 +0000 @@ -68,10 +68,23 @@ ("groupadd", "--force", $pkg_name); @pkg_create_home_cmd = - ("install", "-d", "-g", $pkg_name, "-o", $pkg_name, "-m", "700", $pkg_home); + ("install", "-d", "-g", $pkg_name, "-o", $pkg_name, + "-m", "700", $pkg_home); + +@pkg_add_install_cmd = + ("gpasswd", "--add", $pkg_name, "install"); sub execute{print "\t@_\n"; system(@_) and die $!;} + +@pkg_link_bashrc_cmd = + ("install", "-g", $pkg_name, "-o", $pkg_name, + "/pkg/defaults/.bashrc", "$pkg_home/.profile"); + +@pkg_copy_hg_wrapper_cmd = + (install, "-g", "root", "-o", "root", + "-m", "4777", "/pkg/defaults/.hg-wrapper", $pkg_home); + #determine if the user already exists: `id $pkg_name 2>/dev/null`; if (!$?){ @@ -87,6 +100,13 @@ print "Create home directory for $pkg_name.\n"; execute(@pkg_create_home_cmd); +print "Add $pkg_name to install group.\n"; +execute(@pkg_add_install_cmd); + +print "Copy Default Files.\n"; +execute(@pkg_link_bashrc_cmd); +execute(@pkg_copy_hg_wrapper_cmd); + print "Change user.\n"; execute(@pkg_switch_cmd); @@ -96,3 +116,4 @@ +