2010-10-14 2 views
0

Я написал программу, которая использует ForkExec в Go.Проблема с ForkExec и Su в 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}) 

если выполнить эту команду на вашей оболочки, и сделать cat /tmp/sC0X3kASz7 вы увидите файлы в списке.

Однако ForkExec выше только создает файл и ничего не пишет в нем. Любая идея, почему это произойдет?

go - корень.

Редактировать: command := "/bin/ls -lh/>/tmp/sC0X3kASz7" также не работал, просто попробовал. он даже не создает файл/tmp.

edit2: command := "/bin/bash /tmp/command.txt" и я поставил выше команды в этом текстовом файле, снова выполнить из оболочки, создается файл, из ForkExec - Нету :(

Edit3: решение здесь http://code.google.com/p/go/issues/detail?id=428

ответ

1

Является ли это возможно, что пользователь joe не может перечислить/по какой-либо причине? stderr, похоже, никуда не годится.

+0

Я тоже пытаюсь с корнем, но он не создает файл/tmp даже без su – Devrim

+0

. здесь http://code.google.com/p/go/issues/detail?id=428 – Devrim

Смежные вопросы