Avatar billede tigertool Nybegynder
14. marts 2004 - 16:48 Der er 16 kommentarer og
1 løsning

Eksekvere en fil fra Perl

Jeg er først begyndt at arbejde med Perl for 4 dage siden, men jeg har arbejdet en del med PHP.

Jeg har fundet ud af at man kan eksekvere en fil på følgende måde:
#!/usr/bin/perl
my $return = system ("/etc/init.d/proftpd start");
print $return;

(Jeg eksekvere det på en Debian server via Apache)

Jeg får en pæn retur-værdi med at proftpd er startet - men det er den bare ikke. Kan man ikke gøre dette i Perl? Har det noget at gøre med at det kun er root der kan starte proftpd?
Avatar billede rasmusbg Nybegynder
14. marts 2004 - 16:51 #1
Hvis jeg må komme med et forsigtigt bud, hvad sker der, hvis du skriver

my $return = system ("/etc/init.d/proftpd start &");
Avatar billede tigertool Nybegynder
14. marts 2004 - 17:08 #2
Hmm.. stadig intet resultat
Avatar billede clausjul Nybegynder
15. marts 2004 - 09:34 #3
Hvad med
my $return = exec("/etc/initd/proftpd start");
Avatar billede mfalck Praktikant
15. marts 2004 - 20:43 #4
har du prøvet at køre programmet som root og se om det virker ?
Avatar billede tigertool Nybegynder
16. marts 2004 - 23:05 #5
exec() virker heller ikke.

mfalck > hej igen.. hvad mener du med køre som root? mener du at jeg skal eksekvere det med f.eks.
# perl service.pl

eller?
Avatar billede mfalck Praktikant
17. marts 2004 - 09:10 #6
jeg mener at du skal lave su/logge ind som root, da de fleste scripts som ligger i /etc/init.d (og ikke mindst proftpd) kræver at man binder til en port mindre 1024, hvilket kræver at man er root
Avatar billede tigertool Nybegynder
17. marts 2004 - 09:13 #7
- men Apache kører som www-data. Kan man skifte til root i selve scriptet?
Avatar billede mfalck Praktikant
17. marts 2004 - 09:21 #8
ouch - jeg havde lige overset at det var under apache det skulle køre. Prøv evt lige at teste om det virker hvis du kører det med

perl service.pl
som root
Avatar billede tigertool Nybegynder
17. marts 2004 - 09:22 #9
det virker fint.
Avatar billede mfalck Praktikant
17. marts 2004 - 09:25 #10
er det kun proftp du vil starte eller er det også andre ?
Avatar billede tigertool Nybegynder
17. marts 2004 - 09:27 #11
Det er også andre.. Hvis det er muligt..
Avatar billede mfalck Praktikant
17. marts 2004 - 09:34 #12
der er desværre ikke nogen quick-fix til dette her; du kan evt bruge sudo kommandoen. Prøv at kigge på:

http://www.courtesan.com/sudo/
Avatar billede mfalck Praktikant
17. marts 2004 - 09:34 #13
Der findes et tool der hedder "sudo". Med dette kan man give brugere rettighedder til at køre forskellige jobs. Med programmet "visudo" kan man sætte disse rettighedder.

Følgende eksempel giver brugeren "bruger" rettighed til at udføre alle root-kommandoer uden at skulle taste password. (rettes med "visudo").

# User privilege specification
root    ALL=(ALL) ALL
bruger  ALL=(ALL) NOPASSWD: ALL

Herefter kan root-kommandoer udføres ved at sætte sudo foran f.eks.

sudo adduser ...

(fra http://www.eksperten.dk/spm/202416)
Avatar billede tigertool Nybegynder
17. marts 2004 - 09:53 #14
ok - jeg vil se lidt på det.

Tak
Avatar billede mfalck Praktikant
17. marts 2004 - 09:58 #15
det kræver lidt opsætning på din linux-maskine, men det er ikke umuligt
Avatar billede tigertool Nybegynder
29. maj 2004 - 18:03 #16
mfalck < læg lige et svar. Og undskyld den lange ventetid :( Jeg fandt aldrig en løsning - så jeg droppede det bare.
Avatar billede mfalck Praktikant
29. maj 2004 - 18:04 #17
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester