Mercurial > pkg
changeset 3:9ff0fcf34920
first draft of pkg.pl complete.
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Tue, 08 Jan 2013 14:42:09 +0000 |
parents | a75581c89dde |
children | fe56b4698cf8 |
files | src/pkg.pl |
diffstat | 1 files changed, 52 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
1.1 --- a/src/pkg.pl Tue Jan 08 12:48:59 2013 +0000 1.2 +++ b/src/pkg.pl Tue Jan 08 14:42:09 2013 +0000 1.3 @@ -1,5 +1,10 @@ 1.4 #!/usr/bin/env perl 1.5 1.6 + 1.7 +#this is the root of the package users' homes 1.8 +$pkg_home_root = "/pkg"; 1.9 + 1.10 + 1.11 if ($ARGV[0] eq "--help"){ 1.12 print <<"HERE"; 1.13 1.14 @@ -8,7 +13,7 @@ 1.15 syntax: 1.16 pkg package-name description 1.17 pkg --help 1.18 - 1.19 + 1.20 Create a package user for the purpose of compiling 1.21 a particular package. 1.22 1.23 @@ -17,10 +22,10 @@ 1.24 1.25 You will then be put into the user's home 1.26 directory where you may proceed with 1.27 -compiling/installation of the package. 1.28 +compiling/installing the package. 1.29 1.30 If the user already exists, this is equivalent to 1.31 - su package-name; cd ~; 1.32 + su --login package-name 1.33 1.34 Written by Robert McIntyre. This software is free 1.35 software and is released to the public domain. 1.36 @@ -28,25 +33,64 @@ 1.37 HERE 1.38 exit 0; 1.39 } 1.40 - 1.41 +$" = " "; 1.42 1.43 $pkg_name = $ARGV[0]; 1.44 1.45 $pkg_desc = $ARGV[1]; 1.46 1.47 # Validate pkg_user as a user name. 1.48 -if (!($pkg_name =~ m/^[A-Za-z][A-Za-z0-9_-]*$/)){ 1.49 +if (!($pkg_name =~ m/^[a-z_][a-z0-9_-]*\$?$/)){ 1.50 print "$pkg_name is not a valid user name!\n"; 1.51 - exit 0; 1.52 + exit 1; 1.53 } 1.54 1.55 # Validate description. 1.56 if ($pkg_desc =~ m/:/){ 1.57 print "Package Description cannot contain \":\"\n"; 1.58 - exit 0 1.59 + exit 1; 1.60 } 1.61 1.62 1.63 -print "name: $pkg_name\ndesc: $pkg_desc\n"; 1.64 +$pkg_home = "$pkg_home_root/$pkg_name"; 1.65 1.66 +#set default for $pkg_desc. 1.67 +if (!($pkg_desc)){$pkg_desc = $pkg_name;} 1.68 1.69 +@pkg_switch_cmd = ("su", "--login", $pkg_name); 1.70 + 1.71 +@pkg_create_cmd = 1.72 + ("useradd", "-c", $pkg_desc, "-d", $pkg_home, 1.73 + "-g", $pkg_name, "-s", "/bin/bash", 1.74 + $pkg_name); 1.75 + 1.76 +@pkg_create_group_cmd = 1.77 + ("groupadd", "--force", $pkg_name); 1.78 + 1.79 +@pkg_create_home_cmd = 1.80 + ("install", "-d", "-g", $pkg_name, "-o", $pkg_name, "-m", "700", $pkg_home); 1.81 + 1.82 +sub execute{print "@_\n"; system(@_) and die $!;} 1.83 + 1.84 +#determine if the user already exists: 1.85 +`id $pkg_name 2>/dev/null`; 1.86 +if (!$?){execute(@pkg_switch_cmd); exit 0;} 1.87 + 1.88 +print "Creating package group.\n"; 1.89 +execute(@pkg_create_group_cmd); 1.90 + 1.91 +print "Creating package user.\n"; 1.92 +execute(@pkg_create_cmd); 1.93 + 1.94 +print "Create home directory for $pkg_name.\n"; 1.95 +execute(@pkg_create_home_cmd); 1.96 + 1.97 +print "Change user.\n"; 1.98 +execute(@pkg_switch_cmd); 1.99 + 1.100 + 1.101 + 1.102 + 1.103 + 1.104 + 1.105 +