X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=userv-utils.git;a=blobdiff_plain;f=groupmanage%2Fgroupmanage;h=90957fdd415ced1c7b3eb984bedefcf840873aa0;hp=9d9401955c549c2ba33a3d019ee6e2c4d938fad3;hb=2af9fec9f20de481bafa2f03f86dc8421fc0fee2;hpb=85dbc5e7cd8fd86fe1b35926f58f3589a4c8376e diff --git a/groupmanage/groupmanage b/groupmanage/groupmanage index 9d94019..90957fd 100755 --- a/groupmanage/groupmanage +++ b/groupmanage/groupmanage @@ -1,10 +1,10 @@ #!/usr/bin/perl # -# Copyright (C)1995-9 Ian Jackson +# Copyright (C) 1995-9, 2003 Ian Jackson # Copyright (C) 1999, 2003 -# Chancellor Masters and Scholars of the University of Cambridge +# Chancellor Masters and Scholars of the University of Cambridge # -# Hacked by Ben Harris in 1999 and 2003 for Unix +# Improved by Ben Harris in 1999 and 2003 for Unix # Support's own nefarious purposes. # # This is free software; you can redistribute it and/or modify it @@ -61,7 +61,6 @@ $groupname =~ m/^\w[-0-9A-Za-z]*$/ || @ARGV || push(@ARGV,'--info'); $callinguser= exists $ENV{'USERV_UID'} ? $ENV{'USERV_UID'} : $<; -$callingname = exists $ENV{'USERV_USER'} ? $ENV{'USERV_USER'} : getpwuid($<); %opt= ('user-create','0', 'user-create-minunameu','5', @@ -148,8 +147,6 @@ END if ($ARGV[0] eq '--create') { $opt{'user-create'} || !$callinguser || - ($opt{'admin-group'} && - (getgrnam($opt{'admin-group'}))[3] =~ /(^| )$callingname( |$)/) || &quit("group creation by users disabled by administrator"); length($groupname) <= 8 || &quit("group names must be 8 chars or fewer"); $!=0; (@pw= getpwuid($callinguser)) @@ -194,8 +191,6 @@ if ($create) { } &weare($owner) || grep(&weare($_),@managers) || !$callinguser || - ($opt{'admin-group'} && - (getgrnam($opt{'admin-group'}))[3] =~ /(^| )$callingname( |$)/) || &quit("you may not manage $groupname"); $action= 'none'; @@ -268,7 +263,7 @@ $grouplist[$grouplistix]= &save($opt{'group-file'},@groupfile); &save($opt{'grouplist-file'},@grouplist); if ($opt{'finish-command'}) { - !system($opt{'finish-command'}) || &quit("finish-command: $!"); + !system($opt{'finish-command'}) || &quit("finish-command: $?"); } unlink($opt{'gtmp-file'}) || &quit("unlock group (remove gtmp): $!"); &p_out; @@ -340,20 +335,7 @@ sub quit { } sub lock { - # NFS-safe Locking per Linux open(2) - my($hostname) = `hostname`; - chomp($hostname); - my($hitching_post) = "$opt{'gtmp-file'}.$hostname.$$"; - open(LOCK, ">$hitching_post") || die "$hitching_post: $!"; - close(LOCK); - link($hitching_post, $opt{'gtmp-file'}); - if ((stat($hitching_post))[3] != 2) { - close(OUT); - unlink($hitching_post); - &quit("group file locked -- giving up..."); - } - unlink($hitching_post); -# link($opt{'group-file'},$opt{'gtmp-file'}) || &quit("create gtmp: $!"); + link($opt{'group-file'},$opt{'gtmp-file'}) || &quit("create gtmp: $!"); $locked++; }