duanjiu3486 2010-10-14 02:21
浏览 21
已采纳

Go中的ForkExec和Su问题

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

  • 写回答

1条回答 默认 最新

  • dongliming2416 2010-10-14 02:26
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?