diff options
Diffstat (limited to 'debian/vendor-h2o/share/h2o/setuidgid')
-rwxr-xr-x | debian/vendor-h2o/share/h2o/setuidgid | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/debian/vendor-h2o/share/h2o/setuidgid b/debian/vendor-h2o/share/h2o/setuidgid deleted file mode 100755 index c8e9a30..0000000 --- a/debian/vendor-h2o/share/h2o/setuidgid +++ /dev/null @@ -1,46 +0,0 @@ -#! /bin/sh -exec ${H2O_PERL:-perl} -x $0 "$@" -#! perl - -use strict; -use warnings; -use POSIX qw(setuid setgid); - -die "usage: share/h2o/setuidgid username child\n" - unless @ARGV >= 2; -my $username = shift @ARGV; - -# get user entry -my ($uid, @groups) = do { - my @e = getpwnam($username) - or die "unknown user: $username\n"; - +($e[2], $e[3]); -}; - -# add supp. groups to @groups -setgrent; -while (my @e = getgrent) { - if ($e[3] && grep { $_ eq $username } split /\s+/, $e[3]) { - push @groups, $e[2] - unless grep { $_ == $e[2] } @groups; - } -} -endgrent; - -# setgid -setgid($groups[0]) - or die "setgid failed:$!"; - -# setgroups -$! = 0; -$) = join " ", $groups[0], @groups; -die "setgroups failed:$!" - if $!; - -# setuid -setuid($uid) - or die "setuid failed:$!"; - -# exec -exec @ARGV - or die "failed to exec: $ARGV[0]:$!"; |