diff --git a/tmcd/freebsd/setup b/tmcd/freebsd/setup index 07091b7a67a8d589dfade60129473267d039389e..65a79df20bbd57d2d2923b49abca80d5b1aaf689 100755 --- a/tmcd/freebsd/setup +++ b/tmcd/freebsd/setup @@ -66,7 +66,7 @@ if ($_ =~ /^FREE/) { print STDOUT " Free!\n"; exit(0); } -if ($_ =~ /ALLOCATED=(\w*)\/(\w*)/) { +if ($_ =~ /ALLOCATED=([-\@\w.]*)\/([-\@\w.]*)/) { print STDOUT " Allocated: $1/$2!\n"; $project = $1; } @@ -190,7 +190,7 @@ open(TM, "$TMCC $NODE $ACCTCMD |") or die "Cannot start $TMCC: $!"; while () { - if ($_ =~ /^ADDGROUP NAME=([0-9a-zA-Z]+) GID=([0-9]+)/) { + if ($_ =~ /^ADDGROUP NAME=([-\@\w.]+) GID=([0-9]+)/) { print STDOUT " Group: $1/$2\n"; $group = $1; @@ -219,16 +219,24 @@ while () { $name = $1; } print STDOUT " User: $login/$uid/$gid/$root/$name\n"; + ($exists) = getpwuid($uid); if ($exists) { + if ($root) { + $GLIST = "-G wheel,$gid"; + } + else { + $GLIST = "-G $gid"; + } + system("$PW usermod $login $GLIST"); next; } $GLIST = " "; if ($root) { - $GLIST = "-G wheel "; + $GLIST = "-G wheel"; } - + if (system("$PW useradd $login -u $uid -g $gid $GLIST ". "-d /users/$login -s /bin/tcsh -c \"$name\"") != 0) { print STDERR "Error adding new user $login\n"; diff --git a/tmcd/linux/setup b/tmcd/linux/setup index fb7b08f4f5f3d09d24cd0f810ec029103ab81335..6a8623d9f12ce36d62987c0f822846b6395cf5c8 100755 --- a/tmcd/linux/setup +++ b/tmcd/linux/setup @@ -19,6 +19,7 @@ my $DELAYCMD = "delay"; my $IFCONFIG = "/sbin/ifconfig eth%d inet %s netmask %s\n"; my $CP = "/bin/cp -f"; my $USERADD = "/usr/sbin/useradd"; +my $USERMOD = "/usr/sbin/usermod"; my $GROUPADD = "/usr/sbin/groupadd"; my $IFACE = "eth"; my $CTLIFACE = "eth4"; @@ -66,7 +67,7 @@ if ($_ =~ /^FREE/) { print STDOUT " Free!\n"; exit(0); } -if ($_ =~ /ALLOCATED=(\w*)\/(\w*)/) { +if ($_ =~ /ALLOCATED=([-\@\w.]*)\/([-\@\w.]*)/) { print STDOUT " Allocated: $1/$2!\n"; $project = $1; } @@ -122,7 +123,7 @@ open(TM, "$TMCC $NODE $ACCTCMD |") or die "Cannot start $TMCC: $!"; while () { - if ($_ =~ /^ADDGROUP NAME=([0-9a-zA-Z]+) GID=([0-9]+)/) { + if ($_ =~ /^ADDGROUP NAME=([-\@\w.]+) GID=([0-9]+)/) { print STDOUT " Group: $1/$2\n"; $group = $1; @@ -151,8 +152,16 @@ while () { $name = $1; } print STDOUT " User: $login/$uid/$gid/$root/$name\n"; + ($exists) = getpwuid($uid); if ($exists) { + if ($root) { + $GLIST = "-G root,$gid"; + } + else { + $GLIST = "-G $gid"; + } + system("$USERMOD $GLIST $login"); next; }