probleem met system calls maken

Pagina: 1
Acties:

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
luitjes,

Ik wilde voor m'n pa's PVR150 tv kaart een webbased interface maken zodat ie makkelijk programma's kan opnemen. Technisch gezien zou dit niet veel moeten voorstellen, maar om een of andere rede kan ik de benodigde programma's niet runnen vanaf cgi(c++) of php.
Ik wil namelijk het programma ivtv-tune dat bij de ivtv module zit aanroepen. Helaas lukt dit niet en geeft de apache log ook geen hulp. Als ik bijvoorbeeld system('konsole'); gebruik dan zie ik wel in de logs staan dat hij niet kon connecten met de xserver, dus hij wordt wel gewoon uitgevoerd. Als ik echter system('/usr/bin/ivtv-tune -f200'); aanroep dan komt er niks in de logs te staan en de tv kaart reageert er ook niet op. (terwijl deze dat natuurlijk wel doet als ik hetzelfde commando vanaf de konsole tik)
Hoewel ivtv-tune toch al user-acces had, heb ik het voor de zekerheid nog even ge-chmod naar 777, maar dit maakte, natuurlijk, niks uit.

Op dit punt heb ik gewoon niet de ervaring om nog iets te kunnen verzinnen waarom dit fout zou gaan. Geen logs die me verder helpen en alles lijkt goed ingesteld...

Heeft iemand enig idee waarom dit niet werkt? alvast bedankt!

oprecht vertrouwen wordt nooit geschaad


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Je zou het misschien vanuit een screen sessie kunnen laten uitvoeren, of gewoon je $DISPLAY variabele op :0.0 zetten en ervoor zorgen dat je met xhost instelt wie wel/niet er bij mag.
Dan heb je geen problemen meer met het wel/niet kunnen starten van X applicaties

Blog [Stackoverflow] [LinkedIn]


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
Het probleem is niet dat ik controle wil over m'n display, ivtv-tune is ook commandline only. Dat konsole verhaaltje diende alleen maar ter illustratie van het feit dat de system call wel degelijk werd uitgevoerd

oprecht vertrouwen wordt nooit geschaad


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Dan gok ik erop dat het niet lukt omdat de gebruiker niet voldoende rechten heeft/niet in de goede groep zit, wat je zou kunnen proberen is doormiddel van sudo het uit te laten voeren onder de standaard gebruiker.

Blog [Stackoverflow] [LinkedIn]


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
Zou je dat kunnen toelichten?
ik werk zelf zelden tot nooit met sudo en kan dus niet inschatten wat dit toevoegt aan bv volledige rechten hebben op ivtv-tune.

oprecht vertrouwen wordt nooit geschaad


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Er zijn een aantal groepen aanwezig die van belang kunnen zijn bij dit soort dingen, bijvoorbeeld video en audio, aangezien het niet zo handig is om apache alle rechten te geven tot audio oid. kan je met sudo zeggen dat apache bepaalde commando's als een andere gebruiker mag uitvoeren.

Zo kan je met deze regel ervoor zorgen dat apache het commando foo mag uitvoeren als de user bar
apache    ALL = (bar) /foo

Blog [Stackoverflow] [LinkedIn]


  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Ik heb precies hetzelfde probleem gehad, nooit erachter gekomen waarom het niet wou werken..

Er is echter nog een ander tooltje, ivtv-ptune.. Dat werkt wel prima via php.

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
We komen al verder :)

met sudo ivtv-tune....
krijg ik nu de volgende output in m'n error.log
code:
1
2
3
4
5
6
7
8
Password:

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

terwijl in m'n sudoers file het volgende staat:
code:
1
apache  ALL=(gebruikersnaam) NOPASSWD: /usr/bin/ivtv-tune

oprecht vertrouwen wordt nooit geschaad


  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

automatisch wachtwoord invoeren kun je met de scripting taal: expect heel mooi doen. Want dit wil namelijk niet:
code:
1
echo "wachtwoord" | sudo ivtv-tune

Met expect heb ik het bijvoorbeeld ook voor elkaar gekregen om automatisch commando's uit te voeren via de standaard ssh client, die accepteerd ook geen doorgepipte wachtwoorden.

Script wordt dan ongeveer zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/expect
#
# Het volgende script automatiseerd sudo

# Declareer wat variablen
set passwd  [lindex $argv 0]
set command  [lindex $argv 1]

# Start het commando met sudo
spawn sudo "$command"

# We verwachten een lijn met de tekst "Password:" maar we zetten de vraagteken omdat het script
# hoofdletter gevoelig is. Dus hij triggert nu bij zowel Password als password.
# De ? is dus een wildcard voor 1 letter
expect "?assword:"
send "$passwd\r"

expect eof

De gebruiker waar het onder moet draaien zit er niet bij, maar dat is niet moeilijk erbij in te bouwen. Dit is trouwens niet getest, dus kan dat het niet helemaal werkt. Het moet als volgt gedraaid worden:
code:
1
2
chmod +x jescript.expect
./jescript.expect jewachtwoord "whoami"

[ Voor 18% gewijzigd door eghie op 06-03-2006 22:16 ]


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
Dat werkt helaas niet, gelukkig maar misschien, lijkt me risicovolle bewerking.
Wel een mooi prog, dat expect zeker iets om te onthouden.

Ik heb overigens even een test gerund om er zeker van te zijn dat ik de juiste gebruiker toestemming was aant geven. Dit bleek niet zo te zijn, aangezien system("whoami"); www-data opleverde. Wel vreemd, want ik had eerder verwacht dat sudo gemiept had over het feit dat www-data niet voorkwam in de sudoers file.

oprecht vertrouwen wordt nooit geschaad


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Sudo heeft daar niet om gezeurd omdat je je wachtwoord niet ingevuld hebt, pas na het invoeren van het wachtwoord gaat ie pas uberhaupt kijken of je toegang hebt.

Blog [Stackoverflow] [LinkedIn]


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
Ik heb de sudoers file aangepast, nu geen meldingen meer in het log, maar ook geen effect :(

oprecht vertrouwen wordt nooit geschaad


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

Topicstarter
een mogelijke 'oplossing' blijkt iig te zijn: Apache draaien als user :)

oprecht vertrouwen wordt nooit geschaad

Pagina: 1