2010-10-14 5 views
0

J'ai écrit un programme qui utilise ForkExec dans Go.Problème ForkExec et Su dans 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}) 

si vous exécutez cette commande sur votre shell et faites cat /tmp/sC0X3kASz7 vous verrez vos fichiers répertoriés. Toutefois, ForkExec ci-dessus crée uniquement le fichier et n'y écrit rien. Une idée de pourquoi cela arriverait?

go est root.

edit: command := "/bin/ls -lh/>/tmp/sC0X3kASz7" ne fonctionnait pas non plus, juste essayé. il ne crée même pas le fichier/tmp.

Edit2: command := "/bin/bash /tmp/command.txt" et je mets la commande ci-dessus dans ce fichier txt, encore une fois, exécuter à partir de shell, le fichier est créé, à partir ForkExec - Nope :(

EDIT3: solution est ici http://code.google.com/p/go/issues/detail?id=428

Répondre

1

Est-il possible que l'utilisateur joe ne peut pas la liste/pour une raison quelconque? stderr semble aller nulle part

+0

J'essaie avec root aussi, juste remarqué, il ne crée pas le fichier/tmp même sans SU – Devrim

+0

solution est ici http://code.google.com/p/go/issues/detail?id=428 – Devrim