Revision 7056eb31
Von Moritz Bunkus vor fast 14 Jahren hinzugefügt
scripts/task_server.pl | ||
---|---|---|
14 | 14 |
use Data::Dumper; |
15 | 15 |
use DateTime; |
16 | 16 |
use English qw(-no_match_vars); |
17 |
use POSIX qw(setuid setgid); |
|
17 | 18 |
use SL::Auth; |
18 | 19 |
use SL::DB::BackgroundJob; |
19 | 20 |
use SL::BackgroundJob::ALL; |
... | ... | |
58 | 59 |
die "cannot find locale for user $login" unless $::locale = Locale->new('de'); |
59 | 60 |
} |
60 | 61 |
|
62 |
sub drop_privileges { |
|
63 |
my $user = $::emmvee_conf{task_server}->{run_as}; |
|
64 |
return unless $user; |
|
65 |
|
|
66 |
my ($uid, $gid); |
|
67 |
while (my @details = getpwent()) { |
|
68 |
next unless $details[0] eq $user; |
|
69 |
($uid, $gid) = @details[2, 3]; |
|
70 |
last; |
|
71 |
} |
|
72 |
endpwent(); |
|
73 |
|
|
74 |
if (!$uid) { |
|
75 |
print "Error: Cannot drop privileges to ${user}: user does not exist\n"; |
|
76 |
exit 1; |
|
77 |
} |
|
78 |
|
|
79 |
if (!setgid($gid)) { |
|
80 |
print "Error: Cannot drop group privileges to ${user} (group ID $gid): $!\n"; |
|
81 |
exit 1; |
|
82 |
} |
|
83 |
|
|
84 |
if (!setuid($uid)) { |
|
85 |
print "Error: Cannot drop user privileges to ${user} (user ID $uid): $!\n"; |
|
86 |
exit 1; |
|
87 |
} |
|
88 |
} |
|
89 |
|
|
61 | 90 |
sub gd_preconfig { |
62 | 91 |
my $self = shift; |
63 | 92 |
|
... | ... | |
66 | 95 |
die "Missing section [task_server] in config file" unless $config{task_server}; |
67 | 96 |
die "Missing key 'login' in section [task_server] in config file" unless $config{task_server}->{login}; |
68 | 97 |
|
98 |
drop_privileges(); |
|
69 | 99 |
lxinit(); |
70 | 100 |
|
71 | 101 |
return (); |
Auch abrufbar als: Unified diff
Gruppe und Benutzer beim Starten des Task-Servers ändern, sofern gewünscht
Conflicts: