tags:

views:

39

answers:

1

I wrote a program that uses ForkExec in Go.

command := "/bin/su -c '/bin/ls -lh / >/tmp/sC0X3kASz7' joe"

pid, err := os.ForkExec(command, []string{}, os.Environ(), "", []*os.File{nil, cmd.Stdout, cmd.Stderr})

if you execute that command on your shell, and do cat /tmp/sC0X3kASz7 you will see your files listed.

however, ForkExec above only creates the file and writes nothing in it. Any idea why that'd happen ?

go is root.

edit : command := "/bin/ls -lh / >/tmp/sC0X3kASz7" didn't work either, just tried. it doesn't even create the /tmp file.

edit2 : command := "/bin/bash /tmp/command.txt" and i put the above command inside this txt file, again, execute from shell, file is created, from ForkExec - nope :(

edit3 : solution is here http://code.google.com/p/go/issues/detail?id=428

A: 

Is it possible that user joe can't list / for some reason? stderr appears to be going nowhere.

Joshua
i'm trying with root as well, just noticed, it doesn't create the /tmp file even without su
Devrim
solution is here http://code.google.com/p/go/issues/detail?id=428
Devrim