2 # Create, update or delete one RBAC execution profile
4 require './rbac-lib.pl';
5 $access{'execs'} || &error($text{'execs_ecannot'});
7 &error_setup($text{'exec_err'});
10 $execs = &list_exec_attrs();
12 $exec = $execs->[$in{'idx'}];
13 $logname = $exec->{'name'};
16 $exec = { 'attr' => { } };
17 $logname = $in{'name'};
21 # Just delete this execution profile
22 &delete_exec_attr($exec);
25 # Validate and store inputs
26 $exec->{'name'} = $in{'name'};
27 $exec->{'policy'} = $in{'policy'};
32 $in{'id'} =~ /^\/\S+/ || &error($text{'exec_eid'});
33 $exec->{'id'} = $in{'id'};
35 $exec->{'cmd'} ||= 'cmd';
36 foreach $i ("uid", "gid", "euid", "egid") {
38 delete($exec->{'attr'}->{$i});
41 $in{$i} =~ /\S/ || &error($text{'exec_err'.$i});
42 $exec->{'attr'}->{$i} = $in{$i};
46 # Save or update execution profile
48 &create_exec_attr($exec);
51 &modify_exec_attr($exec);
56 &webmin_log($in{'delete'} ? "delete" : $in{'new'} ? "create" : "modify",
57 "exec", $logname, $exec);
58 &redirect("list_execs.cgi");