Gå til innhold

Kjøre sudo-kommando fra php


Anbefalte innlegg

Jeg skal legge inn to hundre brukere på en server, og syns det ville vært usannsynlig kjedelig hvis jeg manuellt må legge inn alle.

Så jeg tenkte litt at php kanskje kunne gjøre dette for meg, dvs lese brukernavn fra en fil og kjøre sudo-kommando slik:

 

<?php

$users = file('brukernavn.txt');

foreach($users as $user){
$command = "sudo /usr/sbin/netgroupadd $user";
if(exec($command)){
print $user . "<br />\n";
}
}
?>

 

Men uten hell.. og jeg tenker det er fordi php-skript ikke har sjans i havet til å være sudo-bruker.

 

Hvordan kan jeg løse dette?

Lenke til kommentar
Videoannonse
Annonse
Tror nok det er mye enklere hvis du bruker et batch-script i stedet.

6863862[/snapback]

 

kan jeg gjøre et slikt batchskript fra ssh? (og da er denne feilpostet) Og jeg har aldri skrevet batch-skript før, noen som kan peke meg ut i riktig retning? (og aller helst skrive det for meg, siden jeg kommer til å bruke timesvis på å finne ut hvordan og jeg egentlig ikke har særlig lyst å lære meg batch-skripting - bare vil ha en jobb gjort)

 

 

Den som gjør dette for meg skal få sin lønn i himmelen og en offisiell takk i bloggen min (den heldiggrisen ;o))

Lenke til kommentar

Du kan kjøre PHP scriptet fra kommandolinjen da..

Mest sansynlig hvertfall..

 

"php script.php" gjør kanskje susen.

 

Da kjøres php scriptet som den brukeren du er logget inn som.

Eventuelt kan du kjøre det som root, ved å kjøre sudo su først.

 

Da er det nok med /usr/sbin/netgroupadd $user som kommando.

 

Håper noe av dette var nyttig.

Lenke til kommentar
Du kan kjøre PHP scriptet fra kommandolinjen da..

Mest sansynlig hvertfall..

 

"php script.php" gjør kanskje susen.

 

Da kjøres php scriptet som den brukeren du er logget inn som.

Eventuelt kan du kjøre det som root, ved å kjøre sudo su først.

 

Da er det nok med /usr/sbin/netgroupadd $user som kommando.

 

Håper noe av dette var nyttig.

6864888[/snapback]

'

 

 

men hva når jeg ikke har tilgang til sudo su?

Lenke til kommentar

Er det din linuxboks ?

 

Det skal visst være et verktøy som heter lnewusers, som lar deg legge til brukere fra en fil på formatet:

Username:Password:UserID:Group:GECOS:Home:Login

Og en slik fil er jo greit å lage ut fra php.

Så kan du bare kjøre kommandoen med den fila som input, kanskje ?

 

EDIT: Kommandoen må jo kjøres som root, da.

Endret av kakkle
Lenke til kommentar

Hei,

 

Jeg skjønner ikke hvorfor du roter med sudo her ?

 

Hvis du skal bruke sudo, så må brukeren du kjører scriptet som være definert i /etc/sudoers. Det beste er å kjøre scripte med en bruker som har tilgang til slikt, som f.eks root (dette er en typisk root aktivitet). Har du ikke tilgang til root, overlever oppgaven til den personen som har det. Her er noe shell greier :

 

Brukere ligger i filen list, her bare echo'er jeg dem ut

 

myhost:/tmp> for i in `cat list`; do echo $i; done

user1

user2

user3

 

Her kjører jeg netgroupadd commandoen, som feiler siden jeg ikke har noe slikt på maskinen jeg testet fra.

 

myhost:/tmp> for i in `cat list`; do /usr/sbin/netgroupadd $i; done

-bash: /usr/sbin/netgroupadd: No such file or directory

-bash: /usr/sbin/netgroupadd: No such file or directory

-bash: /usr/sbin/netgroupadd: No such file or directory

Lenke til kommentar
Hei,

 

Jeg skjønner ikke hvorfor du roter med sudo her ?

 

Hvis du skal bruke sudo, så må brukeren du kjører scriptet som være definert i /etc/sudoers. Det beste er å kjøre scripte med en bruker som har tilgang til slikt, som f.eks root (dette er en typisk root aktivitet). Har du ikke tilgang til root, overlever oppgaven til den personen som har det. Her er noe shell greier :

 

Brukere ligger i filen list, her bare echo'er jeg dem ut

 

myhost:/tmp> for i in `cat list`; do echo $i; done

user1

user2

user3

 

Her kjører jeg netgroupadd commandoen, som feiler siden jeg ikke har noe slikt på maskinen jeg testet fra.

 

myhost:/tmp> for i in `cat list`; do /usr/sbin/netgroupadd $i; done

-bash: /usr/sbin/netgroupadd: No such file or directory

-bash: /usr/sbin/netgroupadd: No such file or directory

-bash: /usr/sbin/netgroupadd: No such file or directory

6869141[/snapback]

 

Dette er en server på universitetet i Bergen, og jeg har fått sudo-rettigheter til to kommandoer, nemlig legge til brukere og oppdatere gruppen.

 

Men nå viser det seg at it-avdelingen har skrevet og kjørt skriptet for meg, så jeg takker for all hjelp og beklager hvis noen har brukt mye tid på å forsøke å hjelpe meg.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...