开发者

ForkExec and Su problem in Go

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 开发者_如何学Pythonwork 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


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜